179
с/к “Эффективные алгоритмы” Лекция 13: Подходы к решению NP-трудных задач А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/infclub/ А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 1 / 58

20080217 efficientalgorithms kulikov_lecture13

Embed Size (px)

Citation preview

Page 1: 20080217 efficientalgorithms kulikov_lecture13

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

А. Куликов

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

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

Page 2: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 3: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 4: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 5: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 6: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 7: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 8: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 9: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

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

Page 10: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

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

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

Page 11: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

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

Page 12: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

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

Page 13: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

Page 14: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

Page 15: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

Page 16: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

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

Page 17: 20080217 efficientalgorithms kulikov_lecture13

Мотивация

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

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

Page 18: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 19: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 20: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 21: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 22: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 23: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 24: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 25: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 26: 20080217 efficientalgorithms kulikov_lecture13

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

Вход

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

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

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

Page 27: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 28: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 29: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 30: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 31: 20080217 efficientalgorithms kulikov_lecture13

Пример входа

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

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

Page 32: 20080217 efficientalgorithms kulikov_lecture13

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

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

программа должна доказать, что для любой упрощеннойформулы можно найти (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: 20080217 efficientalgorithms kulikov_lecture13

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

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (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: 20080217 efficientalgorithms kulikov_lecture13

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

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (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: 20080217 efficientalgorithms kulikov_lecture13

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

Предобработкапрограмма должна доказать, что для любой упрощеннойформулы можно найти (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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 37: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

?

(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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 47: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 48: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 49: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 50: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 51: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 52: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 53: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

Page 54: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

Page 55: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

Page 56: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

Page 57: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

Page 58: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

Page 59: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

Page 60: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 61: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 62: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 63: 20080217 efficientalgorithms kulikov_lecture13

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

Определение

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

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

Page 64: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 65: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 66: 20080217 efficientalgorithms kulikov_lecture13

Поиск в шаре

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

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

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

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

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

Page 67: 20080217 efficientalgorithms kulikov_lecture13

Поиск в шаре

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

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

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

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

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

Page 68: 20080217 efficientalgorithms kulikov_lecture13

Поиск в шаре

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

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

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

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

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

Page 69: 20080217 efficientalgorithms kulikov_lecture13

Поиск в шаре

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

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

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

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

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

Page 70: 20080217 efficientalgorithms kulikov_lecture13

√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: 20080217 efficientalgorithms kulikov_lecture13

√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: 20080217 efficientalgorithms kulikov_lecture13

√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: 20080217 efficientalgorithms kulikov_lecture13

√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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 75: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 76: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 77: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 78: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 79: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 80: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 81: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 82: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 83: 20080217 efficientalgorithms kulikov_lecture13

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

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

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

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

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

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

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

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 88: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 89: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

Page 90: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

Page 91: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 92: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 93: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 94: 20080217 efficientalgorithms kulikov_lecture13

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

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

Перебор

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

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

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

Page 95: 20080217 efficientalgorithms kulikov_lecture13

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

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

Перебор

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

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

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

Page 96: 20080217 efficientalgorithms kulikov_lecture13

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

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

Перебор

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

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

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

Page 97: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

Улучшение для табличной 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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 104: 20080217 efficientalgorithms kulikov_lecture13

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

ОпределениеЗадача о сумме подмножества (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: 20080217 efficientalgorithms kulikov_lecture13

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

ОпределениеЗадача о сумме подмножества (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: 20080217 efficientalgorithms kulikov_lecture13

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

ОпределениеЗадача о сумме подмножества (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: 20080217 efficientalgorithms kulikov_lecture13

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

ОпределениеЗадача о сумме подмножества (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: 20080217 efficientalgorithms kulikov_lecture13

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

ОпределениеЗадача о сумме подмножества (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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 110: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 111: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

Page 112: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 113: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

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

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

Page 114: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

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

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

Page 115: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

посчитать A3

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

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

Page 116: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

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

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

Page 117: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

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

вернуть “нет”

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

Page 118: 20080217 efficientalgorithms kulikov_lecture13

3-клика

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

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

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

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

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

Page 119: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм выдает правильный ответ за время 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм выдает правильный ответ за время 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм выдает правильный ответ за время 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм выдает правильный ответ за время 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм выдает правильный ответ за время 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: 20080217 efficientalgorithms kulikov_lecture13

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

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

Придумать более быстрый алгоритм для 3-клики.Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

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

Page 125: 20080217 efficientalgorithms kulikov_lecture13

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

Открытые вопросыПридумать более быстрый алгоритм для 3-клики.

Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

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

Page 126: 20080217 efficientalgorithms kulikov_lecture13

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

Открытые вопросыПридумать более быстрый алгоритм для 3-клики.Является ли 3-клика такой же сложной, как и умножение булевыхматриц?

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

Page 127: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 128: 20080217 efficientalgorithms kulikov_lecture13

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

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

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

Page 129: 20080217 efficientalgorithms kulikov_lecture13

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

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .

Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

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

Page 130: 20080217 efficientalgorithms kulikov_lecture13

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

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.

Сложность: 2wn/3 ≈ 1.732n.

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

Page 131: 20080217 efficientalgorithms kulikov_lecture13

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

Основные идеи сведения задачи о максимальном разрезе кзадаче 3-кликиДан граф G на n вершинах.

Построим трехдольный граф H на 3 · 2n/3 вершинах соследующим свойством: исходный граф G имеет разрез веса wтогда и только тогда, когда H содержит 3-клику веса w .Используем быстрое умножение матриц для поиска 3-клики.Сложность: 2wn/3 ≈ 1.732n.

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

Page 132: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

&%'$

V1

&%'$

V2

&%'$

V3

входной граф G

����

��������

T1

T2 T3

вспомогательный граф H

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

Page 133: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

&%'$

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: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

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: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

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: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

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: 20080217 efficientalgorithms kulikov_lecture13

Вспомогательный граф

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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

Алгоритм

Алгоритм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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 147: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

Page 148: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 149: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 150: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

Основная идеяИспользуя свойства конкретной задачи, перебирать кандидатов нарешения эффективно.

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

Page 151: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 152: 20080217 efficientalgorithms kulikov_lecture13

3-раскрашиваемость

ОпределениеЗадача 3-раскрашиваемости (3-coloring problem) заключается впроверке, можно ли раскрасить данный граф правильным образом втри цвета (смежные вершины не покрашены в один цвет).

Полный переборВсего кандидатов на решение — 3n.

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

Page 153: 20080217 efficientalgorithms kulikov_lecture13

3-раскрашиваемость

ОпределениеЗадача 3-раскрашиваемости (3-coloring problem) заключается впроверке, можно ли раскрасить данный граф правильным образом втри цвета (смежные вершины не покрашены в один цвет).

Полный переборВсего кандидатов на решение — 3n.

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

Page 154: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

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

Page 155: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связен

зафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

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

Page 156: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершины

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

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

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

Page 157: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

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

Page 158: 20080217 efficientalgorithms kulikov_lecture13

Умный перебор

АлгоритмSimple-Clever-Enum(G )

НУО, граф связензафиксировать цвет 1 для какой-нибудь вершиныпоследовательно выбирать вершины, у которых есть хотя бы одинуже покрашенный сосед и рассматривать два варианта еепокраски

ЛеммаАлгоритм Simple-Clever-Enum имеет время работы 2n.

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

Page 159: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

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

Page 160: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3

I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

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

Page 161: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1

I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

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

Page 162: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3

I если покраска правильная, выдать “да”

выдать “нет”

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

Page 163: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

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

Page 164: 20080217 efficientalgorithms kulikov_lecture13

Еще один умный перебор

АлгоритмClever-Enum(G )

для каждого S ⊆ {1, . . . , n} размера не более n/3I покрасить вершины из S в цвет 1I покрасить оставшиеся вершины в цвета 2 и 3I если покраска правильная, выдать “да”

выдать “нет”

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

Page 165: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм 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: 20080217 efficientalgorithms kulikov_lecture13

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

ЛеммаАлгоритм 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: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 171: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

Page 172: 20080217 efficientalgorithms kulikov_lecture13

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

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

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

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

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

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

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

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

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

Page 173: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

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: 20080217 efficientalgorithms kulikov_lecture13

Спасибо за внимание!

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