
- •Введение. Определение сложности вычислений. Вычислительные модели. Меры сложности. Сложностные классы p и np.
- •Самостоятельные занятия
- •Самостоятельные занятия
- •§ 2. Проблемы, решаемые за полиномиальное время.
- •Самостоятельные занятия
- •§ 1. Дополнение языков из np.
- •Самостоятельные занятия
- •§ 4. Недетерминированные проверки простоты. Самостоятельные занятия
- •Тема 6. Приближенные алгоритмы. Самостоятельные занятия
Тема 6. Приближенные алгоритмы. Самостоятельные занятия
[5], глава 7, § 37.
Приближенные алгоритмы
Труднорешаемые задачи, в первую очередь NP-полные задачи, не имеющие полиномиального алгоритма для нахождения оптимальных решений, можно попытаться решить с помощью приближенного поли номиального алгоритма. Получаемое при этом решение не оптимальное, а некоторое приближение к нему, которое на практике может оказаться вполне приемлемым. Алгоритмы, дающие такие решения, называются приближенными алгоритмами.
Система оценок приближенных алгоритмов:
Для оптимизационных задач можно говорить о решении с ошибкой не более, чем в (n) раз. Если C* - оптимальное решение, а C – приближенное, то должно выполняться неравенство 1 max (C/C*, C*/C) (n).
Иногда качество алгоритма оценивают через относительную ошибку
C – C* / C (n) для входа длины n.
Для некоторых задач , не зависят от длины входа n, в других случаях приходится довольствоваться алгоритмами, в которых оценка ошибки растет с ростом n.
Иногда можно улучшить качество приближения, увеличив время работы алгоритма, которое будет ограничено полиномом p(n, 1/), где n -длина входа и - оценка относительной ошибки.
Далее рассматриваются полиномиальные приближения для трех NP-полных задач с разными оценками качества приближенных алгоритмов.
Задача о вершинном покрытии
Напомним, что вершинным покрытием неориентированного графа
G = (V, E) называется множество V ’ V, что для каждого ребра (u, v) графа G по крайней мере один из концов u, v принадлежит V ’. Размером вершинного покрытия считается количество входящих в него вершин. Задача о вершинном покрытии состоит в нахождении оптималь ного вершинного покрытия, т.е. вершинного покрытия минимального размера. С алгоритмом AVC (рис. 37.1) можно найти вершинное покры тие, которое хуже оптимального не более чем в 2 раза.
AVG (G)
V’
E’
while E’
do возьмем произвольное ребро {u, v} из E’
C C {u, v}
удалим из E’ все ребра, инцидентные u или v
return C
Работа алгоритма AVC: Из множества E’, которое сначала совпадает с E, выбирается ребро (u, v) и его концы добавляем в множество V ’, которое сначала пусто. После чего из E’ удаляются все ребра, инци- дентные u или v. Цикл продолжается, пока E’ . Время работы алгоритма O(E).
Теорема. Алгоритм AVG работает с ошибкой не более чем в 2 раза.
Доказательство.
Заключение. Приложения теории сложности в практике программирования и в криптографии.
Вопросы сложности вычислений лежат в основе криптографических методов Надежность шифров базируется на уверенности, что дешифро вание является труднорешаемой задачей. Так безопасность шифров, основанных на RSA-схеме, гарантируется невозможностью разложить целое, равное произведению двух больших простых чисел, за полино миальное время. Проблема принадлежит классу NP. Полной гарантией безопасности было бы принадлежность языка простых чисел или языка составных чисел к NP-полным классам, но равенство NP=co-NP сомнительно. Более того, доказано, что язык простых чисел принадле- жит классу RP, так что NP-полнота языка простых чисел приводила бы к равенству RP=NP, что тоже маловероятно.
Есть основание считать, что не существует способа разложить состав- ное число на простые множители за полиномиальное время даже с использованием рандомизированного алгоритма. Если бы это предполо жение было неправильным, основанные на таком разложении крипто- графические методы были бы небезопасны для применения.
Перечень основной и дополнительной литературы
1.. Дж.Хопкрофт, Рад. Мотвани, Дж.Ульман.Введение в теорию автоматов, языков и вычислений. Пер.с англ.-М.: Издательский дом “Вильямс”,2002
2. А.В.Черемушкин. Лекции по арифметическим алгоритмам в криптографии.М.:МЦНМО,2002.
3. А.Н..Гамова. Математическая логика и теория алгоритмов.
Учебное пособие. Изд-во СГУ,3-е изд., дополненное. Саратов, 2005.
4. А.Ахо, Дж.Хопкрофт,Дж.Ульман. Построение и анализ вычислительных алгоритмов.М.:Мир,1979.
5. Т.Кормен, Ч.Лейзерсон, Р.Ривест. Алгоритмы: построение и анализ.- М.: МЦНМО, 2001.
6. Н.Катленд. Вычислимость.Введение в теорию вычислимых функций: Пер.с англ.- М.: Мир,1983.
7. Н.Вирт.Алгоритмы и структуры данных: Пер.с англ.- СПб.: Невский Диалект, 2001.
8 .Т.А.Павловская. С/C++.Программирование на языке высокого уровня.- СПб.:Питер, 2002.
9. Г.С.Иванова,Т.Н.Ничушкина,Е.К.Пугачев. Объектно-ориентированное программирование.М.: Изд-во МГТУ имени Н.Э.Баумана,2000
1) Здесь не приводятся