Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория NP-полноты.doc
Скачиваний:
46
Добавлен:
10.09.2019
Размер:
387 Кб
Скачать
☆

Полиномиальная сводимость и np-полные задачи

Наиболее убедительным аргументом в пользу того, что классы P и NP различны, является существование так называемых NP-полных задач. NP-полные языки являются самыми «трудными» в классе NP. При этом трудность языков можно сравнивать, сводя один язык к другому.

Полиномиальная сводимость

Определение. Язык L1 за полиномиальное время к языку L2 (обозначение: L1≤pL2 или L1 L2), если существует такая функция f : {0, 1}*, вычислимая за полиномиальное время, что для любого слова х{0, 1}* : xL1f(x)L2 (х является индивидуальной задачей L1 тогда и только тогда, когда f(x) является индивидуальной задачей L2).

Функцию f называют сводящей функцией, а полиномиальный алгоритм Af, вычисляющий функцию f, – сводящим алгоритмом.

xL1f(x)L2

xL1f(x)L2

Лемма 1. Если язык L1{0, 1}* сводится за полиномиальное время к языку L2{0, 1}* и L2 принадлежит классу P, то L1 также принадлежит классу Р (если L1 L2 и L2P, то L1Р).

Доказательство

1) L1 L2, следовательно, существует полиномиальный сводящий алгоритм А;

2) L2P, следовательно, существует полиномиальный алгоритм распознавания языка L2.

Возьмем произвольное слово хL1 и с помощью алгоритма А сведем его к слову А(х)L2, а затем определим, принимается или отвергается слово А(х) полиномиальным алгоритмом . Из определения полиномиальной сводимости следует, что слово А(х) допускается алгоритмом тогда и только тогда, когда слово x допускается алгоритмом, распознающим язык L1. Таким образом, последовательное выполнение алгоритмов А и дает алгоритм распознавания языка L1, и этот алгоритм полиномиален (сумма полиномов есть полином), т. е. L1P.

Лемма 2. Отношение полиномиальной сводимости транзитивно (если L1 L2 и L2 L3, то L1 L3).

Определение. Языки L1 и L2 полиномиально эквивалентны, если сводятся друг к другу.

Понятие полиномиальной сводимости позволяет произвести классификацию языков по степени их «трудности». Запись L1 L2 можно интерпретировать так: сложность языка L2 не более чем полиномиально превосходит сложность языка L1. Наиболее трудные в этом смысле – NP-полные языки.

Определение. Язык L{0, 1}* называется NP-полным:

1) если LNP;

2) L’ L для любого языка L’NP.

Обозначение класса NP-полных языков – NPC.

Лемма 3. Если языки L1 и L2 принадлежат классу NP, L1 – это NP-полный язык и L1 полиномиально сводится к L2, то L2 также NP-полный язык (если L1NP, L2NP, L1NPC и L1 L2, то L2NPС).

Доказательство. Так как L2NP, то, согласно определению, достаточно доказать, что любой язык L’NP полиномиально сводится к языку L2 (L’ L2).

По условию леммы L1NPC, следовательно, любой язык L’NP сводится к языку L1 (L’NP: L’ L1), а язык L1 сводится к языку L2 (по условию леммы L1 L2). По свойству транзитивности полиномиальной сводимости (лемма 2) L’NP: L’ L1, L1 L2, следовательно, L’NР: L’ L2, т.е язык L2NPC.

Основное свойство NP-полных языков: если некоторый NP-полный язык разрешим за полиномиальное время, то классы P и NP эквивалентны (P=NP), т. е. если в классе NPС существует язык разрешимый за полиномиальное время, то все языки класса NPC разрешимы за полиномиальное время.

Доказательство. Пусть L – NP-полный язык, который одновременно оказался разрешимым за полиномиальное время (LNPC и LP). По определению NP-полного языка справедливо утверждение: любой язык L’, проверяемый за полиномиальное время, полиномиально сводится к языку L (L’NP: L’ L). Таким образом, L’NP: L’ L и LP, значит, по лемме 1 следует, что L’NP разрешима за полиномиальное время (L’NP: L’P), т. е. классы P и NP совпадают.