Transcript
Page 1: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

с/к “Эффективные алгоритмы”Лекция 13: Подходы к решению NP-трудных задач

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 1 / 58

Page 2: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)

2 Случайный порядок перебораВыполнимость

3 Локальный поиск3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 3: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость

3 Локальный поиск3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 4: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 5: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 6: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 7: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 8: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58

Page 9: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

Представим, что у нас есть алгоритм сложности 1.7n для некоторойзадачи, который за “разумное” время позволяет решать примеры этойзадачи размера не более n0.

The “hardware” approach: возьмем в 10 раз более быстрыйкомпьютер. Теперь мы можем решать примеры размера n0 + 4.The “brainware” approach: придумаем алгоритм сложности 1.3n.Это позволит нам решать примеры размера 2 · n0.

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58

Page 10: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

Представим, что у нас есть алгоритм сложности 1.7n для некоторойзадачи, который за “разумное” время позволяет решать примеры этойзадачи размера не более n0.

The “hardware” approach: возьмем в 10 раз более быстрыйкомпьютер. Теперь мы можем решать примеры размера n0 + 4.

The “brainware” approach: придумаем алгоритм сложности 1.3n.Это позволит нам решать примеры размера 2 · n0.

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58

Page 11: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

Представим, что у нас есть алгоритм сложности 1.7n для некоторойзадачи, который за “разумное” время позволяет решать примеры этойзадачи размера не более n0.

The “hardware” approach: возьмем в 10 раз более быстрыйкомпьютер. Теперь мы можем решать примеры размера n0 + 4.The “brainware” approach: придумаем алгоритм сложности 1.3n.Это позволит нам решать примеры размера 2 · n0.

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58

Page 12: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

Представим, что у нас есть алгоритм сложности 1.7n для некоторойзадачи, который за “разумное” время позволяет решать примеры этойзадачи размера не более n0.

The “hardware” approach: возьмем в 10 раз более быстрыйкомпьютер. Теперь мы можем решать примеры размера n0 + 4.The “brainware” approach: придумаем алгоритм сложности 1.3n.Это позволит нам решать примеры размера 2 · n0.

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58

Page 13: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58

Page 14: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

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

Лучшее понимание NP-трудных задач.Новые интересные комбинаторные и алгоритмические задачи.Общая теория.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58

Page 15: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

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

Новые интересные комбинаторные и алгоритмические задачи.Общая теория.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58

Page 16: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

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

Общая теория.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58

Page 17: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Мотивация

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58

Page 18: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 5 / 58

Page 19: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Метод расщепления

Основная идеяРазбить входной пример задачи на несколько более простых примеровтой же задачи, найти для них решения (рекурсивными вызовами) ипостроить по найденным решениям ответ для исходного примера.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 6 / 58

Page 20: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 7 / 58

Page 21: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритмов расщепления

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58

Page 22: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритмов расщепления

как правило, анализ расщепляющего алгоритма состоит издлинного списка случаев

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58

Page 23: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритмов расщепления

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

доказательство для каждого случая представаляет собой простоекомбинаторное рассуждениетакой разбор случаев можно проводить автоматически

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58

Page 24: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритмов расщепления

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

такой разбор случаев можно проводить автоматически

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58

Page 25: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритмов расщепления

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58

Page 26: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Программа для автоматического доказательства верхнихоценок для NP-трудных задач

Вход

NP-трудную задачу, сформулированную в терминах КНФ формулмножество правил упрощения для данной задачиверхнюю оценку

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58

Page 27: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Программа для автоматического доказательства верхнихоценок для NP-трудных задач

ВходNP-трудную задачу, сформулированную в терминах КНФ формул

множество правил упрощения для данной задачиверхнюю оценку

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58

Page 28: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Программа для автоматического доказательства верхнихоценок для NP-трудных задач

ВходNP-трудную задачу, сформулированную в терминах КНФ формулмножество правил упрощения для данной задачи

верхнюю оценку

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58

Page 29: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Программа для автоматического доказательства верхнихоценок для NP-трудных задач

ВходNP-трудную задачу, сформулированную в терминах КНФ формулмножество правил упрощения для данной задачиверхнюю оценку

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58

Page 30: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Программа для автоматического доказательства верхнихоценок для NP-трудных задач

ВходNP-трудную задачу, сформулированную в терминах КНФ формулмножество правил упрощения для данной задачиверхнюю оценку

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58

Page 31: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Пример входа

Пример входаДопсутим, программа получила задание доказать, что существуеталгоритм для выполнимости, который использует правила удаленияединичных клозов и чистых литералов и имеет время работы не хуже1.619K , где K — количество клозов входной формулы.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 10 / 58

Page 32: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Предобработка

Предобработка

программа должна доказать, что для любой упрощеннойформулы можно найти (1, 2)-расщепление (то есть расщепление,которому соответствует рекуррентное неравенствоT (K ) ≤ T (K − 1) + T (K − 2) + poly(K ))каждый литерал упрощенной формулы входит в нее хотя бы одинраз положительно и хотя бы один раз отрицательно (всеостальные литералы являются чистыми и удаляютсясоответствующим правилом)более того, если есть литерал, который входит в формулу хотя быдважды, то расщепление по нему дает требуемое неравенство:

(x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (x ∨ c ∨ . . . ) ∧ . . .XXXXXXXXz

��������9x = 1 x = 0

(c ∨ . . . ) ∧ . . . (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . .

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58

Page 33: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Предобработка

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (1, 2)-расщепление (то есть расщепление,которому соответствует рекуррентное неравенствоT (K ) ≤ T (K − 1) + T (K − 2) + poly(K ))

каждый литерал упрощенной формулы входит в нее хотя бы одинраз положительно и хотя бы один раз отрицательно (всеостальные литералы являются чистыми и удаляютсясоответствующим правилом)более того, если есть литерал, который входит в формулу хотя быдважды, то расщепление по нему дает требуемое неравенство:

(x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (x ∨ c ∨ . . . ) ∧ . . .XXXXXXXXz

��������9x = 1 x = 0

(c ∨ . . . ) ∧ . . . (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . .

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58

Page 34: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Предобработка

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (1, 2)-расщепление (то есть расщепление,которому соответствует рекуррентное неравенствоT (K ) ≤ T (K − 1) + T (K − 2) + poly(K ))каждый литерал упрощенной формулы входит в нее хотя бы одинраз положительно и хотя бы один раз отрицательно (всеостальные литералы являются чистыми и удаляютсясоответствующим правилом)

более того, если есть литерал, который входит в формулу хотя быдважды, то расщепление по нему дает требуемое неравенство:

(x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (x ∨ c ∨ . . . ) ∧ . . .XXXXXXXXz

��������9x = 1 x = 0

(c ∨ . . . ) ∧ . . . (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . .

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58

Page 35: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Предобработка

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (1, 2)-расщепление (то есть расщепление,которому соответствует рекуррентное неравенствоT (K ) ≤ T (K − 1) + T (K − 2) + poly(K ))каждый литерал упрощенной формулы входит в нее хотя бы одинраз положительно и хотя бы один раз отрицательно (всеостальные литералы являются чистыми и удаляютсясоответствующим правилом)более того, если есть литерал, который входит в формулу хотя быдважды, то расщепление по нему дает требуемое неравенство:

(x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (x ∨ c ∨ . . . ) ∧ . . .XXXXXXXXz

��������9x = 1 x = 0

(c ∨ . . . ) ∧ . . . (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . .

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58

Page 36: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Предобработка

Таким образомПрограмме нужно доказать, что упрощенную формулу, состоящуютолько из (1, 1)-литералов, всегда можно хорошо расщепить.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 12 / 58

Page 37: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 38: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .

����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 39: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 40: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )

есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 41: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 42: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 43: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 44: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 45: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Автоматический разбор случаев

упрощенные формулы

?

(x ∨ . . .) ∧ (x ∨ . . .) ∧ . . .����)

(x) ∧ (x ∨ . . .) ∧ . . .

PPPPq

y ∈ (x ∨ . . . )есть единичный клоз

(x ∨ y . . . ) ∧ (x ∨ y . . . ) ∧ . . .

(x ∨ y . . . ) ∧ (x ∨ . . . ) ∧ (y ∨ . . . ) ∧ . . .

(2, 2)-расщепление по x

(2, 1)-расщепление по x

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58

Page 46: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 14 / 58

Page 47: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Случайный порядок перебора

Основная идеяЕсли для нахождения решения достаточно знать какую-то его часть,можно попытаться ее угадать, а потом достроить решение.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 15 / 58

Page 48: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 16 / 58

Page 49: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи PPSZ-подобного алгоритма

Основные идеи

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58

Page 50: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи PPSZ-подобного алгоритма

Основные идеивыберем случайную перестановку переменных и будемрасщеплять по переменным в соответствующем порядке

возможно, расщеплять нужно будет не по всем переменным,посколько некоторые переменные могут получить значения врезультате применения правил упрощениядля оценки времени работы будем считать, по сколькимпеременным нам расщеплять не пришлось

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58

Page 51: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи PPSZ-подобного алгоритма

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

для оценки времени работы будем считать, по сколькимпеременным нам расщеплять не пришлось

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58

Page 52: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи PPSZ-подобного алгоритма

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58

Page 53: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 54: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}

построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 55: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 56: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,

I а потом выбираем первую переменную из перестановки, все ещевходяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 57: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 58: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”

в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 59: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

PPSZ-подобный алгоритм

АлгоритмPPSZ-SAT(F )

выбрать случайным образом перестановку 𝜋 из множества всехперестановок {1, . . . , n}построить дерево рекурсии глубины не более 2n/3, где на каждомшаге

I сначала применяем правило удаления единичных клозов,I а потом выбираем первую переменную из перестановки, все еще

входяющую в формулу, и расщепляемся по ней

если на каком-то шаге выяснилось, что формула выполнима,выдать “выполнима”в противном случае выдать “невыполнима”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58

Page 60: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 19 / 58

Page 61: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Локальный поиск

Основная идеяВзять кандидата на решение и проверить, является ли он решением.Если нет, то локально модифицировать. Если через несколькоитераций решение не найдено, выбрать другого кандидата.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 20 / 58

Page 62: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 21 / 58

Page 63: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Хэммингово расстояние

Определение

Хэммингово расстояние двух наборов — количество переменных,которым эти наборы присваивают разные значения.Для набора t и числа d под Хэмминговым шаром ℋ(t, d) (сцентром в t и радуиса d) будем понимать множество всехнаборов, находящихся на расстоянии не более чем d от t.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58

Page 64: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Хэммингово расстояние

ОпределениеХэммингово расстояние двух наборов — количество переменных,которым эти наборы присваивают разные значения.

Для набора t и числа d под Хэмминговым шаром ℋ(t, d) (сцентром в t и радуиса d) будем понимать множество всехнаборов, находящихся на расстоянии не более чем d от t.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58

Page 65: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Хэммингово расстояние

ОпределениеХэммингово расстояние двух наборов — количество переменных,которым эти наборы присваивают разные значения.Для набора t и числа d под Хэмминговым шаром ℋ(t, d) (сцентром в t и радуиса d) будем понимать множество всехнаборов, находящихся на расстоянии не более чем d от t.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58

Page 66: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Поиск в шаре

Поиск в шареДля формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d)может быть осуществлен за время 3d :

если t не выполянет F , возьмем произвольный невыполненныйклоз C = (x1 ∨ x2 ∨ x3)

рассмотрим три набора, полученных из t изменением значенийпеременных x1, x2 и x3

хотя бы один из них будет ближе к выполняющему набору

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58

Page 67: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Поиск в шаре

Поиск в шареДля формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d)может быть осуществлен за время 3d :

если t не выполянет F , возьмем произвольный невыполненныйклоз C = (x1 ∨ x2 ∨ x3)

рассмотрим три набора, полученных из t изменением значенийпеременных x1, x2 и x3

хотя бы один из них будет ближе к выполняющему набору

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58

Page 68: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Поиск в шаре

Поиск в шареДля формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d)может быть осуществлен за время 3d :

если t не выполянет F , возьмем произвольный невыполненныйклоз C = (x1 ∨ x2 ∨ x3)

рассмотрим три набора, полученных из t изменением значенийпеременных x1, x2 и x3

хотя бы один из них будет ближе к выполняющему набору

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58

Page 69: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Поиск в шаре

Поиск в шареДля формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d)может быть осуществлен за время 3d :

если t не выполянет F , возьмем произвольный невыполненныйклоз C = (x1 ∨ x2 ∨ x3)

рассмотрим три набора, полученных из t изменением значенийпеременных x1, x2 и x3

хотя бы один из них будет ближе к выполняющему набору

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58

Page 70: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

√3

n-Алгоритм

АлгоритмSimple-3-SAT(F )

проверить, есть ли выполняющий набор в шарах ℋ(0n, n/2),ℋ(1n, n/2)

Лемма

Время работы алгоритма Simple-3-SAT есть√

3n, где n = n(F ) —

число переменных формулы F .

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58

Page 71: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

√3

n-Алгоритм

АлгоритмSimple-3-SAT(F )

проверить, есть ли выполняющий набор в шарах ℋ(0n, n/2),ℋ(1n, n/2)

Лемма

Время работы алгоритма Simple-3-SAT есть√

3n, где n = n(F ) —

число переменных формулы F .

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58

Page 72: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

√3

n-Алгоритм

АлгоритмSimple-3-SAT(F )

проверить, есть ли выполняющий набор в шарах ℋ(0n, n/2),ℋ(1n, n/2)

Лемма

Время работы алгоритма Simple-3-SAT есть√

3n, где n = n(F ) —

число переменных формулы F .

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58

Page 73: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

√3

n-Алгоритм

АлгоритмSimple-3-SAT(F )

проверить, есть ли выполняющий набор в шарах ℋ(0n, n/2),ℋ(1n, n/2)

Лемма

Время работы алгоритма Simple-3-SAT есть√

3n, где n = n(F ) —

число переменных формулы F .

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

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58

Page 74: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 25 / 58

Page 75: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Обобщение для k-SAT

Обобщение для k-SAT

покрыть множество всех наборов шарами равного радиуса(покрывающий код, covering code)проверить каждый шарвремя работы алгоритма: (2− 2/(k + 1))n

Открытый вопросПридумать алгоритм, работающий быстрее.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58

Page 76: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Обобщение для k-SAT

Обобщение для k-SATпокрыть множество всех наборов шарами равного радиуса(покрывающий код, covering code)

проверить каждый шарвремя работы алгоритма: (2− 2/(k + 1))n

Открытый вопросПридумать алгоритм, работающий быстрее.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58

Page 77: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Обобщение для k-SAT

Обобщение для k-SATпокрыть множество всех наборов шарами равного радиуса(покрывающий код, covering code)проверить каждый шар

время работы алгоритма: (2− 2/(k + 1))n

Открытый вопросПридумать алгоритм, работающий быстрее.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58

Page 78: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Обобщение для k-SAT

Обобщение для k-SATпокрыть множество всех наборов шарами равного радиуса(покрывающий код, covering code)проверить каждый шарвремя работы алгоритма: (2− 2/(k + 1))n

Открытый вопросПридумать алгоритм, работающий быстрее.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58

Page 79: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Обобщение для k-SAT

Обобщение для k-SATпокрыть множество всех наборов шарами равного радиуса(покрывающий код, covering code)проверить каждый шарвремя работы алгоритма: (2− 2/(k + 1))n

Открытый вопросПридумать алгоритм, работающий быстрее.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58

Page 80: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 27 / 58

Page 81: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Динамическое программирование

Основная идеяПоследовательно находить и запоминать решения для подпримеровисходного примера.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 28 / 58

Page 82: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 29 / 58

Page 83: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Задача о коммивояжере

АлгоритмDynamic-TSP(G )

для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждойвершины i ∈ S через Opt[S , i ] будем обозначать длинукратчайшего маршрута. начнинающегося в вершине 1,проходящему через все вершины S − {i} и заканчивающегося ввершине iпоследовательно заполнить матрицу:Opt[S , i ] = min{Opt[S − {i}, j ] + d(i , j) : j ∈ S − {i}}вернуть оптимальную стоимость маршрута:min{Opt[{2, . . . , n}, j ] + d(j , 1) : 2 ≤ j ≤ n}

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58

Page 84: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Задача о коммивояжере

АлгоритмDynamic-TSP(G )

для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждойвершины i ∈ S через Opt[S , i ] будем обозначать длинукратчайшего маршрута. начнинающегося в вершине 1,проходящему через все вершины S − {i} и заканчивающегося ввершине i

последовательно заполнить матрицу:Opt[S , i ] = min{Opt[S − {i}, j ] + d(i , j) : j ∈ S − {i}}вернуть оптимальную стоимость маршрута:min{Opt[{2, . . . , n}, j ] + d(j , 1) : 2 ≤ j ≤ n}

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58

Page 85: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Задача о коммивояжере

АлгоритмDynamic-TSP(G )

для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждойвершины i ∈ S через Opt[S , i ] будем обозначать длинукратчайшего маршрута. начнинающегося в вершине 1,проходящему через все вершины S − {i} и заканчивающегося ввершине iпоследовательно заполнить матрицу:Opt[S , i ] = min{Opt[S − {i}, j ] + d(i , j) : j ∈ S − {i}}

вернуть оптимальную стоимость маршрута:min{Opt[{2, . . . , n}, j ] + d(j , 1) : 2 ≤ j ≤ n}

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58

Page 86: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Задача о коммивояжере

АлгоритмDynamic-TSP(G )

для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждойвершины i ∈ S через Opt[S , i ] будем обозначать длинукратчайшего маршрута. начнинающегося в вершине 1,проходящему через все вершины S − {i} и заканчивающегося ввершине iпоследовательно заполнить матрицу:Opt[S , i ] = min{Opt[S − {i}, j ] + d(i , j) : j ∈ S − {i}}вернуть оптимальную стоимость маршрута:min{Opt[{2, . . . , n}, j ] + d(j , 1) : 2 ≤ j ≤ n}

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58

Page 87: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

ЛеммаСложность алгоритма Dynamic-TSP по времени и по памяти естьpoly(n)2n.

ФактДанный теоретический алгоритм был представлен в 1962-м году и досих пор является лучшим из известных.

Открытые вопросыПридумать алгоритм, работающий за время 1.99n.Придумать алгоритм, работающий за время 2n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58

Page 88: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

ЛеммаСложность алгоритма Dynamic-TSP по времени и по памяти естьpoly(n)2n.

ФактДанный теоретический алгоритм был представлен в 1962-м году и досих пор является лучшим из известных.

Открытые вопросыПридумать алгоритм, работающий за время 1.99n.Придумать алгоритм, работающий за время 2n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58

Page 89: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

ЛеммаСложность алгоритма Dynamic-TSP по времени и по памяти естьpoly(n)2n.

ФактДанный теоретический алгоритм был представлен в 1962-м году и досих пор является лучшим из известных.

Открытые вопросы

Придумать алгоритм, работающий за время 1.99n.Придумать алгоритм, работающий за время 2n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58

Page 90: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

ЛеммаСложность алгоритма Dynamic-TSP по времени и по памяти естьpoly(n)2n.

ФактДанный теоретический алгоритм был представлен в 1962-м году и досих пор является лучшим из известных.

Открытые вопросыПридумать алгоритм, работающий за время 1.99n.

Придумать алгоритм, работающий за время 2n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58

Page 91: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

ЛеммаСложность алгоритма Dynamic-TSP по времени и по памяти естьpoly(n)2n.

ФактДанный теоретический алгоритм был представлен в 1962-м году и досих пор является лучшим из известных.

Открытые вопросыПридумать алгоритм, работающий за время 1.99n.Придумать алгоритм, работающий за время 2n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58

Page 92: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 32 / 58

Page 93: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сведение к простой задаче

Основная идеяПо входному примеру трудной задачи построить примерэкспонециального размера для простой задачи и воспользоватьсяэффективным алгоритмом для этой задачи.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 33 / 58

Page 94: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Табличная сумма

ОпределениеЗадача о табличной k-сумме (table-k-SUM problem) заключается впроверке, можно ли из каждой строчки входной матрицы размераk ×m выбрать по числу так, чтобы их сумма равнялась входномурезультату S .

Перебор

На полный перебор тратится время mk .

Улучшение для табличной 2-суммыОтсортируем первую строчку, после чего для каждого числа x второйстрочки проверим бинарным поиском, нет ли в первой строчке числаS − x . Все это займет O(m log m) времени.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58

Page 95: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Табличная сумма

ОпределениеЗадача о табличной k-сумме (table-k-SUM problem) заключается впроверке, можно ли из каждой строчки входной матрицы размераk ×m выбрать по числу так, чтобы их сумма равнялась входномурезультату S .

Перебор

На полный перебор тратится время mk .

Улучшение для табличной 2-суммыОтсортируем первую строчку, после чего для каждого числа x второйстрочки проверим бинарным поиском, нет ли в первой строчке числаS − x . Все это займет O(m log m) времени.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58

Page 96: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Табличная сумма

ОпределениеЗадача о табличной k-сумме (table-k-SUM problem) заключается впроверке, можно ли из каждой строчки входной матрицы размераk ×m выбрать по числу так, чтобы их сумма равнялась входномурезультату S .

Перебор

На полный перебор тратится время mk .

Улучшение для табличной 2-суммыОтсортируем первую строчку, после чего для каждого числа x второйстрочки проверим бинарным поиском, нет ли в первой строчке числаS − x . Все это займет O(m log m) времени.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58

Page 97: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:I в первую строчку записываем все возможные суммы элементов из

первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 98: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:

I в первую строчку записываем все возможные суммы элементов изпервых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 99: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:I в первую строчку записываем все возможные суммы элементов из

первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 100: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:I в первую строчку записываем все возможные суммы элементов из

первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉

запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 101: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:I в первую строчку записываем все возможные суммы элементов из

первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 102: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Улучшение для табличной k-суммы

АлгоритмTable-k-SUM-Alg(A[k , m], S)

построить матрицу B[2, m⌈k/2⌉] следующим образом:I в первую строчку записываем все возможные суммы элементов из

первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждойстрочки)

I во вторую — из последних ⌈k/2⌉запускаем алгоритм для табличной 2-суммы на полученнойматрице B

ЛеммаАлгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность повремени и O(m⌈k/2⌉) сложность по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58

Page 103: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 36 / 58

Page 104: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сумма подмножества

ОпределениеЗадача о сумме подмножества (subset-sum problem) заключается впроверке того, можно ли из заданного набора из n чисел выбратьнесколько так, чтобы их сумма равнялась заданному числу B .

АлгоритмSubset-Sum-Alg({bi}1≤i≤n, B)

разбить входные числа на две части: b1, . . . , b⌈n/2⌉ иb⌈n/2⌉+1, . . . , bn

построить таблицу из двух строчек, в первую из которых записатьвсе возможные суммы чисел из первой части, во вторую — извторойзапустить для полученной матрицы алгоритм для табличной2-суммы

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58

Page 105: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сумма подмножества

ОпределениеЗадача о сумме подмножества (subset-sum problem) заключается впроверке того, можно ли из заданного набора из n чисел выбратьнесколько так, чтобы их сумма равнялась заданному числу B .

АлгоритмSubset-Sum-Alg({bi}1≤i≤n, B)

разбить входные числа на две части: b1, . . . , b⌈n/2⌉ иb⌈n/2⌉+1, . . . , bn

построить таблицу из двух строчек, в первую из которых записатьвсе возможные суммы чисел из первой части, во вторую — извторойзапустить для полученной матрицы алгоритм для табличной2-суммы

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58

Page 106: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сумма подмножества

ОпределениеЗадача о сумме подмножества (subset-sum problem) заключается впроверке того, можно ли из заданного набора из n чисел выбратьнесколько так, чтобы их сумма равнялась заданному числу B .

АлгоритмSubset-Sum-Alg({bi}1≤i≤n, B)

разбить входные числа на две части: b1, . . . , b⌈n/2⌉ иb⌈n/2⌉+1, . . . , bn

построить таблицу из двух строчек, в первую из которых записатьвсе возможные суммы чисел из первой части, во вторую — извторойзапустить для полученной матрицы алгоритм для табличной2-суммы

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58

Page 107: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сумма подмножества

ОпределениеЗадача о сумме подмножества (subset-sum problem) заключается впроверке того, можно ли из заданного набора из n чисел выбратьнесколько так, чтобы их сумма равнялась заданному числу B .

АлгоритмSubset-Sum-Alg({bi}1≤i≤n, B)

разбить входные числа на две части: b1, . . . , b⌈n/2⌉ иb⌈n/2⌉+1, . . . , bn

построить таблицу из двух строчек, в первую из которых записатьвсе возможные суммы чисел из первой части, во вторую — извторой

запустить для полученной матрицы алгоритм для табличной2-суммы

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58

Page 108: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Сумма подмножества

ОпределениеЗадача о сумме подмножества (subset-sum problem) заключается впроверке того, можно ли из заданного набора из n чисел выбратьнесколько так, чтобы их сумма равнялась заданному числу B .

АлгоритмSubset-Sum-Alg({bi}1≤i≤n, B)

разбить входные числа на две части: b1, . . . , b⌈n/2⌉ иb⌈n/2⌉+1, . . . , bn

построить таблицу из двух строчек, в первую из которых записатьвсе возможные суммы чисел из первой части, во вторую — извторойзапустить для полученной матрицы алгоритм для табличной2-суммы

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58

Page 109: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и попамяти.

Открытые вопросыПридумать алгоритм, работающий быстрее.Придумать алгоритм, работающий за время 1.99n, ноиспользующий лишь полиномиальную память.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58

Page 110: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и попамяти.

Открытые вопросы

Придумать алгоритм, работающий быстрее.Придумать алгоритм, работающий за время 1.99n, ноиспользующий лишь полиномиальную память.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58

Page 111: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и попамяти.

Открытые вопросыПридумать алгоритм, работающий быстрее.

Придумать алгоритм, работающий за время 1.99n, ноиспользующий лишь полиномиальную память.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58

Page 112: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и попамяти.

Открытые вопросыПридумать алгоритм, работающий быстрее.Придумать алгоритм, работающий за время 1.99n, ноиспользующий лишь полиномиальную память.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58

Page 113: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа Gпосчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единицавернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 114: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа Gпосчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единицавернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 115: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа G

посчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единицавернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 116: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа Gпосчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единицавернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 117: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа Gпосчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единица

вернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 118: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-клика

ОпределениеЗадача о 3-клике (3-clique problem) заключается в проверке наличия3-клики (то есть полного подграфа на трех вершинах) во входномграфе.

АлгоритмMatrix-Clique(G )

построить матрицу смежности A графа Gпосчитать A3

вернуть “да”, если на диагонали построенной матрицы есть хотябы одна единицавернуть “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58

Page 119: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —экспонента перемножения матриц (matrix multiplication exponent).

Доказательство

важное свойство матрицы смежности: Ak [i , j ] есть количествопутей длины k из вершины i в вершину j в графе G (легкодоказать по индукции)3-клика — это путь длины 3 из вершину в саму себядля вычисления A3 требуется два умножения матриц

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58

Page 120: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —экспонента перемножения матриц (matrix multiplication exponent).

Доказательство

важное свойство матрицы смежности: Ak [i , j ] есть количествопутей длины k из вершины i в вершину j в графе G (легкодоказать по индукции)3-клика — это путь длины 3 из вершину в саму себядля вычисления A3 требуется два умножения матриц

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58

Page 121: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —экспонента перемножения матриц (matrix multiplication exponent).

Доказательство

важное свойство матрицы смежности: Ak [i , j ] есть количествопутей длины k из вершины i в вершину j в графе G (легкодоказать по индукции)

3-клика — это путь длины 3 из вершину в саму себядля вычисления A3 требуется два умножения матриц

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58

Page 122: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —экспонента перемножения матриц (matrix multiplication exponent).

Доказательство

важное свойство матрицы смежности: Ak [i , j ] есть количествопутей длины k из вершины i в вершину j в графе G (легкодоказать по индукции)3-клика — это путь длины 3 из вершину в саму себя

для вычисления A3 требуется два умножения матриц

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58

Page 123: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —экспонента перемножения матриц (matrix multiplication exponent).

Доказательство

важное свойство матрицы смежности: Ak [i , j ] есть количествопутей длины k из вершины i в вершину j в графе G (легкодоказать по индукции)3-клика — это путь длины 3 из вершину в саму себядля вычисления A3 требуется два умножения матриц

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58

Page 124: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросы

Придумать более быстрый алгоритм для 3-клики.Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58

Page 125: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросыПридумать более быстрый алгоритм для 3-клики.

Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58

Page 126: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросыПридумать более быстрый алгоритм для 3-клики.Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58

Page 127: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 42 / 58

Page 128: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58

Page 129: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .

Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58

Page 130: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.

Сложность: 2wn/3 ≈ 1.732n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58

Page 131: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Основные идеи

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58

Page 132: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

&%'$

V1

&%'$

V2

&%'$

V3

входной граф G

����

��������

T1

T2 T3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 133: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

&%'$

V1/X1

X1

&%'$

V2/X2

X2 &%'$

V3/X3

X3

входной граф G

r����

X1

r����

X2r����

X3

T1

T2 T3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 134: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

T1

T2 T3

&%'$

V1/X1

X1

tt

&%'$

V2/X2

X2

tt &%'$

V3/X3

X3

ttвходной граф G

r����

X1

r����

X2r����

X3

T1

T2 T3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 135: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

T1

T2 T3

&%'$

V1/X1

X1

tt

&%'$

V2/X2

X2

tt &%'$

V3/X3

X3

ttвходной граф G

r����

X1

r����

X2r����

X3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 136: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

T1

T2 T3

&%'$

V1/X1

X1

tt

&%'$

V2/X2

X2

tt &%'$

V3/X3

X3

ttвходной граф G

r����

X1

r����

X2r����

X3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 137: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Вспомогательный граф

T1

T2 T3

&%'$

V1/X1

X1

tt

&%'$

V2/X2

X2

tt &%'$

V3/X3

X3

ttвходной граф G

r����

X1

r����

X2r����

X3

вспомогательный граф H

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58

Page 138: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 139: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 140: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)

для всех 1 ≤ w12, w13, w23 ≤ |EG |I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 141: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 142: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и Tj

I проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 143: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-клика

I если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 144: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 145: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Алгоритм

АлгоритмMatrix-MAX-CUT(G )

разбить множество вершин V на три равные части V1, V2, V3

построить вспомогательный трехдольный граф H: в i-я доля Tiсодержит все возможные непустые подмножества Vi ; вес ребрамежду X1 и X2 равен

w(V2 ∖ X2, X1) + w(V1 ∖ X1, X1) + w(V1 ∖ X1, X2)

(для остальных пар долей — аналогично)для всех 1 ≤ w12, w13, w23 ≤ |EG |

I оставить только ребра веса wij между долями Ti и TjI проверить, есть ли в модифицированном графе H 3-кликаI если да, то в G есть разрез веса w12 + w13 + w23

вернуть максимальную найденную стоимость разреза

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58

Page 146: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросы

Придумать алгоритм быстрее.Придумать алгоритм, работающий за время 1.99n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58

Page 147: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросыПридумать алгоритм быстрее.

Придумать алгоритм, работающий за время 1.99n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58

Page 148: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Открытые вопросы

Открытые вопросыПридумать алгоритм быстрее.Придумать алгоритм, работающий за время 1.99n, нополиномиальный по памяти.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58

Page 149: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 47 / 58

Page 150: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

Основная идеяИспользуя свойства конкретной задачи, перебирать кандидатов нарешения эффективно.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 48 / 58

Page 151: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 49 / 58

Page 152: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

ОпределениеЗадача 3-раскрашиваемости (3-coloring problem) заключается впроверке, можно ли раскрасить данный граф правильным образом втри цвета (смежные вершины не покрашены в один цвет).

Полный переборВсего кандидатов на решение — 3n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 50 / 58

Page 153: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

ОпределениеЗадача 3-раскрашиваемости (3-coloring problem) заключается впроверке, можно ли раскрасить данный граф правильным образом втри цвета (смежные вершины не покрашены в один цвет).

Полный переборВсего кандидатов на решение — 3n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 50 / 58

Page 154: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58

Page 155: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связен

зафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58

Page 156: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершины

последовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58

Page 157: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58

Page 158: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58

Page 159: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 160: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3

I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 161: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1

I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 162: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3

I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 163: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 164: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 52 / 58

Page 165: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Clever-Enum корректно выдает решение за время 1.89n.

Доказательство

в любой раскраске один из цветов встречается не более n/3 разбудем считать, что это всегда первый цвет2-раскрашиваемость решается за линейное время( nn/3

)≤ 2H(1/3)n ≤ 1.89n, где H — бинарная энтропия:

H(x) = x log2

(1x

)+ (1− x) log2

(1

1− x

)

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 53 / 58

Page 166: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Clever-Enum корректно выдает решение за время 1.89n.

Доказательствов любой раскраске один из цветов встречается не более n/3 раз

будем считать, что это всегда первый цвет2-раскрашиваемость решается за линейное время( nn/3

)≤ 2H(1/3)n ≤ 1.89n, где H — бинарная энтропия:

H(x) = x log2

(1x

)+ (1− x) log2

(1

1− x

)

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 53 / 58

Page 167: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Clever-Enum корректно выдает решение за время 1.89n.

Доказательствов любой раскраске один из цветов встречается не более n/3 разбудем считать, что это всегда первый цвет

2-раскрашиваемость решается за линейное время( nn/3

)≤ 2H(1/3)n ≤ 1.89n, где H — бинарная энтропия:

H(x) = x log2

(1x

)+ (1− x) log2

(1

1− x

)

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 53 / 58

Page 168: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Clever-Enum корректно выдает решение за время 1.89n.

Доказательствов любой раскраске один из цветов встречается не более n/3 разбудем считать, что это всегда первый цвет2-раскрашиваемость решается за линейное время

( nn/3

)≤ 2H(1/3)n ≤ 1.89n, где H — бинарная энтропия:

H(x) = x log2

(1x

)+ (1− x) log2

(1

1− x

)

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 53 / 58

Page 169: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Анализ алгоритма

ЛеммаАлгоритм Clever-Enum корректно выдает решение за время 1.89n.

Доказательствов любой раскраске один из цветов встречается не более n/3 разбудем считать, что это всегда первый цвет2-раскрашиваемость решается за линейное время( nn/3

)≤ 2H(1/3)n ≤ 1.89n, где H — бинарная энтропия:

H(x) = x log2

(1x

)+ (1− x) log2

(1

1− x

)

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 53 / 58

Page 170: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 54 / 58

Page 171: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Случайное сведение к простой задаче

Основная идеяИспользуя случайные биты, так изменить входной пример задачи,чтобы для поиска решения понадобилось полиномиальное время.

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 55 / 58

Page 172: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

План лекции1 Расщепление

Выполнимость (автоматическое доказательство)2 Случайный порядок перебора

Выполнимость3 Локальный поиск

3-выполнимостьk-выполнимость

4 Динамическое программированиеЗадача о коммивояжере

5 Сведение к простой задачеСумма подмножестваМаксимальный разрез

6 Умный перебор3-раскрашиваемость

7 Случайное сведение к простой задаче3-раскрашиваемость

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 56 / 58

Page 173: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритм

повторить c · 1.5n раз:I для каждой вершины выбрать случайным образом один из трех

цветов, в который данная вершина не покрашенаI записать формулу в 2-КНФ, которая выполнима тогда и только

тогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 174: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритмповторить c · 1.5n раз:

I для каждой вершины выбрать случайным образом один из трехцветов, в который данная вершина не покрашена

I записать формулу в 2-КНФ, которая выполнима тогда и толькотогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 175: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритмповторить c · 1.5n раз:

I для каждой вершины выбрать случайным образом один из трехцветов, в который данная вершина не покрашена

I записать формулу в 2-КНФ, которая выполнима тогда и толькотогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 176: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритмповторить c · 1.5n раз:

I для каждой вершины выбрать случайным образом один из трехцветов, в который данная вершина не покрашена

I записать формулу в 2-КНФ, которая выполнима тогда и толькотогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 177: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритмповторить c · 1.5n раз:

I для каждой вершины выбрать случайным образом один из трехцветов, в который данная вершина не покрашена

I записать формулу в 2-КНФ, которая выполнима тогда и толькотогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 178: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

3-раскрашиваемость

Алгоритмповторить c · 1.5n раз:

I для каждой вершины выбрать случайным образом один из трехцветов, в который данная вершина не покрашена

I записать формулу в 2-КНФ, которая выполнима тогда и толькотогда, когда граф можно раскрасить с заданными ограничениями:для ребра (u, v), где u покрашена в цвет 1 или 2, а v — в цвет 2или 3, запишем клозы

(u1 ∨ u2) ∧ (v2 ∨ v3) ∧ (¬u2 ∨ ¬v2)

I если полученная формула выполнима, выдать ответ “да”

выдать ответ “нет”

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 57 / 58

Page 179: Эффективные алгоритмы, осень 2007: Подходы к решению NP-трудных задач

Спасибо за внимание!

А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 58 / 58


Recommended