- •1. Множества и бинарные отношения
- •Множества
- •Определения и примеры
- •1.1.1 Множество
- •Операции над множествами
- •Элементы комбинаторики
- •Бинарные отношения
- •Определения и примеры
- •2.1.2 Отображения
- •Операции над отношениями
- •Выполнение операций над отношениями
- •Свойства отношений
- •Эквивалентность и толерантность
- •2.4.1 Эквивалентность
- •2.4.3 Толерантность
- •2.4.6 Задача о наименьшем покрытии (ЗНП)
- •Алгоритм решения ЗНР
- •Отношения порядка
- •Строгий порядок
- •Свойства строгого порядка
- •Некоторые свойства дерева
- •Анализ отношений порядка
- •2.5.8 Решетки
- •2.5.10 Решетка
- •2.5.11 Булева решетка
- •Нормированные булевы решетки
- •Модели нормированной булевой решетки
- •Булевы функции (БФ)
- •Определения и примеры
- •Равенство булевых функций
- •3.3.1 СДНФ
- •3.3.3 СКНФ
- •3.3.5 Представление формул в СДНФ и СКНФ
- •Минимизация булевых функций
- •3.4.1 Импликанта
- •Полные системы булевых функций
- •2. Математическая логика
- •Логика высказываний
- •Основные понятия
- •4.1.7 Логическое следствие
- •4.1.8 Теоремы о логическом следствии
- •Логика предикатов
- •5.0.13 Связанные и свободные переменные
- •Предваренная нормальная форма
- •Стандартная нормальная форма
- •Подстановки и унификация
- •Метод резолюций для логики первого порядка
- •Исчисление высказываний
- •3. Графы
- •Определения и примеры
- •Определения графа
- •Части графа
- •Изоморфизм графов
- •Задание графов с помощью матриц
- •Матрица инциденций
- •Матрица соседства вершин
- •Матрица смежности
- •Типы графов
- •Обыкновенные графы
- •Графы Бержа
- •Помеченные и взвешенные графы
- •Другие способы задания графа
- •Связность графов
- •Маршруты, цепи, циклы
- •Число маршрутов
- •Компоненты связности
- •Нахождение компонент и бикомпонент
- •Кратчайшие цепи
- •Алгоритм Форда
- •Алгоритм Дейкстры
- •Обходы графа
- •Поиск в глубину на графе
- •Поиск в ширину на графе
- •Эйлеровы цепи и циклы
- •Эйлеровы пути
- •Гамильтоновы цепи и циклы
- •Цикломатика графов
- •Цикломатическое число
- •Деревья
- •Свойства дерева
- •Каркасы
- •Алгоритм нахождения каркаса графа.
- •Кратчайший каркас графа.
- •Алгоритм Прима.
- •Теорема о хорде каркаса.
- •Число каркасов графа.
- •Разрезы
- •Пространства суграфов
- •Пространство циклов
- •Пространство разрезов.
- •Потоки в сетях
- •Задача о максимальном потоке
- •Постановка задачи
- •Экстремальные части графа
- •Основные понятия
- •Покрытия
- •Задача о наименьшем покрытии
- •Паросочетания
- •Раскраска вершин графа
- •Хроматическое число
- •Оценки хроматического числа
- •Точные алгоритмы раскраски вершин
78 |
Глава 2. Бинарные отношения |
|
|
Рассмотрим сначала задачу о наименьшем разбиении, а затем применим алгоритм для ЗНП.
2.4.7Алгоритм решения ЗНР
Вэтом алгоритме используется метод поиска в глубину по дереву решений.
Предварительно переставим столбцы таким образом, чтобы первые столбцы матрицы содержали 1 в первых строках (образуется "блок” из таких столбцов). k-й блок состоит из таких множеств семейства A, в которых содержится элемент k, но отсутствуют элементы с меньшими номерами
a1; : : : ; ak¡1.
|
|
A11A21 ¢ ¢ ¢ Al1 |
|
Al2+1 ¢ ¢ ¢ |
|
¢ ¢ ¢ |
|
¢ ¢ ¢ |
a1 |
|
1 1 ¢ ¢ ¢ 1 |
|
0 ¢ ¢ ¢ 0 |
|
0 ¢ ¢ ¢ 0 |
|
|
a2 |
|
¢ ¢ ¢ |
|
11 ¢ ¢ ¢ 1 |
|
0 ¢ ¢ ¢ 0 |
|
¢ ¢ ¢ |
a3 |
|
0 или 1 |
|
0 или 1 |
|
11 ¢ ¢ ¢ 1 |
|
|
. |
|
|
|
|
|
|
|
|
. |
|
0 или 1 |
|
0 или 1 |
|
0 или 1 |
|
|
. |
|
|
|
|
|
|||
an |
|
0 или 1 |
|
0 или 1 |
|
0 или 1 |
|
|
|
|
|
|
|
|
|
||
cj |
|
c1 c2 ¢ ¢ ¢ cl |
|
cl+1 ¢ ¢ ¢ |
|
¢ ¢ ¢ |
|
¢ ¢ ¢ |
Множества в блоке располагаются в порядке возрастания их весов и перенумероваваются так, что Aj соответствует j- му столбцу. Верхний индекс в Apj указывает номер блока.
Введем следующие обозначения.
^
B – текущее наилучшее решение, z^ – его вес; B – текущее семейство A0, z – его вес;
E µ A – подмножество тех элементов из A, которые покрываются подмножествами из B;
p – номер блока;
Apj – j-е подмножество, принадлежащее блоку p.
Алгоритм.
2.4. Эквивалентность и толерантность |
79 |
|
|
|
|
Шаг 1. Инициализация. Построить исходную таблицу и начать с пустого решения.
B := ?; E := ?; z := 0; z^; = 1;
Шаг 2. Расширение решения.
Выбрать блок p = min[ijai 62E]
Пометить первое подмножество блока p (имеющего наименьший вес).
Шаг 3. Начиная с помеченной позиции блока, перебираем его подмножества Apj в порядке возрастания j.
1) Если нашли Apj такое, что
Apj \ E = ? и z + cj < z^
(где cj – вес множества Apj )
то на Шаг 5 иначе (т.е. если блок исчерпан или выбрано подмножество
Apj такое, что z + cj ¸ z^) на Шаг 4.
Шаг 4. Шаг возврата.
B не может привести к лучшему решению.
Если B = ? (т.е. блок p исчерпан), то алгоритм заканчивает
^
работу; B – оптимальное решение;
стоп
иначе удалить из решения B последнее подмножество, включенное в B; пусть это последнее подмножество есть Alk; положить p = l;
если есть Alk+1, то удалить предшествующую метку над Alk;
пометить Alk+1; на Шаг 3.
иначе на Шаг 4.
Шаг 5. Обновление решения и проверка.
B := B [ fApj g; E := E [ Apj ; z := z + cj;
Если найдено лучшее решение E = A, то положить
^
B := B; z^ := z;
80 |
Глава 2. Бинарные отношения |
|
|
на Шаг 4. иначе на Шаг 2.
Пример 2.24.
A= fa; b; c; d; eg;
A= ffa; b; cg [5], fa; cg [3], fc; eg [5], fb; e; dg [3], fc; dg [3], fa; dg [2], fbg [3]g.
В квадратных скобках указаны веса соответствующих подмножеств.
|
A1 |
A1 |
A1 |
|
A2 |
A2 |
|
A3 |
A3 |
|
1 |
2 |
3 |
|
4 |
5 |
|
6 |
7 |
a |
1 |
1 |
1 |
|
0 |
0 |
|
0 |
0 |
b |
0 |
0 |
1 |
|
1 |
1 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
c |
0 |
1 |
1 |
|
0 |
0 |
|
1 |
1 |
d |
1 |
0 |
0 |
|
1 |
0 |
|
1 |
0 |
e |
0 |
0 |
0 |
|
1 |
0 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
cj |
2 |
3 |
5 |
|
3 |
3 |
|
3 |
5 |
Итерации.
1. p = 1; B = A11; E = fa; dg; z = 2; E =6 A; на Шаг 2.
2. p = 2; A25 \E = ?; 2+3 < 1 ; B = A11 [A25; E = fa; b; dg; z = 5;
E 6= A; на Шаг 2.
3. p = 3; A73 \ E = ?; 5 + 5 < 1; z = 10; B = A11 [ A52 [ A73; E = |
|||
^ |
1 |
2 |
3 |
fa; b; c; d; eg; E = A; B = fA1 |
; A5 |
; A7g; z^ = 10; |
Возврат.
4. p = 1; B := A12; E = fa; cg; z = 3 < 10; E 6= A; на Шаг 2.
5. p = 2; A24 \ E = ?; B = A12 [ A24; E = fa; b; c; d; eg; z = 3 + 3 = 6 < 10;
^ |
1 |
2 |
E = A; B = fA2 |
; A4g; z^ = 6; |
Возврат
6. p = 1; B := A13; E = fa; b; cg; z = 5 < 6; E 6= A; на Шаг 2.
7. Больше не находится Alj, такого, что Alj \ E = ?. На Шаг 4.