- •Содержание
- •1 Элементы теории множеств. Комбинаторика. 5
- •Математическая логика: Булева аллгебра 88
- •Теория алгоритмов 129
- •Теория графов 162
- •Математическая логика: Исчисления высказываний и предикатов 207
- •Элементы теории множеств. Комбинаторика.
- •Введение
- •Примеры задач.
- •Задача о расположении конвертов
- •Задача о Ханойской башне
- •Базовые обозначения
- •Правило суммы и правило произведения
- •Основы теории множеств
- •Понятие множества
- •Парадокс Рассела
- •Подмножества
- •Операции над множествами
- •Диаграммы Эйлера-Венна
- •Прямое произведение множеств
- •Бинарные отношения и функции
- •Бинарные отношения
- •Функции
- •Специальные бинарные отношения: Отношение эквивалентности
- •Специальные бинарные отношения: Отношение порядка
- •Лексикографический порядок
- •Выборки с повторениями и без повторений
- •Размещения и сочетания
- •Треугольник Паскаля
- •Связь сочетаний и (0,1)-векторов
- •Перебор сочетаний
- •Бином Ньютона
- •Мультимножества
- •Связь мультимножеств и (0,1)-векторов
- •Полином Ньютона
- •Разбиения множеств.
- •Приложение: программа перебора сочетаний
- •Перестановки
- •Понятие перестановки
- •Группа перестановок
- •Циклы перестановки
- •Тип перестановки
- •Разложения и разбиения натуральных чисел
- •Разложения натуральных чисел
- •Разбиения натуральных чисел
- •Принцип включения-исключения
- •Принцип включения-исключения
- •Задача о беспорядках
- •Мощность объединения множеств
- •Число целочисленных решений системы неравенств
- •Математическая логика: Булева аллгебра
- •Булева алгебра. Функции алгебры логики.
- •Булевы функции
- •Формулы
- •Основные тождества
- •Разложение функции по переменным
- •Дизъюнктивная и конъюнктивная нормальные формы
- •Полином Жегалкина
- •1 ⊕ X1 ⊕ x2x3 - полином Жегалкина.
- •Полнота системы функций
- •Функции, сохраняющие ноль
- •Функции, сохраняющие единицу
- •Двойственность
- •Монотонность
- •Линейность
- •Критерий полноты системы функций
- •Теория алгоритмов
- •Машины Тьюринга
- •Понятие алгоритма
- •Машина Тьюринга
- •Способы записи машины Тьюринга
- •Стандартные конфигурации
- •Вычислимые функции
- •Алгоритмически неразрешимые задачи
- •Сложность алгоритма
- •Полиномиальная сводимость
- •Классы задач в форме распознавания свойств
- •4 Теория графов
- •4.1 Определения графа
- •Общее определение
- •Виды графов
- •Обыкновенный граф
- •Примеры графов
- •Графы Бержа
- •4.2 Изоморфизм графов
- •4.2.1 Инварианты графа
- •Операции
- •Основные операции над графами
- •Подграфы
- •Дополнение графа
- •Маршруты и связность
- •Деревья
- •Матрицы, связанные с графом
- •Матрица смежности
- •Матрица инцидентности
- •Список ребер
- •Обходы графов
- •Эйлеров цикл
- •Гамильтонов цикл
- •Задачи и алгоритмы
- •Остов минимального веса
- •Алгоритм 4.8.1 (Алгоритм Краскала).
- •Задача коммивояжера
- •Задача о клике
- •Задача о вершинном покрытии
- •Задача о гамильтоновом цикле
- •Снова задача коммивояжера
- •Алгоритм дерева
- •Математическая логика: Исчисления высказываний и предикатов
- •Исчисление высказываний
- •Пример задачи логики высказываний
- •Формальные теории
- •Формальная теория исчисление высказываний
- •Теоремы исчисления высказываний
- •Теорема о полноте исчисления высказываний
- •Независимость аксиом исчисления высказываний
- •Исчисление предикатов
- •Пример задачи логики предикатов
- •Формальная теория исчисление предикатов
- •Алфавит.
- •Формулы.
- •Аксиомы.
- •Правила вывода.
- •Интерпретация
- •Литература
Полиномиальная сводимость
Можно столкнуться с разными случаями сравнения алгоритмов по сложности. Если один из алгоритмов имеет полиномиальную слож- ность, а другой требует, например, экспоненциального количества шагов (памяти), как показано выше, использование экспоненциальных алгоритмов может иметь смысл только для небольших входных параметров задачи. На больших данных любой полиномиальный алгоритм будет лучше любого экспоненциального.
В случаях, когда для двух алгоритмов, решающих одну задачу, известна полиномиальная оценка сложности, имеет смысл находить
наиболее точно прибиженное к величине сложности значение полиномов и сравнивать их сначала по максимальной степени, а если она окажется одинаковой, по коэффициенту перед максимальной степенью.
Принципиально иная ситуация имеет место в том случае, если вопрос о существовании полиномиального алгоритма решения некоторой задачи остается открытым. Тогда в первую очередь нужно выяснить ответ на этот вопрос и потом предпринимать действия по дальней- шей оптимизации. Если ответ положительный, можно пытаться искать наилучший из полиномиальных алгоритмов решения. Если полиномиаль- ного алгоритма решения задачи не существует, имеет смысл рассмотреть возможность нахождения "быстрого" алгоритма приближенного решения задачи.
При выяснении существования для задачи полиномиального алгоритма, все оценки можно делать с точностью до полиномиальных преобразований. Например, перед решением задачу можно преобразовать в другую форму, если затраты на этот процесс не превысят полиномиальное время, поскольку это не скажется на выводе о существовании полиномиального алгоритма для исходной задачи.
Также при такой постановке вопроса не важен и тип машины, на которой будет выполняться алгоритм. Таблица на рисунке 28 показывает, какова сложность моделирования машины Тьюринга одного типа с помощью машины другого типа. Рассматриваются машины Тьюринга с одной леной, с k лентами и машины с произвольным доступом к памяти.
-
Моделируемая
МТ A
Моделирующая МТ B
MT 1
MT k
MT с п. д. к п.
MT с 1 лентой
-
O(T (n))
O(T (n) log T (n))
MT с k лентами
O(T 2(n))
-
O(T (n) log T (n))
MT с п. д. к памяти
O(T 3(n))
O(T 3(n))
-
Рисунок 28: Время моделирования машин Тьюринга.
В любом случае понядок сложности моделирования не больше куба от сложности алгоритма исходной машины. Из этого следует, что, если существует полиномиальный алгоритм решения задачи на машине
Тьюринга одного типа, то полиномиальные алгоритмы для этой задачи существуют для любого типа машин Тьюринга.
Помочь доказать существование или отсутствие полиномиального ал- горитма решения некоторой задачи может понятие полиномиальной сво- димости.
Определение 3.2.4 . Пусть имеются две массовые задачи S1 и S2. Пусть A1 - произвольный алгоритм решения задачи S1. Пусть существуют два алгоритма полиномиальной сложности P21 и P12: P21 получает на входе описание индивидуальной задачи типа S2 и преобразует его в описание некоторой индивидуальной задачи типа S1; P12 получает на вход решение задачи типа S1 и преобразует его в решение задачи типа S2.
Если алгоритмы P21 и P12 таковы, что после преобразования описания индивидуальной задачи S2 алгоритмом P21 в описания индивидуальной задачи S1, решения полученной задачи S1 и преобразования полученного решения с помощью P12, мы получим решение исходной индивидуальной задачи S2, говорят, что задача S2
полиномиально сводится к задаче S1, и пишут S2 ∝ S1 (рис. 29).
Описание
S2
Описание
21 S1
Решение
S1
Решение
12 S2
Рисунок 29: Полиномиальная сводимость.
Иными словами, S2 ∝ S1, если связка алгоритмов A2 = P12A1P21
решает индивидуальную задачу s типа S2:
P12(A1(P21(условия s))) = ответ на s.
Пусть S2 ∝ S1. Тогда можно сказать, что задача S1 в некотором смысле не легче, чем задача S2. Действительно, если извстно, что у задачи S1 существует решающий ее полиномиальный алгоритм Ap, то, очевидно, алгоритм P12ApP21, решающий задачу S2, тоже будет
полиномиальным. С другой стороны, если известно, что для задачи S2 не существует полиномиального решения, то такого решения не может иметь и задача S1.
Если задача S1 не может быть решена за полиномиалное время, это
не позволяет сделать выводов о сложности задачи S2. Также, если за полиномиальное время можно решить задачу S2, это не позволяет сказать, на сколько эффективно может быть решена задача S1.
Определение 3.2.5 . Если S2 ∝ S1 и S1 ∝ S2, говорят, что задачи S1
и S2 полиномиально эквивалентны.
Рассмотрим пример полиномиальной сводимости.
Задача 3.2.1 . Задача о выполнимости: Дано логическое выражение в конъюнктивной нормальной форме. Является ли функция, реализуемая этой формулой, выполнимой?
Другими словами, дана булева функция f (x1, x2, ..., xn), определенная своей КНФ: (D1) ∧ (D2) ∧ · · · ∧ (Dk). Требуется ответить на вопрос,
существует ли такой набор значений логических переменных a1, a2, ...,
an, что f (a1, a2, ..., an) = 1.
Замечание 3.2.2 . Подробнее о конъюнктивных нормальных формах булевых функций написано в параграфе 2.1.5.
Пример 3.2.4 . Дана конъюнктивная нормальная форма
f (x1, x2, x3, x4, x5) = (x1 ∨ x2) ∧ (x3 ∨ x5 ∨ x2) ∧ x4.
Можно убедиться, что f (0, 0, 0, 1, 1) = 1. Значит ответ на задачу - "Да".
Замечание 3.2.3 . Очевидно, существует всего 2n различных наборов аргументов для f (x1, x2, ..., xn). Значит для решения задачи о выполнимости достаточно просто перебрать все варианты. То есть, вопрос о разрешимости тут не стоит, но остается вопрос о возможности эффективного решения задачи.
Задача 3.2.2 . Задача о k-выполнимости - это задача о выполнимости, в условиях которой в каждом дизъюнкте не более k литералов.
Теорема 3.2.1 . Задача о выполнимости полиномиально сводится к задаче о 3-выполнимости: ВЫП ∝ 3-ВЫП.
Доказательство. Пусть E(x1, x2, ..., xn) = (D1) ∧ (D2) ∧ ... ∧ (Dm)
логическое выражение в конъюнктивной нормальной форме. Пусть
Di = α1 ∨ α2 ∨ ... ∨ αk - один из дизъюнктов в E, состоящий не менее,
чем из 4 литералов. Заменим в E дизъюнкт Di на выражение
Dt
i = (α1 ∨ α2 ∨ z) ∧ (α3 ∨ .... ∨ αk ∨ z),
где z - новая переменная. Обозначим результат E .
Покажем, что E(x1, x2, ..., xn) выполнима тогда и только тогда, когда
выполнима
E (x1, x2, ..., xn, z). Пусть a1, a2, ..., an - набор аргументов,
на котором E принимает значение 1. Тогда все дизъюнкты формы
E принимают на этом наборе аргументов значение 1. В частности
a1,a2,...,an
Di(a1, a2, ..., an) = 1. Тогда существует i ∈ {1, ..., k}: αi
= 1.
Выберем значение для z следующим образом
( 0, i = 1 или i = 2;
b =
1, i ∈ {3, ..., k}.
Тогда E (a1, a2, ..., an, b) = 1, то есть E
выполнима.
Пусть теперь E невыполнима: при любых занчениях x1, ..., xn, E(x1, x2, ..., xn) = 0. Рассмотрим некоторый произвольный набор значений a1, ..., an. Поскольку E(a1, a2, ..., an) = 0, то один из
дизъюнктов формы равен нулю. Если Dj (a1, a2, ..., an) = 0 и j /= i, то
и E (a1, a2, ..., an, z) = 0 для любого z.
Пусть нулю равен именно i-тый дизъюнкт. Следовательно равны нулю все литералы α1, α2, ..., αk. Если выбрать значение z = 1, то (α3 ∨ .... ∨ αk ∨ 1) = 0. Если же выбрать значение z = 0, то (α1 ∨ α2 ∨ 0) = 0. В
i
любом случае Dt = 0. Следовательно Eтакже невыполнима.
Итак, мы заменили исходную конъюнктивную нормальную форму E
на эквивалентную ей в плане выполнимости конъюнктивную нормальную
форму E , причем один дизъюнкт Di с k > 3 литералами был заменен на два новых дизъюнкта, один из которых содержит три литерала, а другой
k − 1 литерал. Повторяя описанный процесс нужное число раз можно
прийти к конъюнктивной нормальной форме, в которой не останется
дизъюнктов с более чем тремя литералами.
Сложность: Всего нам придется провести не более n − 3 циклов умень-
шения длины для каждого дизъюнкта. То есть сложность алгоритма имеет порядок n · m - полиномиальна относительно размера входных
данных.
D
Следствие 3.2.2 . Задача о выполнимости полиномиально эквивалентна задаче о 3-выполнимости.