Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы к экзамену / ОТВЕТЫ К ЭКЗАМЕНУ2.doc
Скачиваний:
73
Добавлен:
20.06.2014
Размер:
901.63 Кб
Скачать

17. Np-полные задачи.

Есть класс NP-полных языков (задач распознания). В нем содержатся самые трудные языки (зр) из класса NP.

ЯзыкL называется NP-полным, если LNP и любой другой язык LNP сводится к L. Исходя из свойств полиномиальной сводимости, можно сказать, что NP-полные задачи являются самыми трудными задачами класса NP, поскольку полиномиальное решение любой задачи означает полиномиальное решение всех задач класса NP. С другой стороны, если хотя бы одна задача класса NP труднорешаема, то и все NP-полные задачи труднорешаемы. Предположим, что PNP, тогда можно дать следующую уточнённую характеристику класса NP.

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

Лемма 3. Если L1, L2NP, L1NPC и , то L2NPC.

Доказательство. Поскольку L1NPC, то L NP L L1, тогда согласно лемме 2 имеем, что любая задача из NP сводится к L2, т.е. L2NPC.

На уровне задач распознавания эта лемма указывает простой путь доказательства NP-полноты, если нам известна хотя бы одна NP-полная задача.

Для доказательства NP-полноты задачи П необходимо показать: 1) П  NP. 2) Какая либо известная NP-полная задача полиномиально сводится к задаче П.

Наличие класса NP-полных задач доказывает теорема Кука.

18. Теорема Кука. 6 основных np-полных задач.

Наличие класса NP-полных задач доказывает теорема Кука.

Первой NP-полной задачей была задача распознавания из булевой логики, которая называется ВЫПОЛНИМОСТЬ:

Пусть U={u1, u2, …, um} – множество булевых переменных. Под набором значений истинности на множестве U будем понимать функцию . Еслиt(u) = T, то будем говорить, что u принимает значение “истина”, если t(u)=F, то “ложь”. Если u – некоторая переменная из множества U, то u и будем называть литералами изU. Литерал - принимает значение “истина ” относительноt в том и только в том случае, когда переменная u принимает значение “ложь”; литерал u принимает значение “истина ” относительно t в том и только в том случае, когда u принимает значение “истина”.

Дизъюнкцией над U назовём произвольное множество литералов над U, например . Она представляет дизъюнкцию этих литералов и называется выполненной при некотором наборе значений истинности тогда и только тогда, когда при рассматриваемом наборе значений истинности хотя бы один из её членов принимает значение “истина”. В нашем примере дизъюнкция будет выполнена относительноt, если одновременно не окажется, что t(u1)=F, t(u3)=T, t(u8)=F.

Набор C дизъюнкций над U называется выполнимым в том и только в том случае, если найдётся некоторый набор значений истинности на множестве U, такой, что одновременно выполнены все дизъюнкции. Этот набор значений истинности назыв. выполняющим набором значений истинности для C.

Задача ВЫПОЛНИМОСТЬ формулируется следующим образом:

Заданы множество U и набор C дизъюнкции над U.

Вопрос: Существует ли выполняющий набор значений истинности для C?

Например, пусть U={u1, u2}, C=. Эта индивидуальная задача из ВЫП имеет ответ “да”. Выполняющее задание значений истинности определяется так: t(u1)=t(u2)=T. Для индивидуальной задачи, в которой C=, ответ будет “нет”.

Теорема Кука формулируется следующим образом:

Задача выполнимость является NP-полной.