- •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. Булевы функции.
Локальная замена.
Этот метод состоит в том, что выбирается некоторое характерное свойство известной 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]). Такой выбор элементов обеспечивает то, что каждый элемент из множества X содержится ровно в одном трёхвершинном подмножестве рассматриваемого разбиения.
Обратно, если V=V1V2V3 … Vq’ – произвольное разбиение графа G на треугольники, то соответствующее точное покрытие множества X получается, если выбирать те подмножества ci, для которых (ai[3], ai[6], ai[9])=Vj при некотором j, 1 ≤ j ≤ q’.
Приведённый пример представляет собой доказательство метода локальной замены в “чистом виде”. Здесь структура рассматриваемой индивидуальной задачи однозначно определялась структурой исходной задачи (NP-полнота которой известна).
Часто оказывается полезным дополнить рассматриваемую индивидуальную задачу вспомогательными элементами, которые играют роль ограничителя, налагающего дополнительные ограничения на способы получения ответа “да”.