- •Лекция 1 Теория алгоритмов и математическая логика Функция
- •Словарные функции
- •Вычислимые функции и машина Тьюринга
- •Лекция 2 Словарное представление машины Тьюринга
- •Проблема остановки
- •Проблемы пустой ленты и метод сведения
- •Лекция 3 Проблема зацикливания
- •Введение в теорию np-полных задач Задачи, алгоритмы и сложности
- •Трудно решаемые задачи
- •Лекция 4 np – полные задачи
- •Задачи распознавания
- •Примеры массовых задач
- •Лекция 5 Детерминированные машины Тьюринга и класс p
- •Недетерминированное вычисление и класс np
- •Взаимоотношение между классами p и np
- •Лекция 6 Полиномиальная сводимость и np-полные задачи
- •Теорема Кука
- •Лекция 7 Шесть основных np-полных задач.
- •Некоторые методы доказательства np-полноты.
- •Сужение задачи.
- •Локальная замена.
- •Лекция 8
- •Лекция 9
- •Лекция 10 Доказательство результатов о сильной np-полноте
- •Лекция 11
- •Лекция 12 основы математической логики
- •Основные логические законы
- •Основные правила обращения с кванторами
- •Лекция 13
- •Минимизация булевых функций
- •Лекция 14 Стандартные формулы преобразования булевых функций
- •Геометрическая интерпретация
- •Построение простых импликантов
Некоторые методы доказательства np-полноты.
Имеется несколько общих приёмов из большого количества подходов доказательства NP-полноты, которые широко используются. Эти приёмы:
а) Сужение задачи
б) Локальная замена
в) Построение компонент
В лекциях, для краткости, мы будем опускать первый этап доказательства, показывающий принадлежность задачи к классуNP. Кроме того, чаще всего мы не будем показывать полиномиальность преобразования, когда оно достаточно очевидно.
Сужение задачи.
Данный метод является самым простым и широко используемым. Если мы доказываем, что некоторая задача ПNPявляетсяNP-полной, то здесь пытаемся установить, чтоПявляется более общим случаем некоторой известнойNP-полной задачиП’. Сущность метода заключается в том, чтобы указать дополнительное ограничение, которое требуется наложить на индивидуальные задачи изП, чтобы получилась в результате этого сужения задача изП’. При этом не требуется, чтобы возникающая новая задача была точной копией известнойNP-полной задачи. Таким образом, метод сужения можно рассматривать просто как иной взгляд на задачу, а не стандартный способ доказательства.
ПРИМЕРЫ доказательства методом сужения.
Рассмотрим задачу ТОЧНОЕ ПОКРЫТИЕ 3-МНОЖЕСТВАМИ (ТП-3).
Условие:Задано конечное множествоX, такое, что|X|=3q, и семейство Cтрёх элементных подмножеств множестваX.
Вопрос:Верно ли, что семействоCсодержитточное покрытиемножестваX, т.е. подсемействоC’C, что каждый элемент изXсодержится ровно в одном элементе изC.
Доказательство:
Заметим, что любую индивидуальную задачу 3-С можно рассматривать как индивидуальную задачу из ТП-3, просто считая, что Mсостоит из неупорядоченных троек элементов множестваXYZ. При этом 3-сочетания для индивидуальной задачи из 3-С взаимно однозначно соответствуют точным покрытиям соответствующей индивидуальной задачи из ТП-3. Т.о. задача 3-С есть ограниченная версия задачи ТП-3, что доказываетNP-полноту задачи ТП-3.
Задача РЮКЗАК.
Условие:Задано конечное множествоU, веса элементовs(u)N, стоимости элементовv(u)N, общие ограничениеBNна размеры, стоимостьkN.
Вопрос:Существует ли подмножествоUU’, такое, что .
Доказательство:
Если ограничится рассмотрением только таких задач, в которых для всех uUs(u)=v(u) и , то мы придём к задаче РАЗБИЕНИЕ, которая являетсяNP-полной, что доказываетNP-полноту.
Заметим, что описанный метод хорошо работает тогда, когда имеется обширный список известных NP-полных задач. Многие возникающие на практике задачи представляют собой часто усложнённые задачи из списка имеющихсяNP-полных задач.
Локальная замена.
Этот метод состоит в том, что выбирается некоторое характерное свойство известной NP-полной задачи, с помощью него образуется семействоосновных модулей, а соответствующие индивидуальные задачи исследуемой задачи получаются путём единообразной замены каждого основного модуля некоторой другой структурой. Важным моментом является то, что каждая замена приводит только к локальному изменению структуры, причём замены не зависят друг от друга.
Задача РАЗБИЕНИЕ НА ТРЕУГОЛЬНИКИ.
Условие:Задан графG=(V,E)число вершин которого кратно 3, т.е. |V|=3q.
Вопрос: Существует ли такое разбиениеV наqнепересекающихся подмножествV1,V2, …, Vq, каждое из которых содержит ровно 3 элемента, и для каждогоVi={vi1, vi2, vi3} рёбра {vi1, vi2}, {vi2, vi3}, {vi3, vi1} принадлежатE.
Сведём задачу ТП-3 к задаче РАЗБИЕНИЕ НА ТРЕУГОЛЬНИКИ.
Пусть множество X(|X|=3q) и семействоCего трёхэлементных подмножеств образуют условие произвольной индивидуальной задачи из ТП-3. Построим графG=(V,E), такой, что|V|=3qи для него существует искомое разбиение тогда и только тогда, когда семействоCсодержит точное покрытие множества.
Основными модулями рассматриваемой индивидуальной задачи из ТП-3 будут три трёхэлементные подмножества изC. Операция локальной замены превращает каждое элементарное подмножествоCi=(xi, yi, zi)C в наборEi, состоящий из 18 рёбер. Это преобразование можно изобразить следующим образом:
Таким образом, формируемый граф Gбудет таким:
Заметим, что по построению только вершины из множества X могут быть инцидентны более чем одному множествуEi. Кроме того, количество вершин|V|=3q+9|С|=3q’, где С– семейство трёхэлементных подмножеств.
Индивидуальную задачу РАЗБИЕНИЕ НА ТРЕУГОЛЬНИКИ можно построить за полиномиальное время из задачи ТП-3. Если c1, c2, …, cq– трёхэлементные подмножества изC, которые образуют ТП-3, то соответствующее разбиениеVна треугольникиV1, V2, …, Vq, строится следующим образом. Еслиci=(xi, yi, zi)– элемент точного покрытия, то из множестваEi выбираются элементы:(xi, ai[1], ai[2]) (yi, ai[4], ai[5]) (zi, ai[7], ai[8])(ai[3], ai[6], ai[9]).Если же элементci=xi, yi, ziне входит в точное покрытие, то из множестваEiвыбираются тройки(ai[1], ai[2], ai[3]) (ai[4], ai[5], ai[6]) (ai[7], ai[8], ai[9]).Такой выбор элементов обеспечивает, что каждый элемент из множестваVсодержится ровно в одном трёхвершинном подмножестве рассматриваемого разбиения.
Обратно, если V=V1V2V3 … Vq’– произвольное разбиение графаGна треугольники, то соответствующее точное покрытие множестваXполучается, если выбирать те подмножестваci, для которых (ai[3], ai[6], ai[9])=Vjпри некоторомj, 1 ≤j≤q’.