SlideShare a Scribd company logo
1 of 179
Download to read offline
с/к “Эффективные алгоритмы”
     Лекция 13: Подходы к решению NP-трудных задач

                                        А. Куликов

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




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость



А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   2 / 58
Мотивация


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




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


Представим, что у нас есть алгоритм сложности 1.7n для некоторой
задачи, который за “разумное” время позволяет решать примеры этой
задачи размера не более n0 .
      The “hardware” approach: возьмем в 10 раз более быстрый
      компьютер. Теперь мы можем решать примеры размера n0 + 4.




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


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




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


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




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




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




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




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




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




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




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




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




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   4 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   5 / 58
Метод расщепления




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   6 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   7 / 58
Анализ алгоритмов расщепления




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



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




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



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




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



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




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



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




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


Вход




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


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




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


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




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


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




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


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

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




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




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




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   11 / 58
Предобработка
Предобработка
      программа должна доказать, что для любой упрощенной
      формулы можно найти (1, 2)-расщепление (то есть расщепление,
      которому соответствует рекуррентное неравенство
      T (K ) ≤ T (K − 1) + T (K − 2) + poly (K ))




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   11 / 58
Предобработка
Предобработка
      программа должна доказать, что для любой упрощенной
      формулы можно найти (1, 2)-расщепление (то есть расщепление,
      которому соответствует рекуррентное неравенство
      T (K ) ≤ T (K − 1) + T (K − 2) + poly (K ))
      каждый литерал упрощенной формулы входит в нее хотя бы один
      раз положительно и хотя бы один раз отрицательно (все
      остальные литералы являются чистыми и удаляются
      соответствующим правилом)




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   11 / 58
Предобработка
Предобработка
      программа должна доказать, что для любой упрощенной
      формулы можно найти (1, 2)-расщепление (то есть расщепление,
      которому соответствует рекуррентное неравенство
      T (K ) ≤ T (K − 1) + T (K − 2) + poly (K ))
      каждый литерал упрощенной формулы входит в нее хотя бы один
      раз положительно и хотя бы один раз отрицательно (все
      остальные литералы являются чистыми и удаляются
      соответствующим правилом)
      более того, если есть литерал, который входит в формулу хотя бы
      дважды, то расщепление по нему дает требуемое неравенство:
              (x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (¯ ∨ c ∨ . . . ) ∧ . . .
                                                     x
                                        XXXX
             x =1                                     XXX               x =0
                       
                       9                                            z
                                                                    X
              (c ∨ . . . ) ∧ . . .             (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . .

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




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




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

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




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x




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

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

                                                            ?
                                         (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                        x
                                                     
                                               
                                               )
                                (x) ∧ (¯ ∨ . . .) ∧ . . .
                                       x




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

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

                                                            ?
                                         (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                        x
                                                     PPP
                                               
                                               )                      q
                                                                      P
                                (x) ∧ (¯ ∨ . . .) ∧ . . .
                                       x                         y ∈ (x ∨ . . . )




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x
                                                  PPP
                                            
                                            )                      q
                                                                   P
есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . .
                           x                                  y ∈ (x ∨ . . . )




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x
                                                  PPP
                                            
                                            )                      q
                                                                   P
есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . .
                           x                                  y ∈ (x ∨ . . . )


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

                                                                                     




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x
                                                  PPP
                                            
                                            )                      q
                                                                   P
есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . .
                           x                                  y ∈ (x ∨ . . . )


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


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




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x
                                                  PPP
                                            
                                            )                      q
                                                                   P
есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . .
                           x                                  y ∈ (x ∨ . . . )



           (2, 2)-расщепление по x             (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . 
                                                                 x ¯


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




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

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

                                                        ?
                                      (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . .
                                                     x
                                                  PPP
                                            
                                            )                      q
                                                                   P
есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . .
                           x                                  y ∈ (x ∨ . . . )



           (2, 2)-расщепление по x             (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . 
                                                                 x ¯


 (2, 1)-расщепление по x (x ∨ y . . . ) ∧ (¯ ∨ . . . ) ∧ (¯ ∨ . . . ) ∧ . . .
                                           x              y                   




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам                           13 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   14 / 58
Случайный порядок перебора




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   15 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   16 / 58
Основные идеи PPSZ-подобного алгоритма



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




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



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




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



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




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



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




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

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




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}
      построить дерево рекурсии глубины не более 2n/3, где на каждом
      шаге




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}
      построить дерево рекурсии глубины не более 2n/3, где на каждом
      шаге
            сначала применяем правило удаления единичных клозов,




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}
      построить дерево рекурсии глубины не более 2n/3, где на каждом
      шаге
            сначала применяем правило удаления единичных клозов,
            а потом выбираем первую переменную из перестановки, все еще
            входяющую в формулу, и расщепляемся по ней




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}
      построить дерево рекурсии глубины не более 2n/3, где на каждом
      шаге
            сначала применяем правило удаления единичных клозов,
            а потом выбираем первую переменную из перестановки, все еще
            входяющую в формулу, и расщепляемся по ней
      если на каком-то шаге выяснилось, что формула выполнима,
      выдать “выполнима”




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

Алгоритм
PPSZ-SAT(F )
      выбрать случайным образом перестановку ������ из множества всех
      перестановок {1, . . . , n}
      построить дерево рекурсии глубины не более 2n/3, где на каждом
      шаге
            сначала применяем правило удаления единичных клозов,
            а потом выбираем первую переменную из перестановки, все еще
            входяющую в формулу, и расщепляемся по ней
      если на каком-то шаге выяснилось, что формула выполнима,
      выдать “выполнима”
      в противном случае выдать “невыполнима”



А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам      18 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   19 / 58
Локальный поиск




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   20 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   21 / 58
Хэммингово расстояние




Определение




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




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




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




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




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



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




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



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




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



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




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



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




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

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




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

Алгоритм
Simple-3-SAT(F )
         проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2),
         ℋ(1n , n/2)




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

Алгоритм
Simple-3-SAT(F )
         проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2),
         ℋ(1n , n/2)

Лемма
                                                               √    n
Время работы алгоритма Simple-3-SAT есть                           3 , где n = n(F ) —
число переменных формулы F .




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

Алгоритм
Simple-3-SAT(F )
         проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2),
         ℋ(1n , n/2)

Лемма
                                                               √    n
Время работы алгоритма Simple-3-SAT есть                           3 , где n = n(F ) —
число переменных формулы F .

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


А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам                         24 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   25 / 58
Обобщение для k-SAT



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




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



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




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



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




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



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




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



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

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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   26 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   27 / 58
Динамическое программирование




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   28 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   29 / 58
Задача о коммивояжере


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




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


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




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


Алгоритм
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}}




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


Алгоритм
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
Открытые вопросы

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




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

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

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




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

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

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

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




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

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

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

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




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

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

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

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



А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   31 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   32 / 58
Сведение к простой задаче




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




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

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




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

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

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




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

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

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

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


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

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




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

Алгоритм
Table-k-SUM-Alg(A[k, m], S)
      построить матрицу B[2, m⌈k/2⌉ ] следующим образом:




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

Алгоритм
Table-k-SUM-Alg(A[k, m], S)
      построить матрицу B[2, m⌈k/2⌉ ] следующим образом:
            в первую строчку записываем все возможные суммы элементов из
            первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой
            строчки)




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

Алгоритм
Table-k-SUM-Alg(A[k, m], S)
      построить матрицу B[2, m⌈k/2⌉ ] следующим образом:
            в первую строчку записываем все возможные суммы элементов из
            первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой
            строчки)
            во вторую — из последних ⌈k/2⌉




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

Алгоритм
Table-k-SUM-Alg(A[k, m], S)
      построить матрицу B[2, m⌈k/2⌉ ] следующим образом:
            в первую строчку записываем все возможные суммы элементов из
            первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой
            строчки)
            во вторую — из последних ⌈k/2⌉
      запускаем алгоритм для табличной 2-суммы на полученной
      матрице B




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

Алгоритм
Table-k-SUM-Alg(A[k, m], S)
      построить матрицу B[2, m⌈k/2⌉ ] следующим образом:
            в первую строчку записываем все возможные суммы элементов из
            первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой
            строчки)
            во вторую — из последних ⌈k/2⌉
      запускаем алгоритм для табличной 2-суммы на полученной
      матрице B

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


А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам     35 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   36 / 58
Сумма подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке того, можно ли из заданного набора из n чисел выбрать
несколько так, чтобы их сумма равнялась заданному числу B.




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   37 / 58
Сумма подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке того, можно ли из заданного набора из n чисел выбрать
несколько так, чтобы их сумма равнялась заданному числу B.

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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   37 / 58
Сумма подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке того, можно ли из заданного набора из n чисел выбрать
несколько так, чтобы их сумма равнялась заданному числу B.

Алгоритм
Subset-Sum-Alg({bi }1≤i≤n , B)
      разбить входные числа на две части: b1 , . . . , b⌈n/2⌉ и
      b⌈n/2⌉+1 , . . . , bn




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   37 / 58
Сумма подмножества
Определение
Задача о сумме подмножества (subset-sum problem) заключается в
проверке того, можно ли из заданного набора из n чисел выбрать
несколько так, чтобы их сумма равнялась заданному числу B.

Алгоритм
Subset-Sum-Alg({bi }1≤i≤n , B)
      разбить входные числа на две части: b1 , . . . , b⌈n/2⌉ и
      b⌈n/2⌉+1 , . . . , bn
      построить таблицу из двух строчек, в первую из которых записать
      все возможные суммы чисел из первой части, во вторую — из
      второй




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   37 / 58
Сумма подмножества
Определение
Задача о сумме подмножества (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
Анализ алгоритма



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




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



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

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




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



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

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




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



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

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




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

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




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

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

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




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

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

Алгоритм
Matrix-Clique(G )
      построить матрицу смежности A графа G




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

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

Алгоритм
Matrix-Clique(G )
      построить матрицу смежности A графа G
      посчитать A3




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

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

Алгоритм
Matrix-Clique(G )
      построить матрицу смежности A графа G
      посчитать A3
      вернуть “да”, если на диагонали построенной матрицы есть хотя
      бы одна единица




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

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

Алгоритм
Matrix-Clique(G )
      построить матрицу смежности A графа G
      посчитать A3
      вернуть “да”, если на диагонали построенной матрицы есть хотя
      бы одна единица
      вернуть “нет”


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


Лемма
Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —
экспонента перемножения матриц (matrix multiplication exponent).




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


Лемма
Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —
экспонента перемножения матриц (matrix multiplication exponent).

Доказательство




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


Лемма
Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —
экспонента перемножения матриц (matrix multiplication exponent).

Доказательство
      важное свойство матрицы смежности: Ak [i, j] есть количество
      путей длины k из вершины i в вершину j в графе G (легко
      доказать по индукции)




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


Лемма
Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —
экспонента перемножения матриц (matrix multiplication exponent).

Доказательство
      важное свойство матрицы смежности: Ak [i, j] есть количество
      путей длины k из вершины i в вершину j в графе G (легко
      доказать по индукции)
      3-клика — это путь длины 3 из вершину в саму себя




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


Лемма
Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 —
экспонента перемножения матриц (matrix multiplication exponent).

Доказательство
      важное свойство матрицы смежности: Ak [i, j] есть количество
      путей длины k из вершины i в вершину j в графе G (легко
      доказать по индукции)
      3-клика — это путь длины 3 из вершину в саму себя
      для вычисления A3 требуется два умножения матриц




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




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




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




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




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




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   41 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   42 / 58
Основные идеи



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




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



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




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



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




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



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




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


                                                         '$
                                                                   V1

                     T1                                  %
                


                

        T2 T3 '$                                                        '$
           V2                                                        V3

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


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


                                                          '$
                                                                    V1 /X1

                     T1                                   %
                                                           1        X
                

                 r X1
                

        T2   T3 '$                                                      '$
             V2 /X2                                                      V3 /X3
         r r
          X2                    X3                    X                      X
            %
             2                                                          %
                                                                         3
        
вспомогательный граф H                                    входной граф G


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


                                                         '$
                                                          t V /X
                                                                   1   1
                                                          t X
                     T1                                  %   1
                

                 r X1
                

        T2     T3 '$                                                   '$
         t V2 /X2                                                   t V /X
          r r                                                              3   3
       X2     X3   t                                                    t
                  %
                     X2                                                %
                                                                          X3
        
вспомогательный граф H                                  входной граф G


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


                                                         '$
                                                          t V /X
                                                                   1   1
                                                          t X
                     T1                                  %   1
                

                 r X1
                

        T2     T3 '$                                                   '$
         t V2 /X2                                                   t V /X
          r r                                                              3   3
       X2     X3   t                                                    t
                  %
                     X2                                                %
                                                                          X3
        
вспомогательный граф H                                  входной граф G


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


                                                         '$
                                                          t V /X
                                                                   1   1
                                                          t X
                     T1                                  %   1
                

                 r X1
                

        T2     T3 '$                                                   '$
         t V2 /X2                                                   t V /X
          r r                                                              3   3
       X2     X3   t                                                    t
                  %
                     X2                                                %
                                                                          X3
        
вспомогательный граф H                                  входной граф G


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


                                                         '$
                                                          t V /X
                                                                   1   1
                                                          t X
                     T1                                  %   1
                

                 r X1
                

        T2     T3 '$                                                   '$
         t V2 /X2                                                   t V /X
          r r                                                              3   3
       X2     X3   t                                                    t
                  %
                     X2                                                %
                                                                          X3
        
вспомогательный граф H                                  входной граф G


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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   45 / 58
Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
      разбить множество вершин V на три равные части V1 , V2 , V3




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

      (для остальных пар долей — аналогично)




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам               45 / 58
Алгоритм
Алгоритм
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 |
            оставить только ребра веса wij между долями Ti и Tj




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам               45 / 58
Алгоритм
Алгоритм
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 |
            оставить только ребра веса wij между долями Ti и Tj
            проверить, есть ли в модифицированном графе H 3-клика




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам               45 / 58
Алгоритм
Алгоритм
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 |
            оставить только ребра веса wij между долями Ti и Tj
            проверить, есть ли в модифицированном графе H 3-клика
            если да, то в G есть разрез веса w12 + w13 + w23



А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам               45 / 58
Алгоритм
Алгоритм
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 |
            оставить только ребра веса wij между долями Ti и Tj
            проверить, есть ли в модифицированном графе H 3-клика
            если да, то в G есть разрез веса w12 + w13 + w23
      вернуть максимальную найденную стоимость разреза

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




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




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




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




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




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   46 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   47 / 58
Умный перебор




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




А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   48 / 58
План лекции
1   Расщепление
      Выполнимость (автоматическое доказательство)
2   Случайный порядок перебора
      Выполнимость
3   Локальный поиск
      3-выполнимость
      k-выполнимость
4   Динамическое программирование
      Задача о коммивояжере
5   Сведение к простой задаче
      Сумма подмножества
      Максимальный разрез
6   Умный перебор
      3-раскрашиваемость
7   Случайное сведение к простой задаче
      3-раскрашиваемость
А. Куликов (CS клуб при ПОМИ)   13. Подходы к NP-трудным задачам   49 / 58
3-раскрашиваемость



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




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



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

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




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


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




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


Алгоритм
Simple-Clever-Enum(G )
      НУО, граф связен




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

More Related Content

Viewers also liked

Los medios de transporte
Los medios de transporteLos medios de transporte
Los medios de transporteJMAV3SALINAS
 
Folk a sant boi projecte
Folk a sant boi projecteFolk a sant boi projecte
Folk a sant boi projecteemmsantboi
 
One piece volume 02(009-017)
One piece volume 02(009-017)One piece volume 02(009-017)
One piece volume 02(009-017)Marcos Donato
 
One piece volume 09(072 081)
One piece volume 09(072 081)One piece volume 09(072 081)
One piece volume 09(072 081)Marcos Donato
 
One piece volume 08(063-071)
One piece volume 08(063-071)One piece volume 08(063-071)
One piece volume 08(063-071)Marcos Donato
 
Programma dettagliato corso chirurgia orale sicoi cfco 2013
Programma dettagliato corso chirurgia orale sicoi cfco 2013Programma dettagliato corso chirurgia orale sicoi cfco 2013
Programma dettagliato corso chirurgia orale sicoi cfco 2013Pier Luigi Cavagni
 
Saami russian bible matthew 3 1-4
Saami russian bible   matthew 3 1-4Saami russian bible   matthew 3 1-4
Saami russian bible matthew 3 1-4ArabBibles
 
Samaritan bible deut 6 6-12
Samaritan bible   deut 6 6-12Samaritan bible   deut 6 6-12
Samaritan bible deut 6 6-12ArabBibles
 
Fichga de evaluacion de cristian
Fichga de evaluacion de cristianFichga de evaluacion de cristian
Fichga de evaluacion de cristianjanderurbano
 
Yashoday A Bestseller For Super Success Dr
Yashoday  A  Bestseller For  Super Success   DrYashoday  A  Bestseller For  Super Success   Dr
Yashoday A Bestseller For Super Success Drshivsr5
 
20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10Computer Science Club
 
잰걸음 걷는 국내 모바일 시장
잰걸음 걷는 국내 모바일 시장잰걸음 걷는 국내 모바일 시장
잰걸음 걷는 국내 모바일 시장Seungyul Kim
 
Jak se mění řízení znalostí v globálním prostředí
Jak se mění řízení znalostí v globálním prostředíJak se mění řízení znalostí v globálním prostředí
Jak se mění řízení znalostí v globálním prostředíKISK FF MU
 
20071014 introductory course_itsykson_lecture04
20071014 introductory course_itsykson_lecture0420071014 introductory course_itsykson_lecture04
20071014 introductory course_itsykson_lecture04Computer Science Club
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10Computer Science Club
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMpicvendor
 

Viewers also liked (20)

Los medios de transporte
Los medios de transporteLos medios de transporte
Los medios de transporte
 
Folk a sant boi projecte
Folk a sant boi projecteFolk a sant boi projecte
Folk a sant boi projecte
 
Praying
PrayingPraying
Praying
 
One piece volume 02(009-017)
One piece volume 02(009-017)One piece volume 02(009-017)
One piece volume 02(009-017)
 
One piece volume 09(072 081)
One piece volume 09(072 081)One piece volume 09(072 081)
One piece volume 09(072 081)
 
One piece volume 08(063-071)
One piece volume 08(063-071)One piece volume 08(063-071)
One piece volume 08(063-071)
 
Trompito 1
Trompito 1Trompito 1
Trompito 1
 
Programma dettagliato corso chirurgia orale sicoi cfco 2013
Programma dettagliato corso chirurgia orale sicoi cfco 2013Programma dettagliato corso chirurgia orale sicoi cfco 2013
Programma dettagliato corso chirurgia orale sicoi cfco 2013
 
Saami russian bible matthew 3 1-4
Saami russian bible   matthew 3 1-4Saami russian bible   matthew 3 1-4
Saami russian bible matthew 3 1-4
 
Samaritan bible deut 6 6-12
Samaritan bible   deut 6 6-12Samaritan bible   deut 6 6-12
Samaritan bible deut 6 6-12
 
Fichga de evaluacion de cristian
Fichga de evaluacion de cristianFichga de evaluacion de cristian
Fichga de evaluacion de cristian
 
Yashoday A Bestseller For Super Success Dr
Yashoday  A  Bestseller For  Super Success   DrYashoday  A  Bestseller For  Super Success   Dr
Yashoday A Bestseller For Super Success Dr
 
20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10
 
잰걸음 걷는 국내 모바일 시장
잰걸음 걷는 국내 모바일 시장잰걸음 걷는 국내 모바일 시장
잰걸음 걷는 국내 모바일 시장
 
Dam Chap Nhan
Dam Chap NhanDam Chap Nhan
Dam Chap Nhan
 
Jak se mění řízení znalostí v globálním prostředí
Jak se mění řízení znalostí v globálním prostředíJak se mění řízení znalostí v globálním prostředí
Jak se mění řízení znalostí v globálním prostředí
 
20071014 introductory course_itsykson_lecture04
20071014 introductory course_itsykson_lecture0420071014 introductory course_itsykson_lecture04
20071014 introductory course_itsykson_lecture04
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10
 
Presentation1
Presentation1Presentation1
Presentation1
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
 

Similar to 20080217 efficientalgorithms kulikov_lecture13

20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03Computer Science Club
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06Computer Science Club
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04Computer Science Club
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14Computer Science Club
 
20080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture1720080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture17Computer Science Club
 
20090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture0120090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture01Computer Science Club
 
20131022 зобнин
20131022 зобнин20131022 зобнин
20131022 зобнинYandex
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Mikhail Kurnosov
 
20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05Computer Science Club
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01Computer Science Club
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Alexey Paznikov
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05Computer Science Club
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04Computer Science Club
 
20080406 efficientalgorithms kulikov_lecture21
20080406 efficientalgorithms kulikov_lecture2120080406 efficientalgorithms kulikov_lecture21
20080406 efficientalgorithms kulikov_lecture21Computer Science Club
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard ProblemsLiloSEA
 
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Mikhail Kurnosov
 
Методы машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицМетоды машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицAndrey Ustyuzhanin
 

Similar to 20080217 efficientalgorithms kulikov_lecture13 (20)

20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14
 
20080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture1720080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture17
 
20090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture0120090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture01
 
20131022 зобнин
20131022 зобнин20131022 зобнин
20131022 зобнин
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
 
20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01
 
Efficient performance testing
Efficient performance testingEfficient performance testing
Efficient performance testing
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04
 
20080406 efficientalgorithms kulikov_lecture21
20080406 efficientalgorithms kulikov_lecture2120080406 efficientalgorithms kulikov_lecture21
20080406 efficientalgorithms kulikov_lecture21
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard Problems
 
Slides3
Slides3Slides3
Slides3
 
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...
 
Методы машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частицМетоды машинного обучения в физике элементарных частиц
Методы машинного обучения в физике элементарных частиц
 

More from Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20080217 efficientalgorithms kulikov_lecture13

  • 1. с/к “Эффективные алгоритмы” Лекция 13: Подходы к решению NP-трудных задач А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 1 / 58
  • 2. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 3. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 4. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 5. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 6. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 7. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 8. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 2 / 58
  • 9. Мотивация Представим, что у нас есть алгоритм сложности 1.7n для некоторой задачи, который за “разумное” время позволяет решать примеры этой задачи размера не более n0 . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58
  • 10. Мотивация Представим, что у нас есть алгоритм сложности 1.7n для некоторой задачи, который за “разумное” время позволяет решать примеры этой задачи размера не более n0 . The “hardware” approach: возьмем в 10 раз более быстрый компьютер. Теперь мы можем решать примеры размера n0 + 4. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58
  • 11. Мотивация Представим, что у нас есть алгоритм сложности 1.7n для некоторой задачи, который за “разумное” время позволяет решать примеры этой задачи размера не более n0 . The “hardware” approach: возьмем в 10 раз более быстрый компьютер. Теперь мы можем решать примеры размера n0 + 4. The “brainware” approach: придумаем алгоритм сложности 1.3n . Это позволит нам решать примеры размера 2 · n0 . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58
  • 12. Мотивация Представим, что у нас есть алгоритм сложности 1.7n для некоторой задачи, который за “разумное” время позволяет решать примеры этой задачи размера не более n0 . The “hardware” approach: возьмем в 10 раз более быстрый компьютер. Теперь мы можем решать примеры размера n0 + 4. The “brainware” approach: придумаем алгоритм сложности 1.3n . Это позволит нам решать примеры размера 2 · n0 . Другими словами, уменьшение основания экспоненты времени работы алгоритма увеличивает размер решаемых за данное время примеров в константное число раз, в то время как использование более быстрого компьютера способно увеличить размер лишь на константу. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 3 / 58
  • 13. Мотивация А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58
  • 14. Мотивация Многим приложениям требуется решать NP-трудные задачи, даже несмотря на то, что решения могут быть найдены только для весьма маленьких размеров входов. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58
  • 15. Мотивация Многим приложениям требуется решать NP-трудные задачи, даже несмотря на то, что решения могут быть найдены только для весьма маленьких размеров входов. Лучшее понимание NP-трудных задач. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58
  • 16. Мотивация Многим приложениям требуется решать NP-трудные задачи, даже несмотря на то, что решения могут быть найдены только для весьма маленьких размеров входов. Лучшее понимание NP-трудных задач. Новые интересные комбинаторные и алгоритмические задачи. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58
  • 17. Мотивация Многим приложениям требуется решать NP-трудные задачи, даже несмотря на то, что решения могут быть найдены только для весьма маленьких размеров входов. Лучшее понимание NP-трудных задач. Новые интересные комбинаторные и алгоритмические задачи. Общая теория. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 4 / 58
  • 18. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 5 / 58
  • 19. Метод расщепления Основная идея Разбить входной пример задачи на несколько более простых примеров той же задачи, найти для них решения (рекурсивными вызовами) и построить по найденным решениям ответ для исходного примера. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 6 / 58
  • 20. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 7 / 58
  • 21. Анализ алгоритмов расщепления А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58
  • 22. Анализ алгоритмов расщепления как правило, анализ расщепляющего алгоритма состоит из длинного списка случаев А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58
  • 23. Анализ алгоритмов расщепления как правило, анализ расщепляющего алгоритма состоит из длинного списка случаев в каждом случае показывается, что входной пример можно разбить на несколько примеров, чьи размеры на нужную константу меньше, чем размер исходного примера А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58
  • 24. Анализ алгоритмов расщепления как правило, анализ расщепляющего алгоритма состоит из длинного списка случаев в каждом случае показывается, что входной пример можно разбить на несколько примеров, чьи размеры на нужную константу меньше, чем размер исходного примера доказательство для каждого случая представаляет собой простое комбинаторное рассуждение А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58
  • 25. Анализ алгоритмов расщепления как правило, анализ расщепляющего алгоритма состоит из длинного списка случаев в каждом случае показывается, что входной пример можно разбить на несколько примеров, чьи размеры на нужную константу меньше, чем размер исходного примера доказательство для каждого случая представаляет собой простое комбинаторное рассуждение такой разбор случаев можно проводить автоматически А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 8 / 58
  • 26. Программа для автоматического доказательства верхних оценок для NP-трудных задач Вход А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58
  • 27. Программа для автоматического доказательства верхних оценок для NP-трудных задач Вход NP-трудную задачу, сформулированную в терминах КНФ формул А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58
  • 28. Программа для автоматического доказательства верхних оценок для NP-трудных задач Вход NP-трудную задачу, сформулированную в терминах КНФ формул множество правил упрощения для данной задачи А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58
  • 29. Программа для автоматического доказательства верхних оценок для NP-трудных задач Вход NP-трудную задачу, сформулированную в терминах КНФ формул множество правил упрощения для данной задачи верхнюю оценку А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58
  • 30. Программа для автоматического доказательства верхних оценок для NP-трудных задач Вход NP-трудную задачу, сформулированную в терминах КНФ формул множество правил упрощения для данной задачи верхнюю оценку По входным данным программа пытается найти алгоритм расщепления для данной задачи, который использует данные правила упрощения и имеет время работы, удовлетворяющее данной оценке. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 9 / 58
  • 31. Пример входа Пример входа Допсутим, программа получила задание доказать, что существует алгоритм для выполнимости, который использует правила удаления единичных клозов и чистых литералов и имеет время работы не хуже 1.619K , где K — количество клозов входной формулы. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 10 / 58
  • 32. Предобработка Предобработка А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58
  • 33. Предобработка Предобработка программа должна доказать, что для любой упрощенной формулы можно найти (1, 2)-расщепление (то есть расщепление, которому соответствует рекуррентное неравенство T (K ) ≤ T (K − 1) + T (K − 2) + poly (K )) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58
  • 34. Предобработка Предобработка программа должна доказать, что для любой упрощенной формулы можно найти (1, 2)-расщепление (то есть расщепление, которому соответствует рекуррентное неравенство T (K ) ≤ T (K − 1) + T (K − 2) + poly (K )) каждый литерал упрощенной формулы входит в нее хотя бы один раз положительно и хотя бы один раз отрицательно (все остальные литералы являются чистыми и удаляются соответствующим правилом) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58
  • 35. Предобработка Предобработка программа должна доказать, что для любой упрощенной формулы можно найти (1, 2)-расщепление (то есть расщепление, которому соответствует рекуррентное неравенство T (K ) ≤ T (K − 1) + T (K − 2) + poly (K )) каждый литерал упрощенной формулы входит в нее хотя бы один раз положительно и хотя бы один раз отрицательно (все остальные литералы являются чистыми и удаляются соответствующим правилом) более того, если есть литерал, который входит в формулу хотя бы дважды, то расщепление по нему дает требуемое неравенство: (x ∨ a ∨ . . . ) ∧ (x ∨ b ∨ . . . ) ∧ (¯ ∨ c ∨ . . . ) ∧ . . . x XXXX x =1 XXX x =0 9 z X (c ∨ . . . ) ∧ . . . (a ∨ . . . ) ∧ (b ∨ . . . ) ∧ . . . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 11 / 58
  • 36. Предобработка Таким образом Программе нужно доказать, что упрощенную формулу, состоящую только из (1, 1)-литералов, всегда можно хорошо расщепить. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 12 / 58
  • 37. Автоматический разбор случаев упрощенные формулы А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 38. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 39. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x ) (x) ∧ (¯ ∨ . . .) ∧ . . . x А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 40. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 41. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 42. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . x ¯ А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 43. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . x ¯ (x ∨ y . . . ) ∧ (¯ ∨ . . . ) ∧ (¯ ∨ . . . ) ∧ . . . x y А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 44. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) (2, 2)-расщепление по x (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . x ¯ (x ∨ y . . . ) ∧ (¯ ∨ . . . ) ∧ (¯ ∨ . . . ) ∧ . . . x y А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 45. Автоматический разбор случаев упрощенные формулы ? (x ∨ . . .) ∧ (¯ ∨ . . .) ∧ . . . x PPP ) q P есть единичный клоз (x) ∧ (¯ ∨ . . .) ∧ . . . x y ∈ (x ∨ . . . ) (2, 2)-расщепление по x (x ∨ y . . . ) ∧ (¯ ∨ y . . . ) ∧ . . . x ¯ (2, 1)-расщепление по x (x ∨ y . . . ) ∧ (¯ ∨ . . . ) ∧ (¯ ∨ . . . ) ∧ . . . x y А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 13 / 58
  • 46. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 14 / 58
  • 47. Случайный порядок перебора Основная идея Если для нахождения решения достаточно знать какую-то его часть, можно попытаться ее угадать, а потом достроить решение. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 15 / 58
  • 48. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 16 / 58
  • 49. Основные идеи PPSZ-подобного алгоритма Основные идеи А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58
  • 50. Основные идеи PPSZ-подобного алгоритма Основные идеи выберем случайную перестановку переменных и будем расщеплять по переменным в соответствующем порядке А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58
  • 51. Основные идеи PPSZ-подобного алгоритма Основные идеи выберем случайную перестановку переменных и будем расщеплять по переменным в соответствующем порядке возможно, расщеплять нужно будет не по всем переменным, посколько некоторые переменные могут получить значения в результате применения правил упрощения А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58
  • 52. Основные идеи PPSZ-подобного алгоритма Основные идеи выберем случайную перестановку переменных и будем расщеплять по переменным в соответствующем порядке возможно, расщеплять нужно будет не по всем переменным, посколько некоторые переменные могут получить значения в результате применения правил упрощения для оценки времени работы будем считать, по скольким переменным нам расщеплять не пришлось А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 17 / 58
  • 53. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 54. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 55. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} построить дерево рекурсии глубины не более 2n/3, где на каждом шаге А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 56. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} построить дерево рекурсии глубины не более 2n/3, где на каждом шаге сначала применяем правило удаления единичных клозов, А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 57. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} построить дерево рекурсии глубины не более 2n/3, где на каждом шаге сначала применяем правило удаления единичных клозов, а потом выбираем первую переменную из перестановки, все еще входяющую в формулу, и расщепляемся по ней А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 58. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} построить дерево рекурсии глубины не более 2n/3, где на каждом шаге сначала применяем правило удаления единичных клозов, а потом выбираем первую переменную из перестановки, все еще входяющую в формулу, и расщепляемся по ней если на каком-то шаге выяснилось, что формула выполнима, выдать “выполнима” А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 59. PPSZ-подобный алгоритм Алгоритм PPSZ-SAT(F ) выбрать случайным образом перестановку ������ из множества всех перестановок {1, . . . , n} построить дерево рекурсии глубины не более 2n/3, где на каждом шаге сначала применяем правило удаления единичных клозов, а потом выбираем первую переменную из перестановки, все еще входяющую в формулу, и расщепляемся по ней если на каком-то шаге выяснилось, что формула выполнима, выдать “выполнима” в противном случае выдать “невыполнима” А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 18 / 58
  • 60. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 19 / 58
  • 61. Локальный поиск Основная идея Взять кандидата на решение и проверить, является ли он решением. Если нет, то локально модифицировать. Если через несколько итераций решение не найдено, выбрать другого кандидата. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 20 / 58
  • 62. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 21 / 58
  • 63. Хэммингово расстояние Определение А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58
  • 64. Хэммингово расстояние Определение Хэммингово расстояние двух наборов — количество переменных, которым эти наборы присваивают разные значения. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58
  • 65. Хэммингово расстояние Определение Хэммингово расстояние двух наборов — количество переменных, которым эти наборы присваивают разные значения. Для набора t и числа d под Хэмминговым шаром ℋ(t, d ) (с центром в t и радуиса d ) будем понимать множество всех наборов, находящихся на расстоянии не более чем d от t. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 22 / 58
  • 66. Поиск в шаре Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d ) может быть осуществлен за время 3d : А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58
  • 67. Поиск в шаре Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d ) может быть осуществлен за время 3d : если t не выполянет F , возьмем произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58
  • 68. Поиск в шаре Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d ) может быть осуществлен за время 3d : если t не выполянет F , возьмем произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ) рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58
  • 69. Поиск в шаре Поиск в шаре Для формулы F в 3-КНФ поиск выполняющего набора в шаре ℋ(t, d ) может быть осуществлен за время 3d : если t не выполянет F , возьмем произвольный невыполненный клоз C = (x1 ∨ x2 ∨ x3 ) рассмотрим три набора, полученных из t изменением значений переменных x1 , x2 и x3 хотя бы один из них будет ближе к выполняющему набору А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 23 / 58
  • 70. n 3 -Алгоритм Алгоритм Simple-3-SAT(F ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58
  • 71. n 3 -Алгоритм Алгоритм Simple-3-SAT(F ) проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2), ℋ(1n , n/2) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58
  • 72. n 3 -Алгоритм Алгоритм Simple-3-SAT(F ) проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2), ℋ(1n , n/2) Лемма √ n Время работы алгоритма Simple-3-SAT есть 3 , где n = n(F ) — число переменных формулы F . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58
  • 73. n 3 -Алгоритм Алгоритм Simple-3-SAT(F ) проверить, есть ли выполняющий набор в шарах ℋ(0n , n/2), ℋ(1n , n/2) Лемма √ n Время работы алгоритма Simple-3-SAT есть 3 , где n = n(F ) — число переменных формулы F . Доказательство Понятно, что если выполняющий набор есть, то он содержится в одном из рассмотренных двух шаров. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 24 / 58
  • 74. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 25 / 58
  • 75. Обобщение для k-SAT Обобщение для k-SAT А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58
  • 76. Обобщение для k-SAT Обобщение для k-SAT покрыть множество всех наборов шарами равного радиуса (покрывающий код, covering code) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58
  • 77. Обобщение для k-SAT Обобщение для k-SAT покрыть множество всех наборов шарами равного радиуса (покрывающий код, covering code) проверить каждый шар А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58
  • 78. Обобщение для k-SAT Обобщение для k-SAT покрыть множество всех наборов шарами равного радиуса (покрывающий код, covering code) проверить каждый шар время работы алгоритма: (2 − 2/(k + 1))n А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58
  • 79. Обобщение для k-SAT Обобщение для k-SAT покрыть множество всех наборов шарами равного радиуса (покрывающий код, covering code) проверить каждый шар время работы алгоритма: (2 − 2/(k + 1))n Открытый вопрос Придумать алгоритм, работающий быстрее. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 26 / 58
  • 80. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 27 / 58
  • 81. Динамическое программирование Основная идея Последовательно находить и запоминать решения для подпримеров исходного примера. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 28 / 58
  • 82. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 29 / 58
  • 83. Задача о коммивояжере Алгоритм Dynamic-TSP(G ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58
  • 84. Задача о коммивояжере Алгоритм Dynamic-TSP(G ) для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой вершины i ∈ S через Opt[S, i] будем обозначать длину кратчайшего маршрута. начнинающегося в вершине 1, проходящему через все вершины S − {i} и заканчивающегося в вершине i А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58
  • 85. Задача о коммивояжере Алгоритм 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}} А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 30 / 58
  • 86. Задача о коммивояжере Алгоритм 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
  • 87. Открытые вопросы Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58
  • 88. Открытые вопросы Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . Факт Данный теоретический алгоритм был представлен в 1962-м году и до сих пор является лучшим из известных. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58
  • 89. Открытые вопросы Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . Факт Данный теоретический алгоритм был представлен в 1962-м году и до сих пор является лучшим из известных. Открытые вопросы А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58
  • 90. Открытые вопросы Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . Факт Данный теоретический алгоритм был представлен в 1962-м году и до сих пор является лучшим из известных. Открытые вопросы Придумать алгоритм, работающий за время 1.99n . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58
  • 91. Открытые вопросы Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . Факт Данный теоретический алгоритм был представлен в 1962-м году и до сих пор является лучшим из известных. Открытые вопросы Придумать алгоритм, работающий за время 1.99n . Придумать алгоритм, работающий за время 2n , но полиномиальный по памяти. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 31 / 58
  • 92. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 32 / 58
  • 93. Сведение к простой задаче Основная идея По входному примеру трудной задачи построить пример экспонециального размера для простой задачи и воспользоваться эффективным алгоритмом для этой задачи. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 33 / 58
  • 94. Табличная сумма Определение Задача о табличной k-сумме (table-k-SUM problem) заключается в проверке, можно ли из каждой строчки входной матрицы размера k × m выбрать по числу так, чтобы их сумма равнялась входному результату S. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58
  • 95. Табличная сумма Определение Задача о табличной k-сумме (table-k-SUM problem) заключается в проверке, можно ли из каждой строчки входной матрицы размера k × m выбрать по числу так, чтобы их сумма равнялась входному результату S. Перебор На полный перебор тратится время mk . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58
  • 96. Табличная сумма Определение Задача о табличной k-сумме (table-k-SUM problem) заключается в проверке, можно ли из каждой строчки входной матрицы размера k × m выбрать по числу так, чтобы их сумма равнялась входному результату S. Перебор На полный перебор тратится время mk . Улучшение для табличной 2-суммы Отсортируем первую строчку, после чего для каждого числа x второй строчки проверим бинарным поиском, нет ли в первой строчке числа S − x. Все это займет O(m log m) времени. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 34 / 58
  • 97. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 98. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) построить матрицу B[2, m⌈k/2⌉ ] следующим образом: А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 99. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) построить матрицу B[2, m⌈k/2⌉ ] следующим образом: в первую строчку записываем все возможные суммы элементов из первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой строчки) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 100. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) построить матрицу B[2, m⌈k/2⌉ ] следующим образом: в первую строчку записываем все возможные суммы элементов из первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой строчки) во вторую — из последних ⌈k/2⌉ А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 101. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) построить матрицу B[2, m⌈k/2⌉ ] следующим образом: в первую строчку записываем все возможные суммы элементов из первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой строчки) во вторую — из последних ⌈k/2⌉ запускаем алгоритм для табличной 2-суммы на полученной матрице B А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 102. Улучшение для табличной k-суммы Алгоритм Table-k-SUM-Alg(A[k, m], S) построить матрицу B[2, m⌈k/2⌉ ] следующим образом: в первую строчку записываем все возможные суммы элементов из первых ⌊k/2⌋ строчек матрицы A (ровно по одному из каждой строчки) во вторую — из последних ⌈k/2⌉ запускаем алгоритм для табличной 2-суммы на полученной матрице B Лемма Алгоритм Table-k-SUM-Alg имеет O(m⌈k/2⌉ log m) сложность по времени и O(m⌈k/2⌉ ) сложность по памяти. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 35 / 58
  • 103. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 36 / 58
  • 104. Сумма подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке того, можно ли из заданного набора из n чисел выбрать несколько так, чтобы их сумма равнялась заданному числу B. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58
  • 105. Сумма подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке того, можно ли из заданного набора из n чисел выбрать несколько так, чтобы их сумма равнялась заданному числу B. Алгоритм Subset-Sum-Alg({bi }1≤i≤n , B) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58
  • 106. Сумма подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке того, можно ли из заданного набора из n чисел выбрать несколько так, чтобы их сумма равнялась заданному числу B. Алгоритм Subset-Sum-Alg({bi }1≤i≤n , B) разбить входные числа на две части: b1 , . . . , b⌈n/2⌉ и b⌈n/2⌉+1 , . . . , bn А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58
  • 107. Сумма подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке того, можно ли из заданного набора из n чисел выбрать несколько так, чтобы их сумма равнялась заданному числу B. Алгоритм Subset-Sum-Alg({bi }1≤i≤n , B) разбить входные числа на две части: b1 , . . . , b⌈n/2⌉ и b⌈n/2⌉+1 , . . . , bn построить таблицу из двух строчек, в первую из которых записать все возможные суммы чисел из первой части, во вторую — из второй А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 37 / 58
  • 108. Сумма подмножества Определение Задача о сумме подмножества (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
  • 109. Анализ алгоритма Лемма Алгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и по памяти. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58
  • 110. Анализ алгоритма Лемма Алгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и по памяти. Открытые вопросы А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58
  • 111. Анализ алгоритма Лемма Алгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и по памяти. Открытые вопросы Придумать алгоритм, работающий быстрее. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58
  • 112. Анализ алгоритма Лемма Алгоритм Subset-Sum-Alg имеет сложность 2n/2 по времени и по памяти. Открытые вопросы Придумать алгоритм, работающий быстрее. Придумать алгоритм, работающий за время 1.99n , но использующий лишь полиномиальную память. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 38 / 58
  • 113. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 114. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. Алгоритм Matrix-Clique(G ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 115. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. Алгоритм Matrix-Clique(G ) построить матрицу смежности A графа G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 116. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. Алгоритм Matrix-Clique(G ) построить матрицу смежности A графа G посчитать A3 А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 117. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. Алгоритм Matrix-Clique(G ) построить матрицу смежности A графа G посчитать A3 вернуть “да”, если на диагонали построенной матрицы есть хотя бы одна единица А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 118. 3-клика Определение Задача о 3-клике (3-clique problem) заключается в проверке наличия 3-клики (то есть полного подграфа на трех вершинах) во входном графе. Алгоритм Matrix-Clique(G ) построить матрицу смежности A графа G посчитать A3 вернуть “да”, если на диагонали построенной матрицы есть хотя бы одна единица вернуть “нет” А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 39 / 58
  • 119. Анализ алгоритма Лемма Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 — экспонента перемножения матриц (matrix multiplication exponent). А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58
  • 120. Анализ алгоритма Лемма Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 — экспонента перемножения матриц (matrix multiplication exponent). Доказательство А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58
  • 121. Анализ алгоритма Лемма Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 — экспонента перемножения матриц (matrix multiplication exponent). Доказательство важное свойство матрицы смежности: Ak [i, j] есть количество путей длины k из вершины i в вершину j в графе G (легко доказать по индукции) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58
  • 122. Анализ алгоритма Лемма Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 — экспонента перемножения матриц (matrix multiplication exponent). Доказательство важное свойство матрицы смежности: Ak [i, j] есть количество путей длины k из вершины i в вершину j в графе G (легко доказать по индукции) 3-клика — это путь длины 3 из вершину в саму себя А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58
  • 123. Анализ алгоритма Лемма Алгоритм выдает правильный ответ за время O(nw ), где w ≈ 2.376 — экспонента перемножения матриц (matrix multiplication exponent). Доказательство важное свойство матрицы смежности: Ak [i, j] есть количество путей длины k из вершины i в вершину j в графе G (легко доказать по индукции) 3-клика — это путь длины 3 из вершину в саму себя для вычисления A3 требуется два умножения матриц А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 40 / 58
  • 124. Открытые вопросы Открытые вопросы А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58
  • 125. Открытые вопросы Открытые вопросы Придумать более быстрый алгоритм для 3-клики. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58
  • 126. Открытые вопросы Открытые вопросы Придумать более быстрый алгоритм для 3-клики. Является ли 3-клика такой же сложной, как и умножение булевых матриц? А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 41 / 58
  • 127. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 42 / 58
  • 128. Основные идеи Основные идеи сведения задачи о максимальном разрезе к задаче 3-клики Дан граф G на n вершинах. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58
  • 129. Основные идеи Основные идеи сведения задачи о максимальном разрезе к задаче 3-клики Дан граф G на n вершинах. Построим трехдольный граф H на 3 · 2n/3 вершинах со следующим свойством: исходный граф G имеет разрез веса w тогда и только тогда, когда H содержит 3-клику веса w . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58
  • 130. Основные идеи Основные идеи сведения задачи о максимальном разрезе к задаче 3-клики Дан граф G на n вершинах. Построим трехдольный граф H на 3 · 2n/3 вершинах со следующим свойством: исходный граф G имеет разрез веса w тогда и только тогда, когда H содержит 3-клику веса w . Используем быстрое умножение матриц для поиска 3-клики. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58
  • 131. Основные идеи Основные идеи сведения задачи о максимальном разрезе к задаче 3-клики Дан граф G на n вершинах. Построим трехдольный граф H на 3 · 2n/3 вершинах со следующим свойством: исходный граф G имеет разрез веса w тогда и только тогда, когда H содержит 3-клику веса w . Используем быстрое умножение матриц для поиска 3-клики. Сложность: 2wn/3 ≈ 1.732n . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 43 / 58
  • 132. Вспомогательный граф '$ V1 T1 % T2 T3 '$ '$ V2 V3 % % вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 133. Вспомогательный граф '$ V1 /X1 T1 % 1 X r X1 T2 T3 '$ '$ V2 /X2 V3 /X3 r r X2 X3 X X % 2 % 3 вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 134. Вспомогательный граф '$ t V /X 1 1 t X T1 % 1 r X1 T2 T3 '$ '$ t V2 /X2 t V /X r r 3 3 X2 X3 t t % X2 % X3 вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 135. Вспомогательный граф '$ t V /X 1 1 t X T1 % 1 r X1 T2 T3 '$ '$ t V2 /X2 t V /X r r 3 3 X2 X3 t t % X2 % X3 вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 136. Вспомогательный граф '$ t V /X 1 1 t X T1 % 1 r X1 T2 T3 '$ '$ t V2 /X2 t V /X r r 3 3 X2 X3 t t % X2 % X3 вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 137. Вспомогательный граф '$ t V /X 1 1 t X T1 % 1 r X1 T2 T3 '$ '$ t V2 /X2 t V /X r r 3 3 X2 X3 t t % X2 % X3 вспомогательный граф H входной граф G А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 44 / 58
  • 138. Алгоритм Алгоритм Matrix-MAX-CUT(G ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 139. Алгоритм Алгоритм Matrix-MAX-CUT(G ) разбить множество вершин V на три равные части V1 , V2 , V3 А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 140. Алгоритм Алгоритм 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 ) (для остальных пар долей — аналогично) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 141. Алгоритм Алгоритм 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 | А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 142. Алгоритм Алгоритм 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 | оставить только ребра веса wij между долями Ti и Tj А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 143. Алгоритм Алгоритм 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 | оставить только ребра веса wij между долями Ti и Tj проверить, есть ли в модифицированном графе H 3-клика А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 144. Алгоритм Алгоритм 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 | оставить только ребра веса wij между долями Ti и Tj проверить, есть ли в модифицированном графе H 3-клика если да, то в G есть разрез веса w12 + w13 + w23 А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 145. Алгоритм Алгоритм 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 | оставить только ребра веса wij между долями Ti и Tj проверить, есть ли в модифицированном графе H 3-клика если да, то в G есть разрез веса w12 + w13 + w23 вернуть максимальную найденную стоимость разреза А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 45 / 58
  • 146. Открытые вопросы Открытые вопросы А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58
  • 147. Открытые вопросы Открытые вопросы Придумать алгоритм быстрее. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58
  • 148. Открытые вопросы Открытые вопросы Придумать алгоритм быстрее. Придумать алгоритм, работающий за время 1.99n , но полиномиальный по памяти. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 46 / 58
  • 149. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 47 / 58
  • 150. Умный перебор Основная идея Используя свойства конкретной задачи, перебирать кандидатов на решения эффективно. А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 48 / 58
  • 151. План лекции 1 Расщепление Выполнимость (автоматическое доказательство) 2 Случайный порядок перебора Выполнимость 3 Локальный поиск 3-выполнимость k-выполнимость 4 Динамическое программирование Задача о коммивояжере 5 Сведение к простой задаче Сумма подмножества Максимальный разрез 6 Умный перебор 3-раскрашиваемость 7 Случайное сведение к простой задаче 3-раскрашиваемость А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 49 / 58
  • 152. 3-раскрашиваемость Определение Задача 3-раскрашиваемости (3-coloring problem) заключается в проверке, можно ли раскрасить данный граф правильным образом в три цвета (смежные вершины не покрашены в один цвет). А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 50 / 58
  • 153. 3-раскрашиваемость Определение Задача 3-раскрашиваемости (3-coloring problem) заключается в проверке, можно ли раскрасить данный граф правильным образом в три цвета (смежные вершины не покрашены в один цвет). Полный перебор Всего кандидатов на решение — 3n . А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 50 / 58
  • 154. Умный перебор Алгоритм Simple-Clever-Enum(G ) А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58
  • 155. Умный перебор Алгоритм Simple-Clever-Enum(G ) НУО, граф связен А. Куликов (CS клуб при ПОМИ) 13. Подходы к NP-трудным задачам 51 / 58