Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ANALIZ_ALGOR.doc
Скачиваний:
7
Добавлен:
21.08.2019
Размер:
2.31 Mб
Скачать

Вопросы

  1. Какая задача называется полиномиальной? Привести примеры алгоритмов, имеющих полиномиальную сложность.

  2. Чем отличается полиномиальная задача от полиномиального алгоритма?

  3. Какая задача содержательно относится к классу NP? Привести примеры таких задач.

  4. В чем суть задачи о коммивояжере?

  5. Сформулировать задачу о раскраске графа.

  6. В чем заключается задача об упаковке рюкзака?

Литература

  1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

  2. Гуц А.К. Математическая логика и теория алгоритмов: Учебное пособие. – Омск: Изд-во Наследие. Диалог-Сибирь, 2003. – 108 с.

  3. Деммель Дж. Вычислительная линейная алгебра / Дж.Деммель; пер.с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 430 с.

  4. Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. — М.: БИНОМ. Лаборатория знаний, 2006. — 636 с.

  5. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

Лекция 6. Сложностные классы задач (продолжение) План

  1. Проблема Р=NP

  2. Приближенные методы решения np-задач

1. Проблема Р=NP

После введения в теорию алгоритмов понятия сложностных классов Эдмондсом (1965), была сформулирована основная проблема теории сложности - Р=NP?, и высказана гипотеза о несовпадении этих классов. Словесно проблему можно сформулировать следующим образом: можно ли все задачи, решение которых проверяется с полиномиальной сложностью, решить за полиномиальное время? Очевидно, любая задача, принадлежащая классу Р, принадлежит и классу NP, т.к. она может быть полиномиально проверена, при этом задача проверки решения может состоять просто в повторном решении. На сегодня отсутствуют теоретические доказательства как совпадения этих классов, так и их несовпадения. Предположение состоит в том, что , т.е. множество задач Ø. Это предположение опирается на существование еще одного класса, а именно класса NP-полных задач.

Понятие NP-полноты было введено независимо Куком (1971) и Левиным (1973) и основывается на понятии сводимости одной задачи к другой.

При обсуждении класса NP следует иметь ввиду, что наше мнение, согласно которому их решение требует большого времени, основано на том, что мы просто не нашли эффективных алгоритмов их решения. Может быть, посмотрев на задачу коммивояжера с другой тоски зрения, мы смогли бы разработать полиномиальный алгоритм ее решения.

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

Мы показываем, что задача является NP-полной, указывая способ сведения к ней всех остальных задач класса NP. На практике нет необходимости осуществлять редукцию для каждой NP-задачи. Вместо этого, для того. Чтобы доказать NP-полноту некоторой NP-задачи А, достаточно свести к ней какую-то NP-полную задачу В. Редуцировав задачу В к задаче А , мы показываем, что и любая NP-задача может быть сведена к А за два шага, первый из которых – ее редукция к В.

Редукция – настолько мощная вещь, что если любую из NP-полных задач удастся свести к задаче класса Р, то все NP-задачи получат полиномиальное решение. До сих пор ни одна из попыток построить такое сведение не удалась.

В 1971 г. Куком была доказана NP-полнота задачи о КНФ. КНФ представляет собой последовательность (конъюнкцию) булевских выражений, связанных между собой операторами AND, причем каждое выражение является дизъюнкцией логических переменных или их отрицаний. Задача об истинности логического выражения, имеющего вид КНФ, : существует ли у переменных, входящих в выражение, такие значения истинности, подстановка которых делает все выражение истинным. Как число переменных, так и сложность выражения не ограничены, поэтому число комбинаций значений истинности может быть очень велико.

NP-полнота большого числа задач была доказана путем редукции к ним задачи о КНФ.

Определение класса NP-полных задач требует выполнения следующих двух условий: во-первых, задача должна принадлежать классу NP, и во-вторых, к ней полиномиально должны сводиться все задачи из класса NP.

Теорема. Если существует задача, принадлежащая классу NPС, для которой существует полиномиальный алгоритм решения, то NP.

Схема доказательства состоит в сведении с полиномиальной трудоемкостью любой задачи из класса NP к данной задаче из класса NPС и решении этой задачи за полиномиальное время (по условию теоремы).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]