Алгоритмы для NP-трудных задач
                   Лекция 3: NP-полные задачи

                                         А. Куликов

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




А. Куликов (Computer Science клуб)      3. NP-полные задачи         1 / 42
План лекции




  1   Задачи поиска




А. Куликов (Computer Science клуб)   3. NP-полные задачи   2 / 42
План лекции




  1   Задачи поиска


  2   NP-полные задачи




А. Куликов (Computer Science клуб)   3. NP-полные задачи   2 / 42
План лекции




  1   Задачи поиска


  2   NP-полные задачи


  3   Сведения




А. Куликов (Computer Science клуб)   3. NP-полные задачи   2 / 42
Задачи поиска


 План лекции




  1   Задачи поиска


  2   NP-полные задачи


  3   Сведения




А. Куликов (Computer Science клуб)        3. NP-полные задачи   3 / 42
Задачи поиска


 Эффективные алгоритмы




А. Куликов (Computer Science клуб)        3. NP-полные задачи   4 / 42
Задачи поиска


 Эффективные алгоритмы


        Алгоритмы нахождения кратчайших путей и минимальных
        покрывающих деревьев в графах, паросочетаний в двудольных
        графах, наибольшей возрастающей подпоследовательности,
        максимального потока в сети являются эффективными, поскольку
        время работы каждого из них растет полиномиально (как n, n2 ,
        n3 ) с ростом размера входа.




А. Куликов (Computer Science клуб)        3. NP-полные задачи     4 / 42
Задачи поиска


 Эффективные алгоритмы


        Алгоритмы нахождения кратчайших путей и минимальных
        покрывающих деревьев в графах, паросочетаний в двудольных
        графах, наибольшей возрастающей подпоследовательности,
        максимального потока в сети являются эффективными, поскольку
        время работы каждого из них растет полиномиально (как n, n2 ,
        n3 ) с ростом размера входа.
        В каждой из решаемых ими задач мы ищем решение (путь,
        дерево, паросочетание) среди экспоненциально большого
        множества кандидатов: существует n! различных паросочетаний в
        двудольном n × n графе, у полного графа на n вершинах есть
        nn−2 покрывающих деревьев, в графе, как правило, есть
        экспоненциальное число путей из s в t.


А. Куликов (Computer Science клуб)        3. NP-полные задачи     4 / 42
Задачи поиска


 Эффективные алгоритмы




А. Куликов (Computer Science клуб)        3. NP-полные задачи   5 / 42
Задачи поиска


 Эффективные алгоритмы




        Все эти задачи могут, в принципе, быть решены за
        экспоненциальное время перебором всех кандидатов. Однако
        алгоритм, время работы которого есть 2n или хуже, достаточно
        бесполезен на практике.




А. Куликов (Computer Science клуб)        3. NP-полные задачи      5 / 42
Задачи поиска


 Эффективные алгоритмы




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




А. Куликов (Computer Science клуб)        3. NP-полные задачи      5 / 42
Задачи поиска


 Задача выполнимости




А. Куликов (Computer Science клуб)        3. NP-полные задачи   6 / 42
Задачи поиска


 Задача выполнимости



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

                   (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .




А. Куликов (Computer Science клуб)        3. NP-полные задачи             6 / 42
Задачи поиска


 Задача выполнимости



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

                   (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .


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




А. Куликов (Computer Science клуб)        3. NP-полные задачи             6 / 42
Задачи поиска


 Задача поиска




А. Куликов (Computer Science клуб)        3. NP-полные задачи   7 / 42
Задачи поиска


 Задача поиска


        Задача выполнимости является типичной задачей поиска (search
        problem).




А. Куликов (Computer Science клуб)        3. NP-полные задачи     7 / 42
Задачи поиска


 Задача поиска


        Задача выполнимости является типичной задачей поиска (search
        problem).
        Дано условие (instance) I (то есть некоторые входные данные,
        специфицирующие рассматриваемую задачу; в нашем случае —
        булева формула в КНФ) и требуется найти решение (solution) S
        (объект, удовлетворяющий некоторым условиям; в
        рассматриваемом нами случае — выполняющий набор). Если
        решения не существует, необходимо сообщить об этом.




А. Куликов (Computer Science клуб)        3. NP-полные задачи      7 / 42
Задачи поиска


 Задача поиска


        Задача выполнимости является типичной задачей поиска (search
        problem).
        Дано условие (instance) I (то есть некоторые входные данные,
        специфицирующие рассматриваемую задачу; в нашем случае —
        булева формула в КНФ) и требуется найти решение (solution) S
        (объект, удовлетворяющий некоторым условиям; в
        рассматриваемом нами случае — выполняющий набор). Если
        решения не существует, необходимо сообщить об этом.
        Необходимым свойством задачи поиска является является
        наличие быстрой проверки корректности данного решения S для
        данного условия I .



А. Куликов (Computer Science клуб)        3. NP-полные задачи      7 / 42
Задачи поиска


 Задача поиска




  Будем говорить, что задача поиска задается алгоритмом , который
  получает на вход условие I и кандидата на решение S и работает
  полиномиальное от |I | время. Мы говорим, что S является решением
  для I тогда и только тогда, когда (I , S) = true.




А. Куликов (Computer Science клуб)        3. NP-полные задачи    8 / 42
Задачи поиска


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




А. Куликов (Computer Science клуб)        3. NP-полные задачи   9 / 42
Задачи поиска


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


        В задаче о коммивояжере (traveling salesman problem, TSP) дано n
        вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний
        между ними, а также бюджет b.




А. Куликов (Computer Science клуб)        3. NP-полные задачи           9 / 42
Задачи поиска


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


        В задаче о коммивояжере (traveling salesman problem, TSP) дано n
        вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний
        между ними, а также бюджет b.
        Найти необходимо цикл, проходящий через все вершины ровно по
        одному разу (то есть гамильтонов цикл) и имеющий длину не
        более b, или же сообщить, что такого цикла нет.




А. Куликов (Computer Science клуб)        3. NP-полные задачи           9 / 42
Задачи поиска


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


        В задаче о коммивояжере (traveling salesman problem, TSP) дано n
        вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний
        между ними, а также бюджет b.
        Найти необходимо цикл, проходящий через все вершины ровно по
        одному разу (то есть гамильтонов цикл) и имеющий длину не
        более b, или же сообщить, что такого цикла нет.
        Другими словами, необходимо найти перестановку  (1), . . . ,  (n)
        вершин, такую что

                           d (1), (2) + d (2), (3) + · · · + d (n), (1) ≤ b .




А. Куликов (Computer Science клуб)          3. NP-полные задачи                             9 / 42
Задачи поиска


 Оптимизационные задачи и задачи поиска




А. Куликов (Computer Science клуб)        3. NP-полные задачи   10 / 42
Задачи поиска


 Оптимизационные задачи и задачи поиска




        Почему мы сформулировали задачу о коммивояжере как задачу
        поиска, когда на самом деле это оптимизационная задача?




А. Куликов (Computer Science клуб)        3. NP-полные задачи   10 / 42
Задачи поиска


 Оптимизационные задачи и задачи поиска




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




А. Куликов (Computer Science клуб)        3. NP-полные задачи       10 / 42
Задачи поиска


 Оптимизационные задачи и задачи поиска




        Почему мы сформулировали задачу о коммивояжере как задачу
        поиска, когда на самом деле это оптимизационная задача?
        Переформулировка оптимизационной задачи как задачи поиска не
        меняет ее сложности, поскольку обе версии сводятся друг к другу.
        Имея потенциальное решение для задачи TSP, легко проверить
        свойства “является маршрутом” и “имеет длину не более b”, но
        как проверить свойство “является оптимальным”?




А. Куликов (Computer Science клуб)        3. NP-полные задачи       10 / 42
Задачи поиска


 Задача о коммивояжере и задача о покрывающем дереве




А. Куликов (Computer Science клуб)        3. NP-полные задачи   11 / 42
Задачи поиска


 Задача о коммивояжере и задача о покрывающем дереве


        Задача о минимальном покрывающем дереве: дана матрица
        попарных расстояний и бюджет b и требуется найти дерево T ,
        такое что                ∑︁
                                     dij ≤ b .
                                             (i,j)∈T




А. Куликов (Computer Science клуб)        3. NP-полные задачи         11 / 42
Задачи поиска


 Задача о коммивояжере и задача о покрывающем дереве


        Задача о минимальном покрывающем дереве: дана матрица
        попарных расстояний и бюджет b и требуется найти дерево T ,
        такое что                ∑︁
                                     dij ≤ b .
                                             (i,j)∈T


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




А. Куликов (Computer Science клуб)        3. NP-полные задачи         11 / 42
Задачи поиска


 Задача о коммивояжере и задача о покрывающем дереве


        Задача о минимальном покрывающем дереве: дана матрица
        попарных расстояний и бюджет b и требуется найти дерево T ,
        такое что                ∑︁
                                     dij ≤ b .
                                             (i,j)∈T


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


А. Куликов (Computer Science клуб)        3. NP-полные задачи         11 / 42
Задачи поиска


 Незавсисмое множество, вершинное покрытие и клика




А. Куликов (Computer Science клуб)        3. NP-полные задачи   12 / 42
Задачи поиска


 Незавсисмое множество, вершинное покрытие и клика


        В задаче о независимом множестве (independent set problem) дан
        граф и число g и требуется найти g независимых вершин, то есть
        таких, что никакие две из них не соединены ребром.




А. Куликов (Computer Science клуб)        3. NP-полные задачи     12 / 42
Задачи поиска


 Незавсисмое множество, вершинное покрытие и клика


        В задаче о независимом множестве (independent set problem) дан
        граф и число g и требуется найти g независимых вершин, то есть
        таких, что никакие две из них не соединены ребром.
        В задаче о вершинном покрытии (vertex cover problem) дан граф и
        число b, и требуется найти b вершин, покрывающих все ребра (то
        есть такое множество из b вершин, что для любого ребра хотя бы
        один из его концов содержится в этом множестве).




А. Куликов (Computer Science клуб)        3. NP-полные задачи      12 / 42
Задачи поиска


 Незавсисмое множество, вершинное покрытие и клика


        В задаче о независимом множестве (independent set problem) дан
        граф и число g и требуется найти g независимых вершин, то есть
        таких, что никакие две из них не соединены ребром.
        В задаче о вершинном покрытии (vertex cover problem) дан граф и
        число b, и требуется найти b вершин, покрывающих все ребра (то
        есть такое множество из b вершин, что для любого ребра хотя бы
        один из его концов содержится в этом множестве).
        Задача о клике (clique problem) заключается в нахождении по
        графу и числу g таких g вершин, что любые две из них
        соединены ребром.




А. Куликов (Computer Science клуб)        3. NP-полные задачи         12 / 42
Задачи поиска


 Длиннейший путь




А. Куликов (Computer Science клуб)        3. NP-полные задачи   13 / 42
Задачи поиска


 Длиннейший путь




        Задача о нахождении кратчайшего пути может быть решена
        эффективно, но так ли это для задачи о длиннейшем пути
        (longest path problem)?




А. Куликов (Computer Science клуб)        3. NP-полные задачи    13 / 42
Задачи поиска


 Длиннейший путь




        Задача о нахождении кратчайшего пути может быть решена
        эффективно, но так ли это для задачи о длиннейшем пути
        (longest path problem)?
        В данной задаче нам дан граф с неотрицательными весами на
        ребрах, две его вершины s и t, а также число g .




А. Куликов (Computer Science клуб)        3. NP-полные задачи       13 / 42
Задачи поиска


 Длиннейший путь




        Задача о нахождении кратчайшего пути может быть решена
        эффективно, но так ли это для задачи о длиннейшем пути
        (longest path problem)?
        В данной задаче нам дан граф с неотрицательными весами на
        ребрах, две его вершины s и t, а также число g .
        Найти необходимо простой путь из s в t веса хотя бы g .




А. Куликов (Computer Science клуб)        3. NP-полные задачи       13 / 42
Задачи поиска


 Задача о рюкзаке




А. Куликов (Computer Science клуб)        3. NP-полные задачи   14 / 42
Задачи поиска


 Задача о рюкзаке



        Задача о рюкзаке (knapsack problem): даны объемы
        w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов.
        Также даны общий объем W и число g .




А. Куликов (Computer Science клуб)        3. NP-полные задачи                 14 / 42
Задачи поиска


 Задача о рюкзаке



        Задача о рюкзаке (knapsack problem): даны объемы
        w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов.
        Также даны общий объем W и число g .
        Найти необходимо множество предметов из набора, общий объем
        которых не превышает W , а общая стоимость не менее g .




А. Куликов (Computer Science клуб)        3. NP-полные задачи                 14 / 42
Задачи поиска


 Задача о рюкзаке



        Задача о рюкзаке (knapsack problem): даны объемы
        w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов.
        Также даны общий объем W и число g .
        Найти необходимо множество предметов из набора, общий объем
        которых не превышает W , а общая стоимость не менее g .
        Существует простой алгоритм для задачи о рюкзаке, основанный
        на методе динамического программирования и имеющий время
        работы O(nW ). Данное время работы является экспоненциальным
        от размера входа, поскольку оно включает в себя W , а не log W .




А. Куликов (Computer Science клуб)        3. NP-полные задачи                 14 / 42
Задачи поиска


 Задача об унарном рюкзаке




А. Куликов (Computer Science клуб)        3. NP-полные задачи   15 / 42
Задачи поиска


 Задача об унарном рюкзаке



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




А. Куликов (Computer Science клуб)        3. NP-полные задачи     15 / 42
Задачи поиска


 Задача об унарном рюкзаке



        Допустим, однако, что мы решаем задачу о рюкзаке, в которой
        все числа даются на вход в унарной системе счисления.
        Например, число 12 записывается как IIIIIIIIIIII .




А. Куликов (Computer Science клуб)        3. NP-полные задачи     15 / 42
Задачи поиска


 Задача об унарном рюкзаке



        Допустим, однако, что мы решаем задачу о рюкзаке, в которой
        все числа даются на вход в унарной системе счисления.
        Например, число 12 записывается как IIIIIIIIIIII .
        Конечно же, это неэкономный способ представления целых чисел,
        однако он все же позволяет определить законную задачу поиска,
        которую мы будем называть задачей об унарном рюкзаке (unary
        knapsack).




А. Куликов (Computer Science клуб)        3. NP-полные задачи     15 / 42
Задачи поиска


 Задача об унарном рюкзаке



        Допустим, однако, что мы решаем задачу о рюкзаке, в которой
        все числа даются на вход в унарной системе счисления.
        Например, число 12 записывается как IIIIIIIIIIII .
        Конечно же, это неэкономный способ представления целых чисел,
        однако он все же позволяет определить законную задачу поиска,
        которую мы будем называть задачей об унарном рюкзаке (unary
        knapsack).
        Как видно, данная слегка искусственная задача имеет
        полиномиальный алгоритм.




А. Куликов (Computer Science клуб)        3. NP-полные задачи     15 / 42
Задачи поиска


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




А. Куликов (Computer Science клуб)        3. NP-полные задачи   16 / 42
Задачи поиска


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



        Рассмотрим теперь другую вариацию. Пусть стоимость каждого
        предмета равняется его объему, а общий вес W равен числу g .




А. Куликов (Computer Science клуб)        3. NP-полные задачи     16 / 42
Задачи поиска


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



        Рассмотрим теперь другую вариацию. Пусть стоимость каждого
        предмета равняется его объему, а общий вес W равен числу g .
        Получившаяся задача, известная как задача о сумме
        подмножества (subset sum problem), эквивалентна выбору
        подмножества чисел с общей суммой W из заданного множества
        чисел. Поскольку это частный случай задачи о рюкзаке, данная
        задача не может быть сложнее. Но может ли она решаться за
        полиномиальное время?




А. Куликов (Computer Science клуб)        3. NP-полные задачи     16 / 42
NP-полные задачи


 План лекции




  1   Задачи поиска


  2   NP-полные задачи


  3   Сведения




А. Куликов (Computer Science клуб)           3. NP-полные задачи   17 / 42
NP-полные задачи


 Сложные и простые задачи



        трудные задачи (NP-полные)                             простые задачи (из P)
                        3-SAT                                      2-SAT, Horn SAT
           задача о коммивояжере                         задача о покрывающем дереве
                длиннейший путь                                    кратчайший путь
                задача о рюкзаке                           задача об унарном рюкзаке
    задача о независимом множестве                             задача о независимом
                                                              множестве для деревьев




А. Куликов (Computer Science клуб)           3. NP-полные задачи                       18 / 42
NP-полные задачи


 Сложные и простые задачи




А. Куликов (Computer Science клуб)           3. NP-полные задачи   19 / 42
NP-полные задачи


 Сложные и простые задачи



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




А. Куликов (Computer Science клуб)           3. NP-полные задачи   19 / 42
NP-полные задачи


 Сложные и простые задачи



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




А. Куликов (Computer Science клуб)           3. NP-полные задачи   19 / 42
NP-полные задачи


 Сложные и простые задачи



        Задачи из правого столбца могут быть решены таких методами,
        как динамическое программирование, потоки в сетях, поиск в
        графе, жадные алгоритмы. Эти задачи просты по многим
        различным причинам.
        В свою очередь, все задачи из левого столбца сложны по одной и
        той же причине.
        Все они эквивалентны: как мы увидим, любая из них может быть
        сведена к любой другой из них и обратно.




А. Куликов (Computer Science клуб)           3. NP-полные задачи   19 / 42
NP-полные задачи


 Классы P и NP




А. Куликов (Computer Science клуб)           3. NP-полные задачи   20 / 42
NP-полные задачи


 Классы P и NP




        NP — класс всех задач поиска.




А. Куликов (Computer Science клуб)           3. NP-полные задачи   20 / 42
NP-полные задачи


 Классы P и NP




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




А. Куликов (Computer Science клуб)           3. NP-полные задачи    20 / 42
NP-полные задачи


 Сведения




А. Куликов (Computer Science клуб)           3. NP-полные задачи   21 / 42
NP-полные задачи


 Сведения
        Даже если допустить, что P̸=NP, что можно сказать о задачах из
        левого столбца таблицы? Основываясь на чем, мы полагаем, что
        эти конкретные задачи не имеют эффективных алгоритмов (не
        считая того исторического факта, что многие сильные
        математики безуспешно пытались построить такие алгоритмы)?




А. Куликов (Computer Science клуб)           3. NP-полные задачи   21 / 42
NP-полные задачи


 Сведения
        Даже если допустить, что P̸=NP, что можно сказать о задачах из
        левого столбца таблицы? Основываясь на чем, мы полагаем, что
        эти конкретные задачи не имеют эффективных алгоритмов (не
        считая того исторического факта, что многие сильные
        математики безуспешно пытались построить такие алгоритмы)?
        Это объясняется свед´ниями (reductions), которые переводят одну
                             е
        задачу поиска в другую. Они показывают, что все задачи левого
        столбца в действительности являются в некотором смысле одной
        и той же задачей, за исключением лишь того, что они
        сформулированы в разных терминах.




А. Куликов (Computer Science клуб)           3. NP-полные задачи   21 / 42
NP-полные задачи


 Сведения
        Даже если допустить, что P̸=NP, что можно сказать о задачах из
        левого столбца таблицы? Основываясь на чем, мы полагаем, что
        эти конкретные задачи не имеют эффективных алгоритмов (не
        считая того исторического факта, что многие сильные
        математики безуспешно пытались построить такие алгоритмы)?
        Это объясняется свед´ниями (reductions), которые переводят одну
                             е
        задачу поиска в другую. Они показывают, что все задачи левого
        столбца в действительности являются в некотором смысле одной
        и той же задачей, за исключением лишь того, что они
        сформулированы в разных терминах.
        Более того, используя сведения, мы покажем, что эти задачи
        являются самыми трудными задачами поиска класса NP: если
        для хотя бы одной из них существует полиномиальный алгоритм,
        то полиномиальный алгоритм существует для каждой задачи
        класса NP. Значит, если мы верим в то, что P̸=NP, то все эти
        задачи сложны.
А. Куликов (Computer Science клуб)           3. NP-полные задачи   21 / 42
NP-полные задачи


 Сведения

  Сведением задачи поиска A к задаче поиска B называется пара
  полиномиальных по времени алгоритмов (f , h), где f по любому
  условию I задачи A выдает условие f (I ) задачи B, а h по любому
  решению S для f (I ) выдает решение h(S) для I , см. диаграмму ниже.
  Если у f (I ) нет решения, то его нет и у I . Данные два алгоритма f и h
  могут быть использованы для того, чтобы любой алгоритм для задачи
  B переделать в алгоритм для задачи A.




А. Куликов (Computer Science клуб)           3. NP-полные задачи      22 / 42
NP-полные задачи


 Сведения

  Сведением задачи поиска A к задаче поиска B называется пара
  полиномиальных по времени алгоритмов (f , h), где f по любому
  условию I задачи A выдает условие f (I ) задачи B, а h по любому
  решению S для f (I ) выдает решение h(S) для I , см. диаграмму ниже.
  Если у f (I ) нет решения, то его нет и у I . Данные два алгоритма f и h
  могут быть использованы для того, чтобы любой алгоритм для задачи
  B переделать в алгоритм для задачи A.

                                                          решение S для f (I )
                                                                                  h   решение h(S) для I
    условие I        условие f (I )
                 f                     алгоритм для B
                                                         нет решения для f (I )
                                                                                      нет решения для I




А. Куликов (Computer Science клуб)            3. NP-полные задачи                                     22 / 42
NP-полные задачи


 NP-полные задачи




А. Куликов (Computer Science клуб)           3. NP-полные задачи   23 / 42
NP-полные задачи


 NP-полные задачи




        Задача поиска называется NP-полной (NP-complete), если все
        другие задачи поиска сводятся к ней.




А. Куликов (Computer Science клуб)           3. NP-полные задачи     23 / 42
NP-полные задачи


 NP-полные задачи




        Задача поиска называется NP-полной (NP-complete), если все
        другие задачи поиска сводятся к ней.
        Чтобы задача была NP-полной, с ее помощью должны решаться
        все задачи поиска в мире!




А. Куликов (Computer Science клуб)           3. NP-полные задачи     23 / 42
NP-полные задачи


 NP-полные задачи




        Задача поиска называется NP-полной (NP-complete), если все
        другие задачи поиска сводятся к ней.
        Чтобы задача была NP-полной, с ее помощью должны решаться
        все задачи поиска в мире!
        Поразительно, что такие задачи существуют вообще. И они
        действительно существуют, и правый столбец нашей таблицы
        заполнен наиболее известными такими примерами.




А. Куликов (Computer Science клуб)           3. NP-полные задачи     23 / 42
NP-полные задачи


 Два способа использования сведений

  Задача поиска A сводится к задаче поиска B:




А. Куликов (Computer Science клуб)           3. NP-полные задачи   24 / 42
NP-полные задачи


 Два способа использования сведений

  Задача поиска A сводится к задаче поиска B:
        Мы знаем, как эффективно решать B и хотим использовать это
        знание для решения A.




А. Куликов (Computer Science клуб)           3. NP-полные задачи   24 / 42
NP-полные задачи


 Два способа использования сведений

  Задача поиска A сводится к задаче поиска B:
        Мы знаем, как эффективно решать B и хотим использовать это
        знание для решения A.
        Мы знаем, что A трудна, и используем сведение, чтобы показать,
        что и B трудна.




А. Куликов (Computer Science клуб)           3. NP-полные задачи   24 / 42
NP-полные задачи


 Два способа использования сведений

  Задача поиска A сводится к задаче поиска B:
        Мы знаем, как эффективно решать B и хотим использовать это
        знание для решения A.
        Мы знаем, что A трудна, и используем сведение, чтобы показать,
        что и B трудна.
  Если обозначить сведение от A к B через A → B , то можно сказать,
  что трудность движется в направлении стрелки, в то время как
  эффективные алгоритмы двигаются в обратном направлении. Через
  это распространение мы знаем, что NP-полные задачи трудны: все
  задачи поиска сводятся к ним, и, таким образом, каждая NP-полная
  задача содержит трудность всех задач поиска. Если хотя бы одна
  NP-полная задача принадлежит классу P, то P=NP.


А. Куликов (Computer Science клуб)           3. NP-полные задачи   24 / 42
Сведения


 План лекции




  1   Задачи поиска


  2   NP-полные задачи


  3   Сведения




А. Куликов (Computer Science клуб)   3. NP-полные задачи   25 / 42
Сведения


 Сведения




  Мы построим следующие сведения:


     любая задача из NP → SAT → 3SAT → независимое множество →
                                     вершинное покрытие, клика.




А. Куликов (Computer Science клуб)      3. NP-полные задачи       26 / 42
Сведения


 3-SAT → задача о независимом множестве



  В задаче 3-SAT входом является множество клозов, каждый из
  которых состоит из не более чем трех литералов, например,

                   (¬x ∨ y ∨ ¬z)(x ∨ ¬y ∨ z)(x ∨ y ∨ z)(¬x ∨ ¬y ) ,

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




А. Куликов (Computer Science клуб)   3. NP-полные задачи              27 / 42
Сведения


 Конструкция



  По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о
  независимом множестве следующим образом.




А. Куликов (Computer Science клуб)   3. NP-полные задачи          28 / 42
Сведения


 Конструкция



  По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о
  независимом множестве следующим образом.
        В графе G каждому клозу соответствует треугольник (или просто
        ребро, если клоз состоит из всего двух литералов) с вершинами,
        помеченными литералами из клоза; все пары вершин,
        соответствующих противоположным литералам, соединены.




А. Куликов (Computer Science клуб)   3. NP-полные задачи           28 / 42
Сведения


 Конструкция



  По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о
  независимом множестве следующим образом.
        В графе G каждому клозу соответствует треугольник (или просто
        ребро, если клоз состоит из всего двух литералов) с вершинами,
        помеченными литералами из клоза; все пары вершин,
        соответствующих противоположным литералам, соединены.
        Число g равно количеству клозов.




А. Куликов (Computer Science клуб)   3. NP-полные задачи           28 / 42
Сведения


 Конструкция




                      y                     ¬y                     y       ¬y




             ¬x               ¬z     x               z         x       z   ¬x




                    (¬x ∨ y ∨ ¬z)(x ∨ ¬y ∨ z)(x ∨ y ∨ z)(¬x ∨ ¬y )


А. Куликов (Computer Science клуб)       3. NP-полные задачи                    29 / 42
Сведения


 Анализ




А. Куликов (Computer Science клуб)   3. NP-полные задачи   30 / 42
Сведения


 Анализ




        Построение занимает полиномиальное время.




А. Куликов (Computer Science клуб)   3. NP-полные задачи   30 / 42
Сведения


 Анализ




        Построение занимает полиномиальное время.
        По данному независимому множеству S из g вершин графа G
        можно эффективно восстановить выполняющий истинностный
        набор для I .




А. Куликов (Computer Science клуб)   3. NP-полные задачи          30 / 42
Сведения


 Анализ




        Построение занимает полиномиальное время.
        По данному независимому множеству S из g вершин графа G
        можно эффективно восстановить выполняющий истинностный
        набор для I .
        Если в G нет независимого множества размера g , то формула I
        невыполнима.




А. Куликов (Computer Science клуб)   3. NP-полные задачи           30 / 42
Сведения


 SAT → 3-SAT




А. Куликов (Computer Science клуб)   3. NP-полные задачи   31 / 42
Сведения


 SAT → 3-SAT


        Это интересное и типичное сведение задачи к своему частному
        случаю.




А. Куликов (Computer Science клуб)   3. NP-полные задачи          31 / 42
Сведения


 SAT → 3-SAT


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




А. Куликов (Computer Science клуб)   3. NP-полные задачи           31 / 42
Сведения


 SAT → 3-SAT


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




А. Куликов (Computer Science клуб)   3. NP-полные задачи           31 / 42
Сведения


 Конструкция




А. Куликов (Computer Science клуб)   3. NP-полные задачи   32 / 42
Сведения


 Конструкция



        По данной формуле I в КНФ рассмотрим формулу I , в которой
        каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на
        множество клозов

         (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) ,

        где {yi } суть новые переменные.




А. Куликов (Computer Science клуб)   3. NP-полные задачи                         32 / 42
Сведения


 Конструкция



        По данной формуле I в КНФ рассмотрим формулу I , в которой
        каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на
        множество клозов

         (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) ,

        где {yi } суть новые переменные.
        Обозначим полученную формулу в 3-КНФ через I ′ .




А. Куликов (Computer Science клуб)   3. NP-полные задачи                         32 / 42
Сведения


 Конструкция



        По данной формуле I в КНФ рассмотрим формулу I , в которой
        каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на
        множество клозов

         (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) ,

        где {yi } суть новые переменные.
        Обозначим полученную формулу в 3-КНФ через I ′ .
        Ясно, что формула I ′ строится по I за полиномиальное время.




А. Куликов (Computer Science клуб)   3. NP-полные задачи                         32 / 42
Сведения


 Анализ




А. Куликов (Computer Science клуб)   3. NP-полные задачи   33 / 42
Сведения


 Анализ

        I ′ эквивалентно I в смысле выполнимости, потому что для
        каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak )
        выполнен тогда и только тогда, когда существует набор значений
        переменным {yi }, выполняющий все соответствующие клозы.




А. Куликов (Computer Science клуб)   3. NP-полные задачи           33 / 42
Сведения


 Анализ

        I ′ эквивалентно I в смысле выполнимости, потому что для
        каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak )
        выполнен тогда и только тогда, когда существует набор значений
        переменным {yi }, выполняющий все соответствующие клозы.
        Чтобы увидеть это, предположим сперва, что все эти клозы
        выполнены. Тогда должен быть выполнен и хотя бы один из
        литералов a1 , . . . , ak , ибо в противном случае переменной y1
        должно было бы присвоено значение true, чтобы выполнить
        первый клоз, аналогично с переменной y2 для выполнения
        второго клоза и всеми остальными переменными, и последний
        клоз был бы не выполнен.




А. Куликов (Computer Science клуб)   3. NP-полные задачи             33 / 42
Сведения


 Анализ

        I ′ эквивалентно I в смысле выполнимости, потому что для
        каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak )
        выполнен тогда и только тогда, когда существует набор значений
        переменным {yi }, выполняющий все соответствующие клозы.
        Чтобы увидеть это, предположим сперва, что все эти клозы
        выполнены. Тогда должен быть выполнен и хотя бы один из
        литералов a1 , . . . , ak , ибо в противном случае переменной y1
        должно было бы присвоено значение true, чтобы выполнить
        первый клоз, аналогично с переменной y2 для выполнения
        второго клоза и всеми остальными переменными, и последний
        клоз был бы не выполнен.
        Обратно, если клоз (a1 ∨ a2 ∨ · · · ∨ ak ) выполнен, то для
        некоторого i выполнен литерал ai . Присвоим тогда значение true
        переменным y1 , . . . , yi−2 , а оставшимся присвоим значение false.
        Несложно видеть, что все клозы будут выполнены.
А. Куликов (Computer Science клуб)   3. NP-полные задачи                33 / 42
Сведения


 Задача о независимом множестве →
 задача о вершинном покрытии




А. Куликов (Computer Science клуб)   3. NP-полные задачи   34 / 42
Сведения


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




А. Куликов (Computer Science клуб)   3. NP-полные задачи           34 / 42
Сведения


 Задача о независимом множестве →
 задача о вершинном покрытии
        Некоторые сведения основаны на способе связать две непохожие
        друг на друга задачи, а некоторые просто отражают тот факт, что
        одна задача является переформулировкой другой.
        Чтобы свести задачу о независимом множестве к задаче о
        вершинном покрытии, нужно просто заметить, что множество S
        является вершинным покрытием графа G (V , E ) тогда и только
        тогда, когда оставшиеся вершины, то есть множество S ∖ V ,
        независимы в G .




А. Куликов (Computer Science клуб)   3. NP-полные задачи           34 / 42
Сведения


 Задача о независимом множестве →
 задача о вершинном покрытии
        Некоторые сведения основаны на способе связать две непохожие
        друг на друга задачи, а некоторые просто отражают тот факт, что
        одна задача является переформулировкой другой.
        Чтобы свести задачу о независимом множестве к задаче о
        вершинном покрытии, нужно просто заметить, что множество S
        является вершинным покрытием графа G (V , E ) тогда и только
        тогда, когда оставшиеся вершины, то есть множество S ∖ V ,
        независимы в G .
        Таким образом, чтобы решить задачу о независимом множестве
        для входа (G , g ), нужно просто решить задачу о вершинном
        покрытии для входа (G , |V | − g ). Если такое покрытие
        существует, возьмем все вершины, не принадлежащие ему. Если
        такого покрытия не существует, то у G не существует и
        независимого множества размера g .
А. Куликов (Computer Science клуб)   3. NP-полные задачи           34 / 42
Сведения


 Задача о независимом множестве → задача о клике




А. Куликов (Computer Science клуб)   3. NP-полные задачи   35 / 42
Сведения


 Задача о независимом множестве → задача о клике



        Определим дополнение (complement) графа G (V , E ) как граф
        ¯        ¯        ¯
        G = (V , E ), где E содержит ровно те неупорядоченные пары
        вершин, которые не принадлежат E .




А. Куликов (Computer Science клуб)   3. NP-полные задачи              35 / 42
Сведения


 Задача о независимом множестве → задача о клике



        Определим дополнение (complement) графа G (V , E ) как граф
        ¯        ¯        ¯
        G = (V , E ), где E содержит ровно те неупорядоченные пары
        вершин, которые не принадлежат E .
        Тогда подмножество вершин S является независимым в G тогда и
                                                ¯
        только тогда, когда S является кликой в G . Другими словами, эти
        вершины попарно не соединены в G тогда и только тогда, когда
                                              ¯
        любые две из них соединены ребром в G .




А. Куликов (Computer Science клуб)   3. NP-полные задачи              35 / 42
Сведения


 Задача о независимом множестве → задача о клике



        Определим дополнение (complement) графа G (V , E ) как граф
        ¯        ¯        ¯
        G = (V , E ), где E содержит ровно те неупорядоченные пары
        вершин, которые не принадлежат E .
        Тогда подмножество вершин S является независимым в G тогда и
                                                ¯
        только тогда, когда S является кликой в G . Другими словами, эти
        вершины попарно не соединены в G тогда и только тогда, когда
                                              ¯
        любые две из них соединены ребром в G .
        Таким образом, можно свести задачу о независимом множестве к
                                                                ¯
        задаче о клике, сопоставив каждому входу (G , g ) вход (G , g ).




А. Куликов (Computer Science клуб)   3. NP-полные задачи              35 / 42
Сведения


 Любая задача класса NP → SAT




А. Куликов (Computer Science клуб)   3. NP-полные задачи   36 / 42
Сведения


 Любая задача класса NP → SAT

        Мы уже свели задачу SAT к нескольким задачам. Теперь мы
        замыкаем круг и показываем, что все эти задачи — в
        действительности все задачи класса NP — сводятся к SAT.
        Именно, мы покажем, что все задачи класса NP сводятся к
        обобщению задачи SAT, называемому задачей выполнимости
        булевой схемы (CIRCUIT-SAT).




А. Куликов (Computer Science клуб)   3. NP-полные задачи          36 / 42
Сведения


 Любая задача класса NP → SAT

        Мы уже свели задачу SAT к нескольким задачам. Теперь мы
        замыкаем круг и показываем, что все эти задачи — в
        действительности все задачи класса NP — сводятся к SAT.
        Именно, мы покажем, что все задачи класса NP сводятся к
        обобщению задачи SAT, называемому задачей выполнимости
        булевой схемы (CIRCUIT-SAT).
        В данной задаче на вход дается булева схема (Boolean circuit), то
        есть ориентированный ациклический граф, вершинами которого
        являются гейты (gates) пяти следующих типов:
               гейты AND и OR имеют входящую степень 2;
               гейты NOT имеют входящую степень 1;
               константные входные гейты имеют входящую степень 0 и
               помечены либо true, либо false;
               переменные входные гейты имеют входящую степень 0 и помечены
               “?”.
        Один из стоков графа называется выходным гейтом.
А. Куликов (Computer Science клуб)   3. NP-полные задачи               36 / 42
Сведения


 Пример схемы
                                       выход



                                           AND



                                     NOT                OR



                                     AND          OR             AND



                             true            ?            ?            ?

А. Куликов (Computer Science клуб)         3. NP-полные задачи             37 / 42
Сведения


 Задача выполнимости схемы




А. Куликов (Computer Science клуб)   3. NP-полные задачи   38 / 42
Сведения


 Задача выполнимости схемы



        По данному набору значений переменных входных гейтов мы
        можем вычислять значения в гейтах последовательно в
        топологическом порядке, используя правила булевой логики
        (такие, как false∨true=true), пока не получим значение на
        выходном гейте. Это будет значением схемы на данном наборе
        значений входным переменным.




А. Куликов (Computer Science клуб)   3. NP-полные задачи             38 / 42
Сведения


 Задача выполнимости схемы



        По данному набору значений переменных входных гейтов мы
        можем вычислять значения в гейтах последовательно в
        топологическом порядке, используя правила булевой логики
        (такие, как false∨true=true), пока не получим значение на
        выходном гейте. Это будет значением схемы на данном наборе
        значений входным переменным.
        Задача выполнимости булевой схемы заключается в проверке
        существования значений входных переменных заданной схемы,
        при которых значение схемы есть true.




А. Куликов (Computer Science клуб)   3. NP-полные задачи             38 / 42
Сведения


 SAT ↔ CIRCUIT-SAT




А. Куликов (Computer Science клуб)   3. NP-полные задачи   39 / 42
Сведения


 SAT ↔ CIRCUIT-SAT

        SAT → CIRCUIT-SAT: понятно.




А. Куликов (Computer Science клуб)   3. NP-полные задачи   39 / 42
Сведения


 SAT ↔ CIRCUIT-SAT

        SAT → CIRCUIT-SAT: понятно.
        Обратно: запишем схему в виде формулы в КНФ. Для каждого
        гейта g мы заводим переменную g и моделируем этот гейт
        добавлением клозов следующим образом.
                   гейт g             соответствующие клозы
                   true               (g )
                   false              (¬g )
                   g = h1 OR h2       (g ∨ ¬h1 )(g ∨ ¬h2 )(¬g ∨ h1 ∨ h2 )
                   g = h1 AND h2      (¬g ∨ h1 )(¬g ∨ h2 )(g ∨ ¬h1 ∨ ¬h2 )
                   g = NOT h          (g ∨ h)(¬g ∨ ¬h)
        Наконец, для выходного гейта g мы добавляем клоз (g ), чтобы
        учесть тот факт, что нас интересует набор значений переменных,
        при которых на выходе схемы получается true.
А. Куликов (Computer Science клуб)   3. NP-полные задачи                     39 / 42
Сведения


 Сведение




А. Куликов (Computer Science клуб)   3. NP-полные задачи   40 / 42
Сведения


 Сведение

        Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы
        возвращаемся к нашей основной задаче — показать, что все
        задачи поиска сводятся к CIRCUIT SAT.




А. Куликов (Computer Science клуб)   3. NP-полные задачи         40 / 42
Сведения


 Сведение

        Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы
        возвращаемся к нашей основной задаче — показать, что все
        задачи поиска сводятся к CIRCUIT SAT.
        Итак, предположим, что задача A принадлежит классу NP. Мы
        должны построить сведение A к CIRCUIT-SAT. Это кажется
        довольно сложным, поскольку мы не знаем практически ничего
        про A.




А. Куликов (Computer Science клуб)   3. NP-полные задачи         40 / 42
Сведения


 Сведение

        Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы
        возвращаемся к нашей основной задаче — показать, что все
        задачи поиска сводятся к CIRCUIT SAT.
        Итак, предположим, что задача A принадлежит классу NP. Мы
        должны построить сведение A к CIRCUIT-SAT. Это кажется
        довольно сложным, поскольку мы не знаем практически ничего
        про A.
        Всё, что мы знаем про A, это то, что A является задачей поиска,
        поэтому мы должны это как-то использовать. Основное свойство
        задачи поиска заключается в том, что любое решение может быть
        быстро проверено: существует алгоритм , который по входу I и
        кандидату на решение S проверяет, действительно ли S является
        решением I . Более того,  делает это за полиномиальное время
        от длины записи I (можно считать, что S дано как битовая строка
        длины, ограниченной полиномом от длины I ).
А. Куликов (Computer Science клуб)   3. NP-полные задачи           40 / 42
Сведения


 Преобразование алгоритма в схему




А. Куликов (Computer Science клуб)   3. NP-полные задачи   41 / 42
Сведения


 Преобразование алгоритма в схему

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




А. Куликов (Computer Science клуб)   3. NP-полные задачи         41 / 42
Сведения


 Преобразование алгоритма в схему

        Каждый алгоритм может быть преобразован в схему (точнее, в
        семейство схем), входные переменные гейты которой кодируют
        вход алгоритма.
        Размер каждой такой схемы будет полиномиальным от
        количества входных переменных гейтов. Если исходный алгоритм
        решает задачу, ответ на которую есть один бит информации (так
        и есть в ситуации с : “является ли S решением для I ”), то этот
        ответ будет выдаваться на выходном гейте схемы.




А. Куликов (Computer Science клуб)   3. NP-полные задачи              41 / 42
Сведения


 Преобразование алгоритма в схему

        Каждый алгоритм может быть преобразован в схему (точнее, в
        семейство схем), входные переменные гейты которой кодируют
        вход алгоритма.
        Размер каждой такой схемы будет полиномиальным от
        количества входных переменных гейтов. Если исходный алгоритм
        решает задачу, ответ на которую есть один бит информации (так
        и есть в ситуации с : “является ли S решением для I ”), то этот
        ответ будет выдаваться на выходном гейте схемы.
        Итак, по данному входу I задачи A мы строим за полиномиальное
        время схему, известными входными гейтами которой являются
        биты I , а неизвестными — биты S, такую что выход схемы равен
        true тогда и только тогда, когда переменные входные гейты схемы
        содержат решение S условия I . Другими словами, выполняющие
        наборы схемы находятся во взаимно-однозначном соответствии с
        решениями условия I задачи A. Сведение завершено.
А. Куликов (Computer Science клуб)   3. NP-полные задачи             41 / 42
Сведения




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




А. Куликов (Computer Science клуб)   3. NP-полные задачи   42 / 42

20091025 algorithmsfornphardproblems kulikov_lecture03

  • 1.
    Алгоритмы для NP-трудныхзадач Лекция 3: NP-полные задачи А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (Computer Science клуб) 3. NP-полные задачи 1 / 42
  • 2.
    План лекции 1 Задачи поиска А. Куликов (Computer Science клуб) 3. NP-полные задачи 2 / 42
  • 3.
    План лекции 1 Задачи поиска 2 NP-полные задачи А. Куликов (Computer Science клуб) 3. NP-полные задачи 2 / 42
  • 4.
    План лекции 1 Задачи поиска 2 NP-полные задачи 3 Сведения А. Куликов (Computer Science клуб) 3. NP-полные задачи 2 / 42
  • 5.
    Задачи поиска Планлекции 1 Задачи поиска 2 NP-полные задачи 3 Сведения А. Куликов (Computer Science клуб) 3. NP-полные задачи 3 / 42
  • 6.
    Задачи поиска Эффективныеалгоритмы А. Куликов (Computer Science клуб) 3. NP-полные задачи 4 / 42
  • 7.
    Задачи поиска Эффективныеалгоритмы Алгоритмы нахождения кратчайших путей и минимальных покрывающих деревьев в графах, паросочетаний в двудольных графах, наибольшей возрастающей подпоследовательности, максимального потока в сети являются эффективными, поскольку время работы каждого из них растет полиномиально (как n, n2 , n3 ) с ростом размера входа. А. Куликов (Computer Science клуб) 3. NP-полные задачи 4 / 42
  • 8.
    Задачи поиска Эффективныеалгоритмы Алгоритмы нахождения кратчайших путей и минимальных покрывающих деревьев в графах, паросочетаний в двудольных графах, наибольшей возрастающей подпоследовательности, максимального потока в сети являются эффективными, поскольку время работы каждого из них растет полиномиально (как n, n2 , n3 ) с ростом размера входа. В каждой из решаемых ими задач мы ищем решение (путь, дерево, паросочетание) среди экспоненциально большого множества кандидатов: существует n! различных паросочетаний в двудольном n × n графе, у полного графа на n вершинах есть nn−2 покрывающих деревьев, в графе, как правило, есть экспоненциальное число путей из s в t. А. Куликов (Computer Science клуб) 3. NP-полные задачи 4 / 42
  • 9.
    Задачи поиска Эффективныеалгоритмы А. Куликов (Computer Science клуб) 3. NP-полные задачи 5 / 42
  • 10.
    Задачи поиска Эффективныеалгоритмы Все эти задачи могут, в принципе, быть решены за экспоненциальное время перебором всех кандидатов. Однако алгоритм, время работы которого есть 2n или хуже, достаточно бесполезен на практике. А. Куликов (Computer Science клуб) 3. NP-полные задачи 5 / 42
  • 11.
    Задачи поиска Эффективныеалгоритмы Все эти задачи могут, в принципе, быть решены за экспоненциальное время перебором всех кандидатов. Однако алгоритм, время работы которого есть 2n или хуже, достаточно бесполезен на практике. Задачей эффективного алгоритма, таким образом, является нахождение способов избежать полного перебора всех кандидатов. А. Куликов (Computer Science клуб) 3. NP-полные задачи 5 / 42
  • 12.
    Задачи поиска Задачавыполнимости А. Куликов (Computer Science клуб) 3. NP-полные задачи 6 / 42
  • 13.
    Задачи поиска Задачавыполнимости Вход задачи пропозициональной выполнимости (satisfiability problem, SAT) выглядит следующим образом: (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) . А. Куликов (Computer Science клуб) 3. NP-полные задачи 6 / 42
  • 14.
    Задачи поиска Задачавыполнимости Вход задачи пропозициональной выполнимости (satisfiability problem, SAT) выглядит следующим образом: (x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) . Задача пропозициональной выполнимости заключается в проверке существования выполняющего набора у заданной формулы. А. Куликов (Computer Science клуб) 3. NP-полные задачи 6 / 42
  • 15.
    Задачи поиска Задачапоиска А. Куликов (Computer Science клуб) 3. NP-полные задачи 7 / 42
  • 16.
    Задачи поиска Задачапоиска Задача выполнимости является типичной задачей поиска (search problem). А. Куликов (Computer Science клуб) 3. NP-полные задачи 7 / 42
  • 17.
    Задачи поиска Задачапоиска Задача выполнимости является типичной задачей поиска (search problem). Дано условие (instance) I (то есть некоторые входные данные, специфицирующие рассматриваемую задачу; в нашем случае — булева формула в КНФ) и требуется найти решение (solution) S (объект, удовлетворяющий некоторым условиям; в рассматриваемом нами случае — выполняющий набор). Если решения не существует, необходимо сообщить об этом. А. Куликов (Computer Science клуб) 3. NP-полные задачи 7 / 42
  • 18.
    Задачи поиска Задачапоиска Задача выполнимости является типичной задачей поиска (search problem). Дано условие (instance) I (то есть некоторые входные данные, специфицирующие рассматриваемую задачу; в нашем случае — булева формула в КНФ) и требуется найти решение (solution) S (объект, удовлетворяющий некоторым условиям; в рассматриваемом нами случае — выполняющий набор). Если решения не существует, необходимо сообщить об этом. Необходимым свойством задачи поиска является является наличие быстрой проверки корректности данного решения S для данного условия I . А. Куликов (Computer Science клуб) 3. NP-полные задачи 7 / 42
  • 19.
    Задачи поиска Задачапоиска Будем говорить, что задача поиска задается алгоритмом , который получает на вход условие I и кандидата на решение S и работает полиномиальное от |I | время. Мы говорим, что S является решением для I тогда и только тогда, когда (I , S) = true. А. Куликов (Computer Science клуб) 3. NP-полные задачи 8 / 42
  • 20.
    Задачи поиска Задачао коммивояжере А. Куликов (Computer Science клуб) 3. NP-полные задачи 9 / 42
  • 21.
    Задачи поиска Задачао коммивояжере В задаче о коммивояжере (traveling salesman problem, TSP) дано n вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний между ними, а также бюджет b. А. Куликов (Computer Science клуб) 3. NP-полные задачи 9 / 42
  • 22.
    Задачи поиска Задачао коммивояжере В задаче о коммивояжере (traveling salesman problem, TSP) дано n вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний между ними, а также бюджет b. Найти необходимо цикл, проходящий через все вершины ровно по одному разу (то есть гамильтонов цикл) и имеющий длину не более b, или же сообщить, что такого цикла нет. А. Куликов (Computer Science клуб) 3. NP-полные задачи 9 / 42
  • 23.
    Задачи поиска Задачао коммивояжере В задаче о коммивояжере (traveling salesman problem, TSP) дано n вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных расстояний между ними, а также бюджет b. Найти необходимо цикл, проходящий через все вершины ровно по одному разу (то есть гамильтонов цикл) и имеющий длину не более b, или же сообщить, что такого цикла нет. Другими словами, необходимо найти перестановку (1), . . . , (n) вершин, такую что d (1), (2) + d (2), (3) + · · · + d (n), (1) ≤ b . А. Куликов (Computer Science клуб) 3. NP-полные задачи 9 / 42
  • 24.
    Задачи поиска Оптимизационныезадачи и задачи поиска А. Куликов (Computer Science клуб) 3. NP-полные задачи 10 / 42
  • 25.
    Задачи поиска Оптимизационныезадачи и задачи поиска Почему мы сформулировали задачу о коммивояжере как задачу поиска, когда на самом деле это оптимизационная задача? А. Куликов (Computer Science клуб) 3. NP-полные задачи 10 / 42
  • 26.
    Задачи поиска Оптимизационныезадачи и задачи поиска Почему мы сформулировали задачу о коммивояжере как задачу поиска, когда на самом деле это оптимизационная задача? Переформулировка оптимизационной задачи как задачи поиска не меняет ее сложности, поскольку обе версии сводятся друг к другу. А. Куликов (Computer Science клуб) 3. NP-полные задачи 10 / 42
  • 27.
    Задачи поиска Оптимизационныезадачи и задачи поиска Почему мы сформулировали задачу о коммивояжере как задачу поиска, когда на самом деле это оптимизационная задача? Переформулировка оптимизационной задачи как задачи поиска не меняет ее сложности, поскольку обе версии сводятся друг к другу. Имея потенциальное решение для задачи TSP, легко проверить свойства “является маршрутом” и “имеет длину не более b”, но как проверить свойство “является оптимальным”? А. Куликов (Computer Science клуб) 3. NP-полные задачи 10 / 42
  • 28.
    Задачи поиска Задачао коммивояжере и задача о покрывающем дереве А. Куликов (Computer Science клуб) 3. NP-полные задачи 11 / 42
  • 29.
    Задачи поиска Задачао коммивояжере и задача о покрывающем дереве Задача о минимальном покрывающем дереве: дана матрица попарных расстояний и бюджет b и требуется найти дерево T , такое что ∑︁ dij ≤ b . (i,j)∈T А. Куликов (Computer Science клуб) 3. NP-полные задачи 11 / 42
  • 30.
    Задачи поиска Задачао коммивояжере и задача о покрывающем дереве Задача о минимальном покрывающем дереве: дана матрица попарных расстояний и бюджет b и требуется найти дерево T , такое что ∑︁ dij ≤ b . (i,j)∈T Задача о коммивояжере может рассматриваться как вариант задачи о покрывающем дереве, где искомому дереву не разрешается ветвиться и оно, таким образом, должно быть просто путем. А. Куликов (Computer Science клуб) 3. NP-полные задачи 11 / 42
  • 31.
    Задачи поиска Задачао коммивояжере и задача о покрывающем дереве Задача о минимальном покрывающем дереве: дана матрица попарных расстояний и бюджет b и требуется найти дерево T , такое что ∑︁ dij ≤ b . (i,j)∈T Задача о коммивояжере может рассматриваться как вариант задачи о покрывающем дереве, где искомому дереву не разрешается ветвиться и оно, таким образом, должно быть просто путем. Это дополнительное условие на структуру дерева делает задачу гораздо более сложной. А. Куликов (Computer Science клуб) 3. NP-полные задачи 11 / 42
  • 32.
    Задачи поиска Незавсисмоемножество, вершинное покрытие и клика А. Куликов (Computer Science клуб) 3. NP-полные задачи 12 / 42
  • 33.
    Задачи поиска Незавсисмоемножество, вершинное покрытие и клика В задаче о независимом множестве (independent set problem) дан граф и число g и требуется найти g независимых вершин, то есть таких, что никакие две из них не соединены ребром. А. Куликов (Computer Science клуб) 3. NP-полные задачи 12 / 42
  • 34.
    Задачи поиска Незавсисмоемножество, вершинное покрытие и клика В задаче о независимом множестве (independent set problem) дан граф и число g и требуется найти g независимых вершин, то есть таких, что никакие две из них не соединены ребром. В задаче о вершинном покрытии (vertex cover problem) дан граф и число b, и требуется найти b вершин, покрывающих все ребра (то есть такое множество из b вершин, что для любого ребра хотя бы один из его концов содержится в этом множестве). А. Куликов (Computer Science клуб) 3. NP-полные задачи 12 / 42
  • 35.
    Задачи поиска Незавсисмоемножество, вершинное покрытие и клика В задаче о независимом множестве (independent set problem) дан граф и число g и требуется найти g независимых вершин, то есть таких, что никакие две из них не соединены ребром. В задаче о вершинном покрытии (vertex cover problem) дан граф и число b, и требуется найти b вершин, покрывающих все ребра (то есть такое множество из b вершин, что для любого ребра хотя бы один из его концов содержится в этом множестве). Задача о клике (clique problem) заключается в нахождении по графу и числу g таких g вершин, что любые две из них соединены ребром. А. Куликов (Computer Science клуб) 3. NP-полные задачи 12 / 42
  • 36.
    Задачи поиска Длиннейшийпуть А. Куликов (Computer Science клуб) 3. NP-полные задачи 13 / 42
  • 37.
    Задачи поиска Длиннейшийпуть Задача о нахождении кратчайшего пути может быть решена эффективно, но так ли это для задачи о длиннейшем пути (longest path problem)? А. Куликов (Computer Science клуб) 3. NP-полные задачи 13 / 42
  • 38.
    Задачи поиска Длиннейшийпуть Задача о нахождении кратчайшего пути может быть решена эффективно, но так ли это для задачи о длиннейшем пути (longest path problem)? В данной задаче нам дан граф с неотрицательными весами на ребрах, две его вершины s и t, а также число g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 13 / 42
  • 39.
    Задачи поиска Длиннейшийпуть Задача о нахождении кратчайшего пути может быть решена эффективно, но так ли это для задачи о длиннейшем пути (longest path problem)? В данной задаче нам дан граф с неотрицательными весами на ребрах, две его вершины s и t, а также число g . Найти необходимо простой путь из s в t веса хотя бы g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 13 / 42
  • 40.
    Задачи поиска Задачао рюкзаке А. Куликов (Computer Science клуб) 3. NP-полные задачи 14 / 42
  • 41.
    Задачи поиска Задачао рюкзаке Задача о рюкзаке (knapsack problem): даны объемы w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов. Также даны общий объем W и число g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 14 / 42
  • 42.
    Задачи поиска Задачао рюкзаке Задача о рюкзаке (knapsack problem): даны объемы w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов. Также даны общий объем W и число g . Найти необходимо множество предметов из набора, общий объем которых не превышает W , а общая стоимость не менее g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 14 / 42
  • 43.
    Задачи поиска Задачао рюкзаке Задача о рюкзаке (knapsack problem): даны объемы w1 , . . . , wn ∈ N и стоимости v1 , . . . , vn ∈ N набора из n предметов. Также даны общий объем W и число g . Найти необходимо множество предметов из набора, общий объем которых не превышает W , а общая стоимость не менее g . Существует простой алгоритм для задачи о рюкзаке, основанный на методе динамического программирования и имеющий время работы O(nW ). Данное время работы является экспоненциальным от размера входа, поскольку оно включает в себя W , а не log W . А. Куликов (Computer Science клуб) 3. NP-полные задачи 14 / 42
  • 44.
    Задачи поиска Задачаоб унарном рюкзаке А. Куликов (Computer Science клуб) 3. NP-полные задачи 15 / 42
  • 45.
    Задачи поиска Задачаоб унарном рюкзаке Допустим, однако, что мы решаем задачу о рюкзаке, в которой все числа даются на вход в унарной системе счисления. А. Куликов (Computer Science клуб) 3. NP-полные задачи 15 / 42
  • 46.
    Задачи поиска Задачаоб унарном рюкзаке Допустим, однако, что мы решаем задачу о рюкзаке, в которой все числа даются на вход в унарной системе счисления. Например, число 12 записывается как IIIIIIIIIIII . А. Куликов (Computer Science клуб) 3. NP-полные задачи 15 / 42
  • 47.
    Задачи поиска Задачаоб унарном рюкзаке Допустим, однако, что мы решаем задачу о рюкзаке, в которой все числа даются на вход в унарной системе счисления. Например, число 12 записывается как IIIIIIIIIIII . Конечно же, это неэкономный способ представления целых чисел, однако он все же позволяет определить законную задачу поиска, которую мы будем называть задачей об унарном рюкзаке (unary knapsack). А. Куликов (Computer Science клуб) 3. NP-полные задачи 15 / 42
  • 48.
    Задачи поиска Задачаоб унарном рюкзаке Допустим, однако, что мы решаем задачу о рюкзаке, в которой все числа даются на вход в унарной системе счисления. Например, число 12 записывается как IIIIIIIIIIII . Конечно же, это неэкономный способ представления целых чисел, однако он все же позволяет определить законную задачу поиска, которую мы будем называть задачей об унарном рюкзаке (unary knapsack). Как видно, данная слегка искусственная задача имеет полиномиальный алгоритм. А. Куликов (Computer Science клуб) 3. NP-полные задачи 15 / 42
  • 49.
    Задачи поиска Задачао сумме подмножества А. Куликов (Computer Science клуб) 3. NP-полные задачи 16 / 42
  • 50.
    Задачи поиска Задачао сумме подмножества Рассмотрим теперь другую вариацию. Пусть стоимость каждого предмета равняется его объему, а общий вес W равен числу g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 16 / 42
  • 51.
    Задачи поиска Задачао сумме подмножества Рассмотрим теперь другую вариацию. Пусть стоимость каждого предмета равняется его объему, а общий вес W равен числу g . Получившаяся задача, известная как задача о сумме подмножества (subset sum problem), эквивалентна выбору подмножества чисел с общей суммой W из заданного множества чисел. Поскольку это частный случай задачи о рюкзаке, данная задача не может быть сложнее. Но может ли она решаться за полиномиальное время? А. Куликов (Computer Science клуб) 3. NP-полные задачи 16 / 42
  • 52.
    NP-полные задачи Планлекции 1 Задачи поиска 2 NP-полные задачи 3 Сведения А. Куликов (Computer Science клуб) 3. NP-полные задачи 17 / 42
  • 53.
    NP-полные задачи Сложныеи простые задачи трудные задачи (NP-полные) простые задачи (из P) 3-SAT 2-SAT, Horn SAT задача о коммивояжере задача о покрывающем дереве длиннейший путь кратчайший путь задача о рюкзаке задача об унарном рюкзаке задача о независимом множестве задача о независимом множестве для деревьев А. Куликов (Computer Science клуб) 3. NP-полные задачи 18 / 42
  • 54.
    NP-полные задачи Сложныеи простые задачи А. Куликов (Computer Science клуб) 3. NP-полные задачи 19 / 42
  • 55.
    NP-полные задачи Сложныеи простые задачи Задачи из правого столбца могут быть решены таких методами, как динамическое программирование, потоки в сетях, поиск в графе, жадные алгоритмы. Эти задачи просты по многим различным причинам. А. Куликов (Computer Science клуб) 3. NP-полные задачи 19 / 42
  • 56.
    NP-полные задачи Сложныеи простые задачи Задачи из правого столбца могут быть решены таких методами, как динамическое программирование, потоки в сетях, поиск в графе, жадные алгоритмы. Эти задачи просты по многим различным причинам. В свою очередь, все задачи из левого столбца сложны по одной и той же причине. А. Куликов (Computer Science клуб) 3. NP-полные задачи 19 / 42
  • 57.
    NP-полные задачи Сложныеи простые задачи Задачи из правого столбца могут быть решены таких методами, как динамическое программирование, потоки в сетях, поиск в графе, жадные алгоритмы. Эти задачи просты по многим различным причинам. В свою очередь, все задачи из левого столбца сложны по одной и той же причине. Все они эквивалентны: как мы увидим, любая из них может быть сведена к любой другой из них и обратно. А. Куликов (Computer Science клуб) 3. NP-полные задачи 19 / 42
  • 58.
    NP-полные задачи КлассыP и NP А. Куликов (Computer Science клуб) 3. NP-полные задачи 20 / 42
  • 59.
    NP-полные задачи КлассыP и NP NP — класс всех задач поиска. А. Куликов (Computer Science клуб) 3. NP-полные задачи 20 / 42
  • 60.
    NP-полные задачи КлассыP и NP NP — класс всех задач поиска. P — класс всех задач поиска, которые могут быть решены за полиномиальное время. А. Куликов (Computer Science клуб) 3. NP-полные задачи 20 / 42
  • 61.
    NP-полные задачи Сведения А.Куликов (Computer Science клуб) 3. NP-полные задачи 21 / 42
  • 62.
    NP-полные задачи Сведения Даже если допустить, что P̸=NP, что можно сказать о задачах из левого столбца таблицы? Основываясь на чем, мы полагаем, что эти конкретные задачи не имеют эффективных алгоритмов (не считая того исторического факта, что многие сильные математики безуспешно пытались построить такие алгоритмы)? А. Куликов (Computer Science клуб) 3. NP-полные задачи 21 / 42
  • 63.
    NP-полные задачи Сведения Даже если допустить, что P̸=NP, что можно сказать о задачах из левого столбца таблицы? Основываясь на чем, мы полагаем, что эти конкретные задачи не имеют эффективных алгоритмов (не считая того исторического факта, что многие сильные математики безуспешно пытались построить такие алгоритмы)? Это объясняется свед´ниями (reductions), которые переводят одну е задачу поиска в другую. Они показывают, что все задачи левого столбца в действительности являются в некотором смысле одной и той же задачей, за исключением лишь того, что они сформулированы в разных терминах. А. Куликов (Computer Science клуб) 3. NP-полные задачи 21 / 42
  • 64.
    NP-полные задачи Сведения Даже если допустить, что P̸=NP, что можно сказать о задачах из левого столбца таблицы? Основываясь на чем, мы полагаем, что эти конкретные задачи не имеют эффективных алгоритмов (не считая того исторического факта, что многие сильные математики безуспешно пытались построить такие алгоритмы)? Это объясняется свед´ниями (reductions), которые переводят одну е задачу поиска в другую. Они показывают, что все задачи левого столбца в действительности являются в некотором смысле одной и той же задачей, за исключением лишь того, что они сформулированы в разных терминах. Более того, используя сведения, мы покажем, что эти задачи являются самыми трудными задачами поиска класса NP: если для хотя бы одной из них существует полиномиальный алгоритм, то полиномиальный алгоритм существует для каждой задачи класса NP. Значит, если мы верим в то, что P̸=NP, то все эти задачи сложны. А. Куликов (Computer Science клуб) 3. NP-полные задачи 21 / 42
  • 65.
    NP-полные задачи Сведения Сведением задачи поиска A к задаче поиска B называется пара полиномиальных по времени алгоритмов (f , h), где f по любому условию I задачи A выдает условие f (I ) задачи B, а h по любому решению S для f (I ) выдает решение h(S) для I , см. диаграмму ниже. Если у f (I ) нет решения, то его нет и у I . Данные два алгоритма f и h могут быть использованы для того, чтобы любой алгоритм для задачи B переделать в алгоритм для задачи A. А. Куликов (Computer Science клуб) 3. NP-полные задачи 22 / 42
  • 66.
    NP-полные задачи Сведения Сведением задачи поиска A к задаче поиска B называется пара полиномиальных по времени алгоритмов (f , h), где f по любому условию I задачи A выдает условие f (I ) задачи B, а h по любому решению S для f (I ) выдает решение h(S) для I , см. диаграмму ниже. Если у f (I ) нет решения, то его нет и у I . Данные два алгоритма f и h могут быть использованы для того, чтобы любой алгоритм для задачи B переделать в алгоритм для задачи A. решение S для f (I ) h решение h(S) для I условие I условие f (I ) f алгоритм для B нет решения для f (I ) нет решения для I А. Куликов (Computer Science клуб) 3. NP-полные задачи 22 / 42
  • 67.
    NP-полные задачи NP-полныезадачи А. Куликов (Computer Science клуб) 3. NP-полные задачи 23 / 42
  • 68.
    NP-полные задачи NP-полныезадачи Задача поиска называется NP-полной (NP-complete), если все другие задачи поиска сводятся к ней. А. Куликов (Computer Science клуб) 3. NP-полные задачи 23 / 42
  • 69.
    NP-полные задачи NP-полныезадачи Задача поиска называется NP-полной (NP-complete), если все другие задачи поиска сводятся к ней. Чтобы задача была NP-полной, с ее помощью должны решаться все задачи поиска в мире! А. Куликов (Computer Science клуб) 3. NP-полные задачи 23 / 42
  • 70.
    NP-полные задачи NP-полныезадачи Задача поиска называется NP-полной (NP-complete), если все другие задачи поиска сводятся к ней. Чтобы задача была NP-полной, с ее помощью должны решаться все задачи поиска в мире! Поразительно, что такие задачи существуют вообще. И они действительно существуют, и правый столбец нашей таблицы заполнен наиболее известными такими примерами. А. Куликов (Computer Science клуб) 3. NP-полные задачи 23 / 42
  • 71.
    NP-полные задачи Дваспособа использования сведений Задача поиска A сводится к задаче поиска B: А. Куликов (Computer Science клуб) 3. NP-полные задачи 24 / 42
  • 72.
    NP-полные задачи Дваспособа использования сведений Задача поиска A сводится к задаче поиска B: Мы знаем, как эффективно решать B и хотим использовать это знание для решения A. А. Куликов (Computer Science клуб) 3. NP-полные задачи 24 / 42
  • 73.
    NP-полные задачи Дваспособа использования сведений Задача поиска A сводится к задаче поиска B: Мы знаем, как эффективно решать B и хотим использовать это знание для решения A. Мы знаем, что A трудна, и используем сведение, чтобы показать, что и B трудна. А. Куликов (Computer Science клуб) 3. NP-полные задачи 24 / 42
  • 74.
    NP-полные задачи Дваспособа использования сведений Задача поиска A сводится к задаче поиска B: Мы знаем, как эффективно решать B и хотим использовать это знание для решения A. Мы знаем, что A трудна, и используем сведение, чтобы показать, что и B трудна. Если обозначить сведение от A к B через A → B , то можно сказать, что трудность движется в направлении стрелки, в то время как эффективные алгоритмы двигаются в обратном направлении. Через это распространение мы знаем, что NP-полные задачи трудны: все задачи поиска сводятся к ним, и, таким образом, каждая NP-полная задача содержит трудность всех задач поиска. Если хотя бы одна NP-полная задача принадлежит классу P, то P=NP. А. Куликов (Computer Science клуб) 3. NP-полные задачи 24 / 42
  • 75.
    Сведения План лекции 1 Задачи поиска 2 NP-полные задачи 3 Сведения А. Куликов (Computer Science клуб) 3. NP-полные задачи 25 / 42
  • 76.
    Сведения Сведения Мы построим следующие сведения: любая задача из NP → SAT → 3SAT → независимое множество → вершинное покрытие, клика. А. Куликов (Computer Science клуб) 3. NP-полные задачи 26 / 42
  • 77.
    Сведения 3-SAT →задача о независимом множестве В задаче 3-SAT входом является множество клозов, каждый из которых состоит из не более чем трех литералов, например, (¬x ∨ y ∨ ¬z)(x ∨ ¬y ∨ z)(x ∨ y ∨ z)(¬x ∨ ¬y ) , и найти необходимо выполняющий набор. В задаче о независимом множестве даны граф и число g и найти необходимо g попарно не соединенных ребрами вершин. Мы, таким образом, должны как-то связать булеву логику с графами. А. Куликов (Computer Science клуб) 3. NP-полные задачи 27 / 42
  • 78.
    Сведения Конструкция По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о независимом множестве следующим образом. А. Куликов (Computer Science клуб) 3. NP-полные задачи 28 / 42
  • 79.
    Сведения Конструкция По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о независимом множестве следующим образом. В графе G каждому клозу соответствует треугольник (или просто ребро, если клоз состоит из всего двух литералов) с вершинами, помеченными литералами из клоза; все пары вершин, соответствующих противоположным литералам, соединены. А. Куликов (Computer Science клуб) 3. NP-полные задачи 28 / 42
  • 80.
    Сведения Конструкция По данной формуле I задачи 3-SAT мы строим вход (G , g ) задачи о независимом множестве следующим образом. В графе G каждому клозу соответствует треугольник (или просто ребро, если клоз состоит из всего двух литералов) с вершинами, помеченными литералами из клоза; все пары вершин, соответствующих противоположным литералам, соединены. Число g равно количеству клозов. А. Куликов (Computer Science клуб) 3. NP-полные задачи 28 / 42
  • 81.
    Сведения Конструкция y ¬y y ¬y ¬x ¬z x z x z ¬x (¬x ∨ y ∨ ¬z)(x ∨ ¬y ∨ z)(x ∨ y ∨ z)(¬x ∨ ¬y ) А. Куликов (Computer Science клуб) 3. NP-полные задачи 29 / 42
  • 82.
    Сведения Анализ А. Куликов(Computer Science клуб) 3. NP-полные задачи 30 / 42
  • 83.
    Сведения Анализ Построение занимает полиномиальное время. А. Куликов (Computer Science клуб) 3. NP-полные задачи 30 / 42
  • 84.
    Сведения Анализ Построение занимает полиномиальное время. По данному независимому множеству S из g вершин графа G можно эффективно восстановить выполняющий истинностный набор для I . А. Куликов (Computer Science клуб) 3. NP-полные задачи 30 / 42
  • 85.
    Сведения Анализ Построение занимает полиномиальное время. По данному независимому множеству S из g вершин графа G можно эффективно восстановить выполняющий истинностный набор для I . Если в G нет независимого множества размера g , то формула I невыполнима. А. Куликов (Computer Science клуб) 3. NP-полные задачи 30 / 42
  • 86.
    Сведения SAT →3-SAT А. Куликов (Computer Science клуб) 3. NP-полные задачи 31 / 42
  • 87.
    Сведения SAT →3-SAT Это интересное и типичное сведение задачи к своему частному случаю. А. Куликов (Computer Science клуб) 3. NP-полные задачи 31 / 42
  • 88.
    Сведения SAT →3-SAT Это интересное и типичное сведение задачи к своему частному случаю. Мы хотим показать, что задача остается сложной, даже если ее входы как-то ограничены — в нашем случае, если все клозы содержат не более трех литералов. А. Куликов (Computer Science клуб) 3. NP-полные задачи 31 / 42
  • 89.
    Сведения SAT →3-SAT Это интересное и типичное сведение задачи к своему частному случаю. Мы хотим показать, что задача остается сложной, даже если ее входы как-то ограничены — в нашем случае, если все клозы содержат не более трех литералов. Такие сведения модифицируют входное условие так, чтобы избавиться от запрещенных конфигураций (клозов длины хотя бы четыре), не меняя при этом условия в том смысле, что решение для исходного условия можно построить из решения для полученного условия. А. Куликов (Computer Science клуб) 3. NP-полные задачи 31 / 42
  • 90.
    Сведения Конструкция А. Куликов(Computer Science клуб) 3. NP-полные задачи 32 / 42
  • 91.
    Сведения Конструкция По данной формуле I в КНФ рассмотрим формулу I , в которой каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на множество клозов (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) , где {yi } суть новые переменные. А. Куликов (Computer Science клуб) 3. NP-полные задачи 32 / 42
  • 92.
    Сведения Конструкция По данной формуле I в КНФ рассмотрим формулу I , в которой каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на множество клозов (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) , где {yi } суть новые переменные. Обозначим полученную формулу в 3-КНФ через I ′ . А. Куликов (Computer Science клуб) 3. NP-полные задачи 32 / 42
  • 93.
    Сведения Конструкция По данной формуле I в КНФ рассмотрим формулу I , в которой каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на множество клозов (a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) , где {yi } суть новые переменные. Обозначим полученную формулу в 3-КНФ через I ′ . Ясно, что формула I ′ строится по I за полиномиальное время. А. Куликов (Computer Science клуб) 3. NP-полные задачи 32 / 42
  • 94.
    Сведения Анализ А. Куликов(Computer Science клуб) 3. NP-полные задачи 33 / 42
  • 95.
    Сведения Анализ I ′ эквивалентно I в смысле выполнимости, потому что для каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak ) выполнен тогда и только тогда, когда существует набор значений переменным {yi }, выполняющий все соответствующие клозы. А. Куликов (Computer Science клуб) 3. NP-полные задачи 33 / 42
  • 96.
    Сведения Анализ I ′ эквивалентно I в смысле выполнимости, потому что для каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak ) выполнен тогда и только тогда, когда существует набор значений переменным {yi }, выполняющий все соответствующие клозы. Чтобы увидеть это, предположим сперва, что все эти клозы выполнены. Тогда должен быть выполнен и хотя бы один из литералов a1 , . . . , ak , ибо в противном случае переменной y1 должно было бы присвоено значение true, чтобы выполнить первый клоз, аналогично с переменной y2 для выполнения второго клоза и всеми остальными переменными, и последний клоз был бы не выполнен. А. Куликов (Computer Science клуб) 3. NP-полные задачи 33 / 42
  • 97.
    Сведения Анализ I ′ эквивалентно I в смысле выполнимости, потому что для каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak ) выполнен тогда и только тогда, когда существует набор значений переменным {yi }, выполняющий все соответствующие клозы. Чтобы увидеть это, предположим сперва, что все эти клозы выполнены. Тогда должен быть выполнен и хотя бы один из литералов a1 , . . . , ak , ибо в противном случае переменной y1 должно было бы присвоено значение true, чтобы выполнить первый клоз, аналогично с переменной y2 для выполнения второго клоза и всеми остальными переменными, и последний клоз был бы не выполнен. Обратно, если клоз (a1 ∨ a2 ∨ · · · ∨ ak ) выполнен, то для некоторого i выполнен литерал ai . Присвоим тогда значение true переменным y1 , . . . , yi−2 , а оставшимся присвоим значение false. Несложно видеть, что все клозы будут выполнены. А. Куликов (Computer Science клуб) 3. NP-полные задачи 33 / 42
  • 98.
    Сведения Задача онезависимом множестве → задача о вершинном покрытии А. Куликов (Computer Science клуб) 3. NP-полные задачи 34 / 42
  • 99.
    Сведения Задача онезависимом множестве → задача о вершинном покрытии Некоторые сведения основаны на способе связать две непохожие друг на друга задачи, а некоторые просто отражают тот факт, что одна задача является переформулировкой другой. А. Куликов (Computer Science клуб) 3. NP-полные задачи 34 / 42
  • 100.
    Сведения Задача онезависимом множестве → задача о вершинном покрытии Некоторые сведения основаны на способе связать две непохожие друг на друга задачи, а некоторые просто отражают тот факт, что одна задача является переформулировкой другой. Чтобы свести задачу о независимом множестве к задаче о вершинном покрытии, нужно просто заметить, что множество S является вершинным покрытием графа G (V , E ) тогда и только тогда, когда оставшиеся вершины, то есть множество S ∖ V , независимы в G . А. Куликов (Computer Science клуб) 3. NP-полные задачи 34 / 42
  • 101.
    Сведения Задача онезависимом множестве → задача о вершинном покрытии Некоторые сведения основаны на способе связать две непохожие друг на друга задачи, а некоторые просто отражают тот факт, что одна задача является переформулировкой другой. Чтобы свести задачу о независимом множестве к задаче о вершинном покрытии, нужно просто заметить, что множество S является вершинным покрытием графа G (V , E ) тогда и только тогда, когда оставшиеся вершины, то есть множество S ∖ V , независимы в G . Таким образом, чтобы решить задачу о независимом множестве для входа (G , g ), нужно просто решить задачу о вершинном покрытии для входа (G , |V | − g ). Если такое покрытие существует, возьмем все вершины, не принадлежащие ему. Если такого покрытия не существует, то у G не существует и независимого множества размера g . А. Куликов (Computer Science клуб) 3. NP-полные задачи 34 / 42
  • 102.
    Сведения Задача онезависимом множестве → задача о клике А. Куликов (Computer Science клуб) 3. NP-полные задачи 35 / 42
  • 103.
    Сведения Задача онезависимом множестве → задача о клике Определим дополнение (complement) графа G (V , E ) как граф ¯ ¯ ¯ G = (V , E ), где E содержит ровно те неупорядоченные пары вершин, которые не принадлежат E . А. Куликов (Computer Science клуб) 3. NP-полные задачи 35 / 42
  • 104.
    Сведения Задача онезависимом множестве → задача о клике Определим дополнение (complement) графа G (V , E ) как граф ¯ ¯ ¯ G = (V , E ), где E содержит ровно те неупорядоченные пары вершин, которые не принадлежат E . Тогда подмножество вершин S является независимым в G тогда и ¯ только тогда, когда S является кликой в G . Другими словами, эти вершины попарно не соединены в G тогда и только тогда, когда ¯ любые две из них соединены ребром в G . А. Куликов (Computer Science клуб) 3. NP-полные задачи 35 / 42
  • 105.
    Сведения Задача онезависимом множестве → задача о клике Определим дополнение (complement) графа G (V , E ) как граф ¯ ¯ ¯ G = (V , E ), где E содержит ровно те неупорядоченные пары вершин, которые не принадлежат E . Тогда подмножество вершин S является независимым в G тогда и ¯ только тогда, когда S является кликой в G . Другими словами, эти вершины попарно не соединены в G тогда и только тогда, когда ¯ любые две из них соединены ребром в G . Таким образом, можно свести задачу о независимом множестве к ¯ задаче о клике, сопоставив каждому входу (G , g ) вход (G , g ). А. Куликов (Computer Science клуб) 3. NP-полные задачи 35 / 42
  • 106.
    Сведения Любая задачакласса NP → SAT А. Куликов (Computer Science клуб) 3. NP-полные задачи 36 / 42
  • 107.
    Сведения Любая задачакласса NP → SAT Мы уже свели задачу SAT к нескольким задачам. Теперь мы замыкаем круг и показываем, что все эти задачи — в действительности все задачи класса NP — сводятся к SAT. Именно, мы покажем, что все задачи класса NP сводятся к обобщению задачи SAT, называемому задачей выполнимости булевой схемы (CIRCUIT-SAT). А. Куликов (Computer Science клуб) 3. NP-полные задачи 36 / 42
  • 108.
    Сведения Любая задачакласса NP → SAT Мы уже свели задачу SAT к нескольким задачам. Теперь мы замыкаем круг и показываем, что все эти задачи — в действительности все задачи класса NP — сводятся к SAT. Именно, мы покажем, что все задачи класса NP сводятся к обобщению задачи SAT, называемому задачей выполнимости булевой схемы (CIRCUIT-SAT). В данной задаче на вход дается булева схема (Boolean circuit), то есть ориентированный ациклический граф, вершинами которого являются гейты (gates) пяти следующих типов: гейты AND и OR имеют входящую степень 2; гейты NOT имеют входящую степень 1; константные входные гейты имеют входящую степень 0 и помечены либо true, либо false; переменные входные гейты имеют входящую степень 0 и помечены “?”. Один из стоков графа называется выходным гейтом. А. Куликов (Computer Science клуб) 3. NP-полные задачи 36 / 42
  • 109.
    Сведения Пример схемы выход AND NOT OR AND OR AND true ? ? ? А. Куликов (Computer Science клуб) 3. NP-полные задачи 37 / 42
  • 110.
    Сведения Задача выполнимостисхемы А. Куликов (Computer Science клуб) 3. NP-полные задачи 38 / 42
  • 111.
    Сведения Задача выполнимостисхемы По данному набору значений переменных входных гейтов мы можем вычислять значения в гейтах последовательно в топологическом порядке, используя правила булевой логики (такие, как false∨true=true), пока не получим значение на выходном гейте. Это будет значением схемы на данном наборе значений входным переменным. А. Куликов (Computer Science клуб) 3. NP-полные задачи 38 / 42
  • 112.
    Сведения Задача выполнимостисхемы По данному набору значений переменных входных гейтов мы можем вычислять значения в гейтах последовательно в топологическом порядке, используя правила булевой логики (такие, как false∨true=true), пока не получим значение на выходном гейте. Это будет значением схемы на данном наборе значений входным переменным. Задача выполнимости булевой схемы заключается в проверке существования значений входных переменных заданной схемы, при которых значение схемы есть true. А. Куликов (Computer Science клуб) 3. NP-полные задачи 38 / 42
  • 113.
    Сведения SAT ↔CIRCUIT-SAT А. Куликов (Computer Science клуб) 3. NP-полные задачи 39 / 42
  • 114.
    Сведения SAT ↔CIRCUIT-SAT SAT → CIRCUIT-SAT: понятно. А. Куликов (Computer Science клуб) 3. NP-полные задачи 39 / 42
  • 115.
    Сведения SAT ↔CIRCUIT-SAT SAT → CIRCUIT-SAT: понятно. Обратно: запишем схему в виде формулы в КНФ. Для каждого гейта g мы заводим переменную g и моделируем этот гейт добавлением клозов следующим образом. гейт g соответствующие клозы true (g ) false (¬g ) g = h1 OR h2 (g ∨ ¬h1 )(g ∨ ¬h2 )(¬g ∨ h1 ∨ h2 ) g = h1 AND h2 (¬g ∨ h1 )(¬g ∨ h2 )(g ∨ ¬h1 ∨ ¬h2 ) g = NOT h (g ∨ h)(¬g ∨ ¬h) Наконец, для выходного гейта g мы добавляем клоз (g ), чтобы учесть тот факт, что нас интересует набор значений переменных, при которых на выходе схемы получается true. А. Куликов (Computer Science клуб) 3. NP-полные задачи 39 / 42
  • 116.
    Сведения Сведение А. Куликов(Computer Science клуб) 3. NP-полные задачи 40 / 42
  • 117.
    Сведения Сведение Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы возвращаемся к нашей основной задаче — показать, что все задачи поиска сводятся к CIRCUIT SAT. А. Куликов (Computer Science клуб) 3. NP-полные задачи 40 / 42
  • 118.
    Сведения Сведение Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы возвращаемся к нашей основной задаче — показать, что все задачи поиска сводятся к CIRCUIT SAT. Итак, предположим, что задача A принадлежит классу NP. Мы должны построить сведение A к CIRCUIT-SAT. Это кажется довольно сложным, поскольку мы не знаем практически ничего про A. А. Куликов (Computer Science клуб) 3. NP-полные задачи 40 / 42
  • 119.
    Сведения Сведение Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT, мы возвращаемся к нашей основной задаче — показать, что все задачи поиска сводятся к CIRCUIT SAT. Итак, предположим, что задача A принадлежит классу NP. Мы должны построить сведение A к CIRCUIT-SAT. Это кажется довольно сложным, поскольку мы не знаем практически ничего про A. Всё, что мы знаем про A, это то, что A является задачей поиска, поэтому мы должны это как-то использовать. Основное свойство задачи поиска заключается в том, что любое решение может быть быстро проверено: существует алгоритм , который по входу I и кандидату на решение S проверяет, действительно ли S является решением I . Более того, делает это за полиномиальное время от длины записи I (можно считать, что S дано как битовая строка длины, ограниченной полиномом от длины I ). А. Куликов (Computer Science клуб) 3. NP-полные задачи 40 / 42
  • 120.
    Сведения Преобразование алгоритмав схему А. Куликов (Computer Science клуб) 3. NP-полные задачи 41 / 42
  • 121.
    Сведения Преобразование алгоритмав схему Каждый алгоритм может быть преобразован в схему (точнее, в семейство схем), входные переменные гейты которой кодируют вход алгоритма. А. Куликов (Computer Science клуб) 3. NP-полные задачи 41 / 42
  • 122.
    Сведения Преобразование алгоритмав схему Каждый алгоритм может быть преобразован в схему (точнее, в семейство схем), входные переменные гейты которой кодируют вход алгоритма. Размер каждой такой схемы будет полиномиальным от количества входных переменных гейтов. Если исходный алгоритм решает задачу, ответ на которую есть один бит информации (так и есть в ситуации с : “является ли S решением для I ”), то этот ответ будет выдаваться на выходном гейте схемы. А. Куликов (Computer Science клуб) 3. NP-полные задачи 41 / 42
  • 123.
    Сведения Преобразование алгоритмав схему Каждый алгоритм может быть преобразован в схему (точнее, в семейство схем), входные переменные гейты которой кодируют вход алгоритма. Размер каждой такой схемы будет полиномиальным от количества входных переменных гейтов. Если исходный алгоритм решает задачу, ответ на которую есть один бит информации (так и есть в ситуации с : “является ли S решением для I ”), то этот ответ будет выдаваться на выходном гейте схемы. Итак, по данному входу I задачи A мы строим за полиномиальное время схему, известными входными гейтами которой являются биты I , а неизвестными — биты S, такую что выход схемы равен true тогда и только тогда, когда переменные входные гейты схемы содержат решение S условия I . Другими словами, выполняющие наборы схемы находятся во взаимно-однозначном соответствии с решениями условия I задачи A. Сведение завершено. А. Куликов (Computer Science клуб) 3. NP-полные задачи 41 / 42
  • 124.
    Сведения Спасибо за внимание! А. Куликов (Computer Science клуб) 3. NP-полные задачи 42 / 42