
- •1. Словарные функции.
- •Словарные функции.
- •2. Вычислимые функции. Мт.
- •3. Словарное предствление мт.
- •4. Массовые алгоритмические проблемы. Разрешимые и перечислимые множества.
- •5. Теорема Поста.
- •6. Проблема остановки. Теорема Тьюринга.
- •7. Проблема пустой ленты. Проблема зацикливания.
- •Проблема зацикливания.
- •8. Понятие массовой и индивидуальной задачи.
- •9. Понятие полиномиального алгоритма и труднорешаемой задачи
- •10. Понятие схемы кодирования.
- •11. Задачи распознавания. Переход от оптимизационной задачи к задаче распознавания
- •Np – полные задачи.
- •Задачи разновидности языка и кодирование.
- •Примеры. Массовая задача и изоморфизм подграфу.
- •12. Язык. Связь между задачами распознавания и языками. Задачи разновидности языка и кодирование.
- •Примеры. Массовая задача и изоморфизм подграфу.
- •13. Детерминированные мт и класс p.
- •14. Недетерминированное вычисление и класс np.
- •15. Взаимоотношения между класами p и np.
- •16. Полиномиальная сводимость.
- •17. Np-полные задачи.
- •18. Теорема Кука. 6 основных np-полных задач.
- •Доказательство результатов об np-полноте.
- •Шесть основных np-полных задач.
- •19. Методы док-ва np-полноты. Метод сужения. Некоторые методы доказательства np-полноты.
- •Сужение задачи.
- •20. Методы доказательства np-полноты. Метод локальной замены Некоторые методы доказательства np-полноты.
- •Локальная замена.
- •21. Методы доказательства np-полноты. Метод построения компонент. Некоторые методы доказательства np-полноты.
- •Метод построения компонент.
- •22. Анализ подзадач np-полной задачи. Применение теории np-полноты для анализа задач.
- •Анализ подзадач.
- •23. Сильная np-полнота.
- •24. Псевдополиномиальные алгоритмы.
- •25. Именная форма. Высказывания. Операции над высказываниями.
- •26. Основные логические законы. Логические тождества.
- •27. Правила обращения с кванторами.
- •28. Техника доказательств.
- •29. Операции над множествами и одноместными предикатами.
- •30. Булевы функции.
17. Np-полные задачи.
Есть класс NP-полных языков (задач распознания). В нем содержатся самые трудные языки (зр) из класса NP.
ЯзыкL
называется NP-полным,
если LNP
и любой другой язык L’NP
сводится к
L.
Исходя из свойств полиномиальной
сводимости, можно сказать, что NP-полные
задачи являются самыми трудными задачами
класса NP,
поскольку полиномиальное решение любой
задачи означает полиномиальное решение
всех задач класса NP.
С другой стороны, если хотя бы одна
задача класса NP
труднорешаема, то и все NP-полные
задачи труднорешаемы. Предположим, что
PNP,
тогда можно дать следующую уточнённую
характеристику класса NP.
Показано, что помимо P и NPC класса должны существовать задачи из NP, неразрешимые за полиномиальное время и не являющиеся NP-полными. Нас в основном будут интересовать задачи из класса NP-полных задач. Для доказательства NP-полноты любой задачи, нужно показать, что к ней полиномиально сводятся все задачи класса NP.
Лемма
3. Если L1,
L2NP,
L1NPC
и
,
то L2NPC.
Доказательство. Поскольку L1NPC, то L’ NP L’ L1, тогда согласно лемме 2 имеем, что любая задача из NP сводится к L2, т.е. L2NPC.
На уровне задач распознавания эта лемма указывает простой путь доказательства 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-полной.