21. Классы p и np. Полиномиальное сведение.
Задача называется полиномиально разрешимой, если существует машина Тьюринга, решающая эту задачу за полиномиальное время(если существует алгоритм ее решения с полиномиальной временной сложностью)
P – класс полиномиально разрешимых задач.
P – класс задач которые можно эффективно решить
Для каждой задачи по крайней мере можно проверить, является ли данный ответ решением задачи
Волшебник Мерлин дает подсказку Королю Артуру, а король проверяет за полиномиальное время
Задача А, Недетерминированный алгоритм
Пусть А – задача, Х – некоторые входные данные задачи А
Будем говорить, что Артур и Мерлин решают задачу A,если для любых X
1)если X – положительное решение, то существует подсказка Мерлина, которая убедит Артура в том, что X – положительное решение;
2)если X – отрицательное решение, то никакая подсказка не убедит Артура в обратном.
Недетерминированный полиномиальный алгоритм
Артур и Мерлин решают задачу А за полиномиальное время O(q(n)), если для любого Х
1) , 2)
3)время обработки Артуром любой подсказки Мерлина не превосходит O(q(n))
NP – класс задач, которые могут быть решены недетерминированным полиномиальным алгоритмом. Фактически NP – класс задач, которые можно решить перебором. P содержится в NP
Т-ма. Если задача А принадлежит классу NP, то существует детерминированный алгоритм трудоемкости О(2р(n)), решающий эту задачу, где р(n) – некоторый полином
Доказательство. Пусть вход X задачи A закодирован в виде последовательности 0 и 1.
Так как AÎNP, то верно следующее: если X-положительное решение, то существует подсказка Y такая, что Артур по паре (X,Y) за полиномиальное время, ограниченное r(n), убеждается в том, что X – положительное решение (где r(n)-полином) |Y| £ r(n)
Сколько всего различных подсказок длины r(n) ? 2r(n)
Алгоритм:
for (все возможные подсказки Y длины r(n))
{ применить алгоритм полиномиальный
алгоритм Артура к паре (X,Y);
if (Arthur(X,Y) == true)
return true;}
return false.
Трудоемкость алгоритма – 2r(n)*r(n) = O(2p(n))
Полиномиальное сведение
Пусть A и B – две задачи. Будем говорить, что A полиномиально сводится к B,если существует полиномиальный алгоритм, преобразующий любые входные данные X задачи A во входные данные YX задачи B таким образом, что X – положительное решение A тогда и только тогда, когда YX – положительное решение B. В этом случае мы пишем AB (сводимость по Карпу). Пусть AB, если В полиномиально разрешима, то и А полиномиально разрешима. Задача называется NP-полной, если к ней полиномиально сводится любая задача из NP.
“Гамильтонов путь” µ “Гамильтонов цикл”
- 1.Трудоемкость алгоритмов
- 2.Алгоритмы сортировки
- 3.Сортировка слиянием
- 4.Бинарные поисковые деревья
- 5.2-3-4 Деревья
- 6.Хеширование
- 7. Поиск подстроки. Алгоритм Кнута-Морриса- Пратта.
- 8. Графы. Структуры данных для представления графов
- 9. Алгоритм нахождения Эйлерова цикла
- 10 .Поиск в ширину(волновой алгоритм)
- 11.Поиск в глубину
- 12.Жадные алгоритмы и матроиды
- 13.Задача об остовном дереве. Алгоритмы Прима и Краскала, их реализация
- 14. Алгоритм Дийкстры
- 15. Алгоритм Флойда
- 16. Паросочетания в двудольных графах
- 17. Потоки и разрезы в сетях. Алгоритм Форда-Фалкерсона
- 18. Задача о рюкзаке
- 21. Классы p и np. Полиномиальное сведение.
- 22. Np- полные задачи. Теорема Кука-Карпа-Левина. Np-полнота задачи о клике
- 23. Алгоритмы с гарантированной оценкой точности. Задача упаковки
- 24.Метод локального поиска и поиска с запретами. Задача о максимальном разрезе.
- 25.Метод ветвей и границ. Задача коммивояжера.
- 26. Задача коммивояжера с неравенством треугольника. Алгоритм Кристофидеса
- 27.Задача о независимом множестве, точные и эвристические алгоритмы ее решения
- 28.Задача о раскраске графа, точные и эвристические алгоритмы ее решения.
- 31.Задача о раскраске хордальных графов
- 32.Генетические алгоритмы
- 33. Page Rank
- 34 Криптосистема с открытым ключом. Криптосистема rsa
- 35.Задача разделения секрета.
- 36. Алгоритмы сжатия информации