Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Полиномиальная сводимость. NP-полные языки и задачи.⇐ ПредыдущаяСтр 22 из 22
Какова связь между определёнными выше классами задач P и NP? Очевидно, что Теорема 4.1. Если Поэтому все утверждения в теории NP -полных задач формулируются, исходя из предположения, что Определение. Язык 1) Существует ДМТ-программа M, вычисляющая f с временной сложностью, ограниченной полиномом, т.е. 2) Для любого Пусть Например, задача существования гамильтонова цикла полиномиально сводится к задаче коммивояжера. Для сведения задачи достаточно положить Рассмотрим свойства полиномиальной сводимости. Лемма 1. Если Доказательство. Пусть
Программа распознавания языка Оценим временную сложность этой программы. Так как Лемма 2. Если Доказательство аналогично, выполнить самостоятельно. Определение. Язык L называется NP -полным, если Аналогично определяются NP -полные задачи. Лемма 3. Если Доказательство. Так как Лемма 3 даёт рецепт доказательства NP -полноты задачи P, для этого нужно показать, что: 1) 2) NP -полная задача Для того чтобы доказывать NP -полноту с помощью полиномиальной сводимости нужно доказать существование хотя бы одной NP -полной задачи. Это сделал в 1971 году С. Кук, а такой задачей явилась задача “выполнимость”. Задача “выполнимость”. Задано множество логических переменных Эквивалентная формулировка данной задачи: “Является ли выполнимой формула, равная конъюнкции всех элементарных дизъюнкций множества С над множеством высказывательных переменных X? ” Теорема 4.2.(Кука) Задача “выполнимость” является NP -полной. Рассмотрим основную идею доказательства теоремы. Покажем, что произвольную задачу P из NP можно свести к задаче выполнимость за полиномиальное время. Так как Пусть Обозначим: t – момент времени (номер шага программы) k – номер состояния машины j – номер просматриваемой ячейки l – номер символа алфавита G При построении дизъюнкций будут использоваться предикаты:
При фиксированных значениях предметных переменных они являются высказываниями и могут трактоваться как высказывательные переменные, принимающие различные значения в зависимости от значений параметров. Выпишем теперь требуемые группы дизъюнкций и оценим количество дизъюнкций в каждой группе. 1. Группа дизъюнкций a) b) c) d) e) Общее число этих дизъюнкций равно 2. Группа a) b) Число таких дизъюнкций равно 3. Группа a) b) Количество дизъюнкций группы равно 4. Группа a) b) Количество дизъюнкций группы равно 5. Группа a) b) c) Общее число этих дизъюнкций равно Кроме того, если в момент t ячейка j не просматривается, то её содержимое не меняется. Это описывается высказыванием d) Количество дизъюнкций d) равно 6. Группа Таким образом, если Осталось показать, что для любого фиксированного языка L индивидуальная задача “выполнимость”
О технологии доказательства сводимости. Пусть надо доказать, что задача P1 полиномиально сводится к задаче P2. Для этого надо показать, как по любой индивидуальной задаче I 1 Î D (P1) сформулировать соответствующую задачу I 2 Î D (P2). Каждая индивидуальная задача однозначно идентифицируется своим набором входных параметров (исходных данных). Значит, надо указать алгоритм (полиномиальный!) получения параметров задачи I 2 из параметров задачи I 1. Выше это было сделано для задач коммивояжёра и построения гамильтонова цикла. По результатам теоремы С. Кука с помощью данной технологии была доказана NP -полнота 6 известных задач. В дальнейшем список NP -полных задач расширился до нескольких сотен. Зачем нужно доказывать NP -полноту? Прежде всего, для того, чтобы не тратить понапрасну силы на поиски несуществующего эффективного алгоритма решения таких задач. Кроме того, теория NP -полноты часто помогает найти хороший приближённый алгоритм. Шесть основных NP-полных задач. Хотя теоретически любую из известных NP -полных задач можно наравне с другими выбрать для доказательства NP -полноты новой задачи, на практике оказывается, что некоторые задачи подходят для этой цели гораздо лучше других. Следующие шесть задач входят в число тех, которые используются наиболее часто и для начинающего они могут служить «ядром» списка известных NP -полных задач.
Для любознательных приводим диаграмму доказательств NP -полноты этих задач. Полные доказательства их сводимости, как и прочие материалы по теории NP -полноты и теории алгоритмов можно найти в [1].
Диаграмма последовательности сведения основных NP-полных задач
|