SlideShare a Scribd company logo
1 of 77
Download to read offline
Алгоритмы для NP-трудных задач
                Лекция 10: Точные и FPT-алгоритмы

                                          А. Куликов

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




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы     1 / 28
План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы   2 / 28
План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы   2 / 28
План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы   2 / 28
Формула включений-исключений


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы   3 / 28
Формула включений-исключений


 Формула включений-исключений
  Лемма
  Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
          —
  f (X ) = Y ⊆X g (Y ). Тогда
                                            ∑︁
                                 g (X ) =          (−1)|X −Y | f (Y ) .
                                            Y ⊆X




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы           4 / 28
Формула включений-исключений


 Формула включений-исключений
  Лемма
  Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
          —
  f (X ) = Y ⊆X g (Y ). Тогда
                                            ∑︁
                                 g (X ) =          (−1)|X −Y | f (Y ) .
                                            Y ⊆X


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

           ∑︁                                ∑︁ ∑︁
                 (−1)|X −Y | f (Y ) =                     (−1)|X −Y | g (Z ) =
          Y ⊆X                               Y ⊆X Z ⊆Y
                                             ∑︁               ∑︁
                                      =             g (Z )             (−1)|X −Y | = g (X )
                                             Z ⊆X            Z ⊆Y ⊆X

  (последняя сумма равна 1, если Z = X , и нулю иначе).
А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               4 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  5 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  6 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути


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




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  6 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути


        Формулировка задачи: необходимо проверить, есть ли в данном
        графе простой путь, проходящий через все вершины,
        начинающийся в заданной вершине s и заканчивающийся в
        заданной вершине t.
        Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не
        обязательно простых! путь может проходить по некоторым
        вершинам несколько раз, а по некоторым вообще не проходить)
        длины n − 1 из s в t, проходящих только по вершинам множества
        X.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  6 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути


        Формулировка задачи: необходимо проверить, есть ли в данном
        графе простой путь, проходящий через все вершины,
        начинающийся в заданной вершине s и заканчивающийся в
        заданной вершине t.
        Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не
        обязательно простых! путь может проходить по некоторым
        вершинам несколько раз, а по некоторым вообще не проходить)
        длины n − 1 из s в t, проходящих только по вершинам множества
        X.
        Нетрудно видеть, что значение g (X ) содержится в строке s и
        столбце t матрицы An−1 , где A — матрица смежности графа G [X ].



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  6 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути (продолжение)




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  7 / 28
Формула включений-исключений   Задача о гамильтоновом пути


 Задача о гамильтоновом пути (продолжение)



        Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
        проходящих по всем вершинам множества X . В частности, f (V )
        есть количество гамильтоновых путей из s в t.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                  7 / 28
Формула включений-исключений       Задача о гамильтоновом пути


 Задача о гамильтоновом пути (продолжение)



        Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
        проходящих по всем вершинам множества X . В частности, f (V )
        есть количество гамильтоновых путей из s в t.
        Тогда                                   ∑︁
                                     f (V ) =          (−1)|V −Y | g (Y ) .
                                                Y ⊆V




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                    7 / 28
Формула включений-исключений       Задача о гамильтоновом пути


 Задача о гамильтоновом пути (продолжение)



        Пусть теперь f (X ) есть количество путей длины n − 1 из s в t,
        проходящих по всем вершинам множества X . В частности, f (V )
        есть количество гамильтоновых путей из s в t.
        Тогда                                   ∑︁
                                     f (V ) =          (−1)|V −Y | g (Y ) .
                                                Y ⊆V


        Таким образом, количество гамильтоновых путей в графе может
        быть найдено за время O * (2n ) и полиномиальную память.




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                    7 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                                8 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Задача о количестве совершенных паросочетаний




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                                9 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Задача о количестве совершенных паросочетаний



        Совершенным паросочетанием (perfect matching) графа
        G = (V , E ) называется множество из n/2 ребер, содержащее
        каждую вершину графа ровно один раз.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                                9 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Задача о количестве совершенных паросочетаний



        Совершенным паросочетанием (perfect matching) графа
        G = (V , E ) называется множество из n/2 ребер, содержащее
        каждую вершину графа ровно один раз.
        Максимальное по размеру паросочетание в графе может быть
        найдено за полиномиальное время.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                                9 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Задача о количестве совершенных паросочетаний



        Совершенным паросочетанием (perfect matching) графа
        G = (V , E ) называется множество из n/2 ребер, содержащее
        каждую вершину графа ровно один раз.
        Максимальное по размеру паросочетание в графе может быть
        найдено за полиномиальное время.
        Мы рассмотрим задачу нахождения количества совершенных
        паросочетаний графа. Наивный алгоритм требует времени
        O * (2m ).




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                                9 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Алгоритм




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               10 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Алгоритм



        Пусть f (Y ) есть количество способов покрыть все вершины Y ,
        используя ровно n/2 ребер.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               10 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Алгоритм



        Пусть f (Y ) есть количество способов покрыть все вершины Y ,
        используя ровно n/2 ребер.
        Тогда f (V ) — количество совершенных паросочетаний.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               10 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Алгоритм



        Пусть f (Y ) есть количество способов покрыть все вершины Y ,
        используя ровно n/2 ребер.
        Тогда f (V ) — количество совершенных паросочетаний.
        Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер
        графа, все концы которых принадлежат множеству Y (но при
        этом не обязательно покрывают все множество Y ).




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               10 / 28
Формула включений-исключений   Задача о количестве совершенных паросочетаний


 Алгоритм



        Пусть f (Y ) есть количество способов покрыть все вершины Y ,
        используя ровно n/2 ребер.
        Тогда f (V ) — количество совершенных паросочетаний.
        Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер
        графа, все концы которых принадлежат множеству Y (но при
        этом не обязательно покрывают все множество Y ).
        Поскольку для данного Y вычислить g (Y ) легко, получаем
        алгоритм, находящий за время O * (2n ) количество совершенных
        паросочетаний в графе.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы                               10 / 28
Формула включений-исключений   Случай двудольного графа


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               11 / 28
Формула включений-исключений   Случай двудольного графа


 Задача о количестве совершенных паросочетаний в
 двудольном графе




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               12 / 28
Формула включений-исключений   Случай двудольного графа


 Задача о количестве совершенных паросочетаний в
 двудольном графе



        Для двудольных графов алгоритм можно ускорить.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               12 / 28
Формула включений-исключений   Случай двудольного графа


 Задача о количестве совершенных паросочетаний в
 двудольном графе



        Для двудольных графов алгоритм можно ускорить.
        Пусть V = L ∪ R и |L| = |R| = n/2.




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               12 / 28
Формула включений-исключений   Случай двудольного графа


 Задача о количестве совершенных паросочетаний в
 двудольном графе



        Для двудольных графов алгоритм можно ускорить.
        Пусть V = L ∪ R и |L| = |R| = n/2.
        Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество
        способов выбрать n/2 ребер, используя все вершиын L и
        некоторые вершины из Y .




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               12 / 28
Формула включений-исключений   Случай двудольного графа


 Задача о количестве совершенных паросочетаний в
 двудольном графе



        Для двудольных графов алгоритм можно ускорить.
        Пусть V = L ∪ R и |L| = |R| = n/2.
        Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество
        способов выбрать n/2 ребер, используя все вершиын L и
        некоторые вершины из Y .
        Время работы будет O * (2n/2 ).




А. Куликов (Computer Science клуб)   10. Точные и FPT-алгоритмы               12 / 28
Формула включений-исключений       Случай двудольного графа


 Пример




   знак X          1       2     3     4      5       6       7      8     9     10   11   12

     +      ∅
     − {1}

     − {2}

     − {3}

     + {1, 3}


А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                               13 / 28
Сведение к простой задаче


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы   14 / 28
Сведение к простой задаче   Задача о сумме подмножества


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    15 / 28
Сведение к простой задаче   Задача о сумме подмножества


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



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




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    16 / 28
Сведение к простой задаче   Задача о сумме подмножества


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



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

  Замечание
  Очевидный перебор требует времени 2n .




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    16 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.
        Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
        наличие числа B − S в массиве.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.
        Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
        наличие числа B − S в массиве.

  Замечание




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.
        Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
        наличие числа B − S в массиве.

  Замечание
        Время работы — O * (2n/2 ).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.
        Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
        наличие числа B − S в массиве.

  Замечание
        Время работы — O * (2n/2 ).
        Быстрее алгоритма неизвестно.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задача о сумме подмножества


 Лучший известный алгоритм

  Алгоритм
        Запишем в массив размера 2n/2 все возможные суммы чисел
        среди {b1 , . . . , bn/2 }.
        Отсортируем полученный массив.
        Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском
        наличие числа B − S в массиве.

  Замечание
        Время работы — O * (2n/2 ).
        Быстрее алгоритма неизвестно.
        Неизвестно и алгоритма, который бы работал быстрее чем 2n и
        использовал лишь полиномиальную память.


А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                    17 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             18 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о табличной сумме

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




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             19 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о табличной сумме

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

  Замечание




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             19 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о табличной сумме

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

  Замечание
        Очевидный перебор работает mk .




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             19 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о табличной сумме

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

  Замечание
        Очевидный перебор работает mk .
        В алгоритме выше мы использовали алгоритм, решающий задачу
        о табличной 2-сумме за время O(m log m).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             19 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о табличной сумме

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

  Замечание
        Очевидный перебор работает mk .
        В алгоритме выше мы использовали алгоритм, решающий задачу
        о табличной 2-сумме за время O(m log m).
        Этот же алгоритм можно использовать для решения задачи о
        табличной k-сумме за время O(m⌈k/2⌉ log m) и память O(m⌈k/2⌉ ).


А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             19 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о 3-сумме

  Определение
  В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
  число S и требуется проверить, можно ли из них выбрать k так, чтобы
  их сумма равнялась S.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             20 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о 3-сумме

  Определение
  В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
  число S и требуется проверить, можно ли из них выбрать k так, чтобы
  их сумма равнялась S.

  Факт




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             20 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о 3-сумме

  Определение
  В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
  число S и требуется проверить, можно ли из них выбрать k так, чтобы
  их сумма равнялась S.

  Факт
     Существует алгоритм, решающий задачу о 3-сумме за время
     O(m2 ).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             20 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Задача о 3-сумме

  Определение
  В задаче о k-сумме (k-sum problem) даны m натуральных чисел и
  число S и требуется проверить, можно ли из них выбрать k так, чтобы
  их сумма равнялась S.

  Факт
     Существует алгоритм, решающий задачу о 3-сумме за время
     O(m2 ).
        Известно большое количество геометрических задач, для каждой
        из которых лучший известный алгоритм работает квадратичное
        время и каждая из которых, содержит задачу о 3-сумме, как
        частный случай, и этот частный случай интуитивно
        представляется самым трудным.

А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             20 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Пример геометрической задачи




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             21 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Пример геометрической задачи



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




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             21 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Пример геометрической задачи



        Пусть даны m точек на плоскости и требуется проверить, лежат
        ли какие-нибудь три из них на одной прямой.
        Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2
        являются корни уравнения x 3 − Sx 2 − ax − b = 0.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             21 / 28
Сведение к простой задаче   Задачи о k-сумме и табличной k-сумме


 Пример геометрической задачи



        Пусть даны m точек на плоскости и требуется проверить, лежат
        ли какие-нибудь три из них на одной прямой.
        Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2
        являются корни уравнения x 3 − Sx 2 − ax − b = 0.
        Значит, множество точек (a1 , f (a1 )), . . . , (am , f (am )) содержит три
        точки (ax , f (ax )), (ay , f (ay )), (az , f (az )) на одной прямой тогда и
        только тогда, когда ax + ay + az = S.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                             21 / 28
Алгебраизация


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы   22 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 План лекции


  1   Формула включений-исключений
       Задача о гамильтоновом пути
       Задача о количестве совершенных паросочетаний
       Задача о количестве совершенных паросочетаний в двудольном
       графе

  2   Сведение к простой задаче
        Задача о сумме подмножества
        Задачи о k-сумме и табличной k-сумме

  3   Алгебраизация
        Задача максимальной 2-выполнимости



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          23 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Алгебраизация




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          24 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Алгебраизация



        Для набора значений переменным формулы
        t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
        выполненных клозов данной формулы в 2-КНФ.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          24 / 28
Алгебраизация    Задача максимальной 2-выполнимости


 Алгебраизация



        Для набора значений переменным формулы
        t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
        выполненных клозов данной формулы в 2-КНФ.
        Пусть                                          ∑︁
                                       G (w ) =                 w N(t) .
                                                     t∈{0,1}n




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                           24 / 28
Алгебраизация    Задача максимальной 2-выполнимости


 Алгебраизация



        Для набора значений переменным формулы
        t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество
        выполненных клозов данной формулы в 2-КНФ.
        Пусть                                          ∑︁
                                       G (w ) =                 w N(t) .
                                                     t∈{0,1}n


        Нас, таким образом, интересует степень этого многочлена.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                           24 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Построение матриц




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          25 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Построение матриц


        Разобьем переменные формулы на три часта A, B, C размера n/3.




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          25 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Построение матриц


        Разобьем переменные формулы на три часта A, B, C размера n/3.
        Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 ,

                            N(t) = NC (a, b) + NB (a, c) + NA (b, c) ,

        где NC (a, b) есть количество клозов, которые не зависят от
        переменных множества C и выполнены наборами a, b (оставшиеся
        два слагаемых определяются аналогично).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          25 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Построение матриц


        Разобьем переменные формулы на три часта A, B, C размера n/3.
        Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 ,

                            N(t) = NC (a, b) + NB (a, c) + NA (b, c) ,

        где NC (a, b) есть количество клозов, которые не зависят от
        переменных множества C и выполнены наборами a, b (оставшиеся
        два слагаемых определяются аналогично).
        Определим матрицы NC , NB , NA размера 2n/3 × 2n/3 следующим
                           w    w    w

        образом:

         NC (a, b) = w NC (a,b) ,
          w
                                        NB (b, c) = w NB (b,c) ,
                                         w                              w
                                                                       NC (a, b) = w NC (a,b) .



А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                           25 / 28
Алгебраизация    Задача максимальной 2-выполнимости


 Вычисление многочлена


                                     ∑︁
                    G (w ) =                 w NC (a,b)+NB (a,c)+NA (b,c) =
                                     a,b,c




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                           26 / 28
Алгебраизация     Задача максимальной 2-выполнимости


 Вычисление многочлена


                                     ∑︁
                    G (w ) =                 w NC (a,b)+NB (a,c)+NA (b,c) =
                                     a,b,c
                                     ∑︁
                              =              w NC (a,b) w NB (a,c) w NA (b,c) =
                                     a,b,c




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                            26 / 28
Алгебраизация       Задача максимальной 2-выполнимости


 Вычисление многочлена


                                     ∑︁
                    G (w ) =                 w NC (a,b)+NB (a,c)+NA (b,c) =
                                     a,b,c
                                     ∑︁
                              =              w NC (a,b) w NB (a,c) w NA (b,c) =
                                     a,b,c
                                     ∑︁                   ∑︁
                              =              w NB (a,c)        w NC (a,b) w NA (b,c) =
                                     a,c                  b




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                              26 / 28
Алгебраизация       Задача максимальной 2-выполнимости


 Вычисление многочлена


                                     ∑︁
                    G (w ) =                 w NC (a,b)+NB (a,c)+NA (b,c) =
                                     a,b,c
                                     ∑︁
                              =              w NC (a,b) w NB (a,c) w NA (b,c) =
                                     a,b,c
                                     ∑︁                   ∑︁
                              =              w NB (a,c)        w NC (a,b) w NA (b,c) =
                                     a,c                  b
                                     ∑︁
                                              w         w w
                              =              NB (a, c)(NC NA )(a, c) .
                                     a,c




А. Куликов (Computer Science клуб)     10. Точные и FPT-алгоритмы                              26 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Итог




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          27 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Итог




        Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 )
        памяти (������ ≈ 2.38 — экспонента умножения матриц).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          27 / 28
Алгебраизация   Задача максимальной 2-выполнимости


 Итог




        Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 )
        памяти (������ ≈ 2.38 — экспонента умножения матриц).
        Это лучше полного перебора по времени, но гораздо хуже по
        памяти (time-space tradeoff).




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          27 / 28
Алгебраизация   Задача максимальной 2-выполнимости




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




А. Куликов (Computer Science клуб)    10. Точные и FPT-алгоритмы                          28 / 28

More Related Content

What's hot

Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureAndrei Poliakov
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06Computer Science Club
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10Computer Science Club
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal GeometrySSA KPI
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11Computer Science Club
 
20100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture0320100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture03Computer Science Club
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04Computer Science Club
 
20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikovComputer Science Club
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
20081012 structuralcomplexitytheory lecture03-04
20081012 structuralcomplexitytheory lecture03-0420081012 structuralcomplexitytheory lecture03-04
20081012 structuralcomplexitytheory lecture03-04Computer Science Club
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05Computer Science Club
 

What's hot (20)

Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal Geometry
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11
 
20100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture0320100930 proof complexity_hirsch_lecture03
20100930 proof complexity_hirsch_lecture03
 
Pr i-2
Pr i-2Pr i-2
Pr i-2
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov20110925 circuit complexity_seminar_lecture01_kulikov
20110925 circuit complexity_seminar_lecture01_kulikov
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Definite integral
Definite integralDefinite integral
Definite integral
 
20081012 structuralcomplexitytheory lecture03-04
20081012 structuralcomplexitytheory lecture03-0420081012 structuralcomplexitytheory lecture03-04
20081012 structuralcomplexitytheory lecture03-04
 
графы
графыграфы
графы
 
лекция 16
лекция 16лекция 16
лекция 16
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05
 

Viewers also liked

20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10Computer Science Club
 
Vani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani Gaddamidi
 
ICARO: business cloud accelerator !
ICARO: business cloud accelerator !ICARO: business cloud accelerator !
ICARO: business cloud accelerator !Paolo Nesi
 
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikar
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas KashalikarSahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikar
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikarshivsr5
 
Naturaleza muerta- Fotografia Mikel Arrizabalaga
Naturaleza muerta- Fotografia Mikel ArrizabalagaNaturaleza muerta- Fotografia Mikel Arrizabalaga
Naturaleza muerta- Fotografia Mikel Arrizabalagamaditabalnco
 
eGovernment: srovnání prezentovaného ideálu a reálného stavu
eGovernment: srovnání prezentovaného ideálu a reálného stavueGovernment: srovnání prezentovaného ideálu a reálného stavu
eGovernment: srovnání prezentovaného ideálu a reálného stavuKISK FF MU
 
5. 3. Digitalni Centrum Avcr Martin Lhotak
5. 3.   Digitalni Centrum Avcr  Martin Lhotak5. 3.   Digitalni Centrum Avcr  Martin Lhotak
5. 3. Digitalni Centrum Avcr Martin LhotakKISK FF MU
 
23 De Ore Pentru Un Plan De Marketing
23 De Ore Pentru Un Plan De Marketing23 De Ore Pentru Un Plan De Marketing
23 De Ore Pentru Un Plan De Marketingguestc3bede
 
Cyberbullying zii
Cyberbullying ziiCyberbullying zii
Cyberbullying ziimikeqian11
 
Modelo para marcadores
Modelo para marcadoresModelo para marcadores
Modelo para marcadoresAngielAlvarado
 
Parrilla programacion del 03 al 09 de diciembre 2012 mod
Parrilla programacion del 03 al 09 de diciembre 2012 modParrilla programacion del 03 al 09 de diciembre 2012 mod
Parrilla programacion del 03 al 09 de diciembre 2012 modcanalwebpdf
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMpicvendor
 

Viewers also liked (20)

20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10
 
Vani_Gaddamidi_Administrator
Vani_Gaddamidi_AdministratorVani_Gaddamidi_Administrator
Vani_Gaddamidi_Administrator
 
parkliring
parkliringparkliring
parkliring
 
ICARO: business cloud accelerator !
ICARO: business cloud accelerator !ICARO: business cloud accelerator !
ICARO: business cloud accelerator !
 
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikar
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas KashalikarSahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikar
Sahastranetra A Bestseller On Vishnusahasranam Dr. Shriniwas Kashalikar
 
Examen nacional 301135_220
Examen nacional 301135_220Examen nacional 301135_220
Examen nacional 301135_220
 
Clave de wifi casa de bri
Clave de wifi casa de briClave de wifi casa de bri
Clave de wifi casa de bri
 
Naturaleza muerta- Fotografia Mikel Arrizabalaga
Naturaleza muerta- Fotografia Mikel ArrizabalagaNaturaleza muerta- Fotografia Mikel Arrizabalaga
Naturaleza muerta- Fotografia Mikel Arrizabalaga
 
eGovernment: srovnání prezentovaného ideálu a reálného stavu
eGovernment: srovnání prezentovaného ideálu a reálného stavueGovernment: srovnání prezentovaného ideálu a reálného stavu
eGovernment: srovnání prezentovaného ideálu a reálného stavu
 
5. 3. Digitalni Centrum Avcr Martin Lhotak
5. 3.   Digitalni Centrum Avcr  Martin Lhotak5. 3.   Digitalni Centrum Avcr  Martin Lhotak
5. 3. Digitalni Centrum Avcr Martin Lhotak
 
23 De Ore Pentru Un Plan De Marketing
23 De Ore Pentru Un Plan De Marketing23 De Ore Pentru Un Plan De Marketing
23 De Ore Pentru Un Plan De Marketing
 
Cyberbullying zii
Cyberbullying ziiCyberbullying zii
Cyberbullying zii
 
Modelo para marcadores
Modelo para marcadoresModelo para marcadores
Modelo para marcadores
 
pasos para Twitter
pasos para Twitterpasos para Twitter
pasos para Twitter
 
Forma de gobierno
Forma de gobiernoForma de gobierno
Forma de gobierno
 
Kwl
KwlKwl
Kwl
 
Skmbt 50114050413180
Skmbt 50114050413180Skmbt 50114050413180
Skmbt 50114050413180
 
Parrilla programacion del 03 al 09 de diciembre 2012 mod
Parrilla programacion del 03 al 09 de diciembre 2012 modParrilla programacion del 03 al 09 de diciembre 2012 mod
Parrilla programacion del 03 al 09 de diciembre 2012 mod
 
In Purple
In PurpleIn Purple
In Purple
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
 

Similar to 20091129 algorithmsfornphardproblems kulikov_lecture10

Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Nikolay Grebenshikov
 
20101021 proof complexity_hirsch_lecture05
20101021 proof complexity_hirsch_lecture0520101021 proof complexity_hirsch_lecture05
20101021 proof complexity_hirsch_lecture05Computer Science Club
 
20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlinComputer Science Club
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизацияisva69
 
зависимость между песочной группой графа и его матроидом
зависимость между песочной группой графа и его матроидомзависимость между песочной группой графа и его матроидом
зависимость между песочной группой графа и его матроидомИван Иванов
 
20130302 np algorithms_kulikov_lecture04-05_sat
20130302 np algorithms_kulikov_lecture04-05_sat20130302 np algorithms_kulikov_lecture04-05_sat
20130302 np algorithms_kulikov_lecture04-05_satComputer Science Club
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03Computer Science Club
 
практика 15
практика 15практика 15
практика 15student_kai
 
экспертные системы
экспертные системыэкспертные системы
экспертные системыsokol_klinik
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08Computer Science Club
 

Similar to 20091129 algorithmsfornphardproblems kulikov_lecture10 (20)

Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
 
20101021 proof complexity_hirsch_lecture05
20101021 proof complexity_hirsch_lecture0520101021 proof complexity_hirsch_lecture05
20101021 proof complexity_hirsch_lecture05
 
20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизация
 
зависимость между песочной группой графа и его матроидом
зависимость между песочной группой графа и его матроидомзависимость между песочной группой графа и его матроидом
зависимость между песочной группой графа и его матроидом
 
20130302 np algorithms_kulikov_lecture04-05_sat
20130302 np algorithms_kulikov_lecture04-05_sat20130302 np algorithms_kulikov_lecture04-05_sat
20130302 np algorithms_kulikov_lecture04-05_sat
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03
 
8
88
8
 
практика 15
практика 15практика 15
практика 15
 
экспертные системы
экспертные системыэкспертные системы
экспертные системы
 
10474
1047410474
10474
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
2 prohds
2 prohds2 prohds
2 prohds
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08
 
Proizvodnaja
ProizvodnajaProizvodnaja
Proizvodnaja
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 

More from Computer Science Club

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

More from Computer Science Club (20)

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

20091129 algorithmsfornphardproblems kulikov_lecture10

  • 1. Алгоритмы для NP-трудных задач Лекция 10: Точные и FPT-алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 1 / 28
  • 2. План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
  • 3. План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
  • 4. План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 2 / 28
  • 5. Формула включений-исключений План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 3 / 28
  • 6. Формула включений-исключений Формула включений-исключений Лемма Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч. — f (X ) = Y ⊆X g (Y ). Тогда ∑︁ g (X ) = (−1)|X −Y | f (Y ) . Y ⊆X А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 4 / 28
  • 7. Формула включений-исключений Формула включений-исключений Лемма Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч. — f (X ) = Y ⊆X g (Y ). Тогда ∑︁ g (X ) = (−1)|X −Y | f (Y ) . Y ⊆X Доказательство ∑︁ ∑︁ ∑︁ (−1)|X −Y | f (Y ) = (−1)|X −Y | g (Z ) = Y ⊆X Y ⊆X Z ⊆Y ∑︁ ∑︁ = g (Z ) (−1)|X −Y | = g (X ) Z ⊆X Z ⊆Y ⊆X (последняя сумма равна 1, если Z = X , и нулю иначе). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 4 / 28
  • 8. Формула включений-исключений Задача о гамильтоновом пути План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 5 / 28
  • 9. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
  • 10. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
  • 11. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не обязательно простых! путь может проходить по некоторым вершинам несколько раз, а по некоторым вообще не проходить) длины n − 1 из s в t, проходящих только по вершинам множества X. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
  • 12. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей (не обязательно простых! путь может проходить по некоторым вершинам несколько раз, а по некоторым вообще не проходить) длины n − 1 из s в t, проходящих только по вершинам множества X. Нетрудно видеть, что значение g (X ) содержится в строке s и столбце t матрицы An−1 , где A — матрица смежности графа G [X ]. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 6 / 28
  • 13. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути (продолжение) А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
  • 14. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути (продолжение) Пусть теперь f (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, f (V ) есть количество гамильтоновых путей из s в t. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
  • 15. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути (продолжение) Пусть теперь f (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, f (V ) есть количество гамильтоновых путей из s в t. Тогда ∑︁ f (V ) = (−1)|V −Y | g (Y ) . Y ⊆V А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
  • 16. Формула включений-исключений Задача о гамильтоновом пути Задача о гамильтоновом пути (продолжение) Пусть теперь f (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, f (V ) есть количество гамильтоновых путей из s в t. Тогда ∑︁ f (V ) = (−1)|V −Y | g (Y ) . Y ⊆V Таким образом, количество гамильтоновых путей в графе может быть найдено за время O * (2n ) и полиномиальную память. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 7 / 28
  • 17. Формула включений-исключений Задача о количестве совершенных паросочетаний План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 8 / 28
  • 18. Формула включений-исключений Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
  • 19. Формула включений-исключений Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний Совершенным паросочетанием (perfect matching) графа G = (V , E ) называется множество из n/2 ребер, содержащее каждую вершину графа ровно один раз. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
  • 20. Формула включений-исключений Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний Совершенным паросочетанием (perfect matching) графа G = (V , E ) называется множество из n/2 ребер, содержащее каждую вершину графа ровно один раз. Максимальное по размеру паросочетание в графе может быть найдено за полиномиальное время. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
  • 21. Формула включений-исключений Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний Совершенным паросочетанием (perfect matching) графа G = (V , E ) называется множество из n/2 ребер, содержащее каждую вершину графа ровно один раз. Максимальное по размеру паросочетание в графе может быть найдено за полиномиальное время. Мы рассмотрим задачу нахождения количества совершенных паросочетаний графа. Наивный алгоритм требует времени O * (2m ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 9 / 28
  • 22. Формула включений-исключений Задача о количестве совершенных паросочетаний Алгоритм А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
  • 23. Формула включений-исключений Задача о количестве совершенных паросочетаний Алгоритм Пусть f (Y ) есть количество способов покрыть все вершины Y , используя ровно n/2 ребер. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
  • 24. Формула включений-исключений Задача о количестве совершенных паросочетаний Алгоритм Пусть f (Y ) есть количество способов покрыть все вершины Y , используя ровно n/2 ребер. Тогда f (V ) — количество совершенных паросочетаний. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
  • 25. Формула включений-исключений Задача о количестве совершенных паросочетаний Алгоритм Пусть f (Y ) есть количество способов покрыть все вершины Y , используя ровно n/2 ребер. Тогда f (V ) — количество совершенных паросочетаний. Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер графа, все концы которых принадлежат множеству Y (но при этом не обязательно покрывают все множество Y ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
  • 26. Формула включений-исключений Задача о количестве совершенных паросочетаний Алгоритм Пусть f (Y ) есть количество способов покрыть все вершины Y , используя ровно n/2 ребер. Тогда f (V ) — количество совершенных паросочетаний. Пусть теперь g (Y ) есть количество способов выбрать n/2 рёбер графа, все концы которых принадлежат множеству Y (но при этом не обязательно покрывают все множество Y ). Поскольку для данного Y вычислить g (Y ) легко, получаем алгоритм, находящий за время O * (2n ) количество совершенных паросочетаний в графе. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 10 / 28
  • 27. Формула включений-исключений Случай двудольного графа План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 11 / 28
  • 28. Формула включений-исключений Случай двудольного графа Задача о количестве совершенных паросочетаний в двудольном графе А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
  • 29. Формула включений-исключений Случай двудольного графа Задача о количестве совершенных паросочетаний в двудольном графе Для двудольных графов алгоритм можно ускорить. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
  • 30. Формула включений-исключений Случай двудольного графа Задача о количестве совершенных паросочетаний в двудольном графе Для двудольных графов алгоритм можно ускорить. Пусть V = L ∪ R и |L| = |R| = n/2. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
  • 31. Формула включений-исключений Случай двудольного графа Задача о количестве совершенных паросочетаний в двудольном графе Для двудольных графов алгоритм можно ускорить. Пусть V = L ∪ R и |L| = |R| = n/2. Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество способов выбрать n/2 ребер, используя все вершиын L и некоторые вершины из Y . А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
  • 32. Формула включений-исключений Случай двудольного графа Задача о количестве совершенных паросочетаний в двудольном графе Для двудольных графов алгоритм можно ускорить. Пусть V = L ∪ R и |L| = |R| = n/2. Тогда для Y ⊆ R (а не Y ⊆ V ) определим g (Y ) как количество способов выбрать n/2 ребер, используя все вершиын L и некоторые вершины из Y . Время работы будет O * (2n/2 ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 12 / 28
  • 33. Формула включений-исключений Случай двудольного графа Пример знак X 1 2 3 4 5 6 7 8 9 10 11 12 + ∅ − {1} − {2} − {3} + {1, 3} А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 13 / 28
  • 34. Сведение к простой задаче План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 14 / 28
  • 35. Сведение к простой задаче Задача о сумме подмножества План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 15 / 28
  • 36. Сведение к простой задаче Задача о сумме подмножества Задача о сумме подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке существования среди данных n натуральных чисел b1 , . . . , bn такого подмножества чисел, сумма которых равнялась бы заданному числу B. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 16 / 28
  • 37. Сведение к простой задаче Задача о сумме подмножества Задача о сумме подмножества Определение Задача о сумме подмножества (subset-sum problem) заключается в проверке существования среди данных n натуральных чисел b1 , . . . , bn такого подмножества чисел, сумма которых равнялась бы заданному числу B. Замечание Очевидный перебор требует времени 2n . А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 16 / 28
  • 38. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 39. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 40. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 41. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском наличие числа B − S в массиве. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 42. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском наличие числа B − S в массиве. Замечание А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 43. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском наличие числа B − S в массиве. Замечание Время работы — O * (2n/2 ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 44. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском наличие числа B − S в массиве. Замечание Время работы — O * (2n/2 ). Быстрее алгоритма неизвестно. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 45. Сведение к простой задаче Задача о сумме подмножества Лучший известный алгоритм Алгоритм Запишем в массив размера 2n/2 все возможные суммы чисел среди {b1 , . . . , bn/2 }. Отсортируем полученный массив. Для каждого S ⊆ {bn/2+1 , . . . , bn } проверим бинарным поиском наличие числа B − S в массиве. Замечание Время работы — O * (2n/2 ). Быстрее алгоритма неизвестно. Неизвестно и алгоритма, который бы работал быстрее чем 2n и использовал лишь полиномиальную память. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 17 / 28
  • 46. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 18 / 28
  • 47. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о табличной сумме Определение В задаче о табличной k-сумме (table-k sum problem) дана матрица размера k × m натуральных чисел и число S и необходимо проверить, можно ли выбрать из каждой строки матрицы ровно по одному числу так, чтобы в сумме выбранные числа давали S. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
  • 48. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о табличной сумме Определение В задаче о табличной k-сумме (table-k sum problem) дана матрица размера k × m натуральных чисел и число S и необходимо проверить, можно ли выбрать из каждой строки матрицы ровно по одному числу так, чтобы в сумме выбранные числа давали S. Замечание А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
  • 49. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о табличной сумме Определение В задаче о табличной k-сумме (table-k sum problem) дана матрица размера k × m натуральных чисел и число S и необходимо проверить, можно ли выбрать из каждой строки матрицы ровно по одному числу так, чтобы в сумме выбранные числа давали S. Замечание Очевидный перебор работает mk . А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
  • 50. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о табличной сумме Определение В задаче о табличной k-сумме (table-k sum problem) дана матрица размера k × m натуральных чисел и число S и необходимо проверить, можно ли выбрать из каждой строки матрицы ровно по одному числу так, чтобы в сумме выбранные числа давали S. Замечание Очевидный перебор работает mk . В алгоритме выше мы использовали алгоритм, решающий задачу о табличной 2-сумме за время O(m log m). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
  • 51. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о табличной сумме Определение В задаче о табличной k-сумме (table-k sum problem) дана матрица размера k × m натуральных чисел и число S и необходимо проверить, можно ли выбрать из каждой строки матрицы ровно по одному числу так, чтобы в сумме выбранные числа давали S. Замечание Очевидный перебор работает mk . В алгоритме выше мы использовали алгоритм, решающий задачу о табличной 2-сумме за время O(m log m). Этот же алгоритм можно использовать для решения задачи о табличной k-сумме за время O(m⌈k/2⌉ log m) и память O(m⌈k/2⌉ ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 19 / 28
  • 52. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о 3-сумме Определение В задаче о k-сумме (k-sum problem) даны m натуральных чисел и число S и требуется проверить, можно ли из них выбрать k так, чтобы их сумма равнялась S. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
  • 53. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о 3-сумме Определение В задаче о k-сумме (k-sum problem) даны m натуральных чисел и число S и требуется проверить, можно ли из них выбрать k так, чтобы их сумма равнялась S. Факт А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
  • 54. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о 3-сумме Определение В задаче о k-сумме (k-sum problem) даны m натуральных чисел и число S и требуется проверить, можно ли из них выбрать k так, чтобы их сумма равнялась S. Факт Существует алгоритм, решающий задачу о 3-сумме за время O(m2 ). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
  • 55. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Задача о 3-сумме Определение В задаче о k-сумме (k-sum problem) даны m натуральных чисел и число S и требуется проверить, можно ли из них выбрать k так, чтобы их сумма равнялась S. Факт Существует алгоритм, решающий задачу о 3-сумме за время O(m2 ). Известно большое количество геометрических задач, для каждой из которых лучший известный алгоритм работает квадратичное время и каждая из которых, содержит задачу о 3-сумме, как частный случай, и этот частный случай интуитивно представляется самым трудным. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 20 / 28
  • 56. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Пример геометрической задачи А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
  • 57. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Пример геометрической задачи Пусть даны m точек на плоскости и требуется проверить, лежат ли какие-нибудь три из них на одной прямой. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
  • 58. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Пример геометрической задачи Пусть даны m точек на плоскости и требуется проверить, лежат ли какие-нибудь три из них на одной прямой. Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2 являются корни уравнения x 3 − Sx 2 − ax − b = 0. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
  • 59. Сведение к простой задаче Задачи о k-сумме и табличной k-сумме Пример геометрической задачи Пусть даны m точек на плоскости и требуется проверить, лежат ли какие-нибудь три из них на одной прямой. Пересечением прямой y = ax + b и кривой y = f (x) = x 3 − Sx 2 являются корни уравнения x 3 − Sx 2 − ax − b = 0. Значит, множество точек (a1 , f (a1 )), . . . , (am , f (am )) содержит три точки (ax , f (ax )), (ay , f (ay )), (az , f (az )) на одной прямой тогда и только тогда, когда ax + ay + az = S. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 21 / 28
  • 60. Алгебраизация План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 22 / 28
  • 61. Алгебраизация Задача максимальной 2-выполнимости План лекции 1 Формула включений-исключений Задача о гамильтоновом пути Задача о количестве совершенных паросочетаний Задача о количестве совершенных паросочетаний в двудольном графе 2 Сведение к простой задаче Задача о сумме подмножества Задачи о k-сумме и табличной k-сумме 3 Алгебраизация Задача максимальной 2-выполнимости А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 23 / 28
  • 62. Алгебраизация Задача максимальной 2-выполнимости Алгебраизация А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
  • 63. Алгебраизация Задача максимальной 2-выполнимости Алгебраизация Для набора значений переменным формулы t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество выполненных клозов данной формулы в 2-КНФ. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
  • 64. Алгебраизация Задача максимальной 2-выполнимости Алгебраизация Для набора значений переменным формулы t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество выполненных клозов данной формулы в 2-КНФ. Пусть ∑︁ G (w ) = w N(t) . t∈{0,1}n А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
  • 65. Алгебраизация Задача максимальной 2-выполнимости Алгебраизация Для набора значений переменным формулы t = (t1 , . . . , tn ) ∈ {0, 1}n обозначим через N(t) количество выполненных клозов данной формулы в 2-КНФ. Пусть ∑︁ G (w ) = w N(t) . t∈{0,1}n Нас, таким образом, интересует степень этого многочлена. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 24 / 28
  • 66. Алгебраизация Задача максимальной 2-выполнимости Построение матриц А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
  • 67. Алгебраизация Задача максимальной 2-выполнимости Построение матриц Разобьем переменные формулы на три часта A, B, C размера n/3. А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
  • 68. Алгебраизация Задача максимальной 2-выполнимости Построение матриц Разобьем переменные формулы на три часта A, B, C размера n/3. Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 , N(t) = NC (a, b) + NB (a, c) + NA (b, c) , где NC (a, b) есть количество клозов, которые не зависят от переменных множества C и выполнены наборами a, b (оставшиеся два слагаемых определяются аналогично). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
  • 69. Алгебраизация Задача максимальной 2-выполнимости Построение матриц Разобьем переменные формулы на три часта A, B, C размера n/3. Для t = (a, b, c), где a, b, c ∈ {0, 1}n/3 , N(t) = NC (a, b) + NB (a, c) + NA (b, c) , где NC (a, b) есть количество клозов, которые не зависят от переменных множества C и выполнены наборами a, b (оставшиеся два слагаемых определяются аналогично). Определим матрицы NC , NB , NA размера 2n/3 × 2n/3 следующим w w w образом: NC (a, b) = w NC (a,b) , w NB (b, c) = w NB (b,c) , w w NC (a, b) = w NC (a,b) . А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 25 / 28
  • 70. Алгебраизация Задача максимальной 2-выполнимости Вычисление многочлена ∑︁ G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) = a,b,c А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
  • 71. Алгебраизация Задача максимальной 2-выполнимости Вычисление многочлена ∑︁ G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) = a,b,c ∑︁ = w NC (a,b) w NB (a,c) w NA (b,c) = a,b,c А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
  • 72. Алгебраизация Задача максимальной 2-выполнимости Вычисление многочлена ∑︁ G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) = a,b,c ∑︁ = w NC (a,b) w NB (a,c) w NA (b,c) = a,b,c ∑︁ ∑︁ = w NB (a,c) w NC (a,b) w NA (b,c) = a,c b А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
  • 73. Алгебраизация Задача максимальной 2-выполнимости Вычисление многочлена ∑︁ G (w ) = w NC (a,b)+NB (a,c)+NA (b,c) = a,b,c ∑︁ = w NC (a,b) w NB (a,c) w NA (b,c) = a,b,c ∑︁ ∑︁ = w NB (a,c) w NC (a,b) w NA (b,c) = a,c b ∑︁ w w w = NB (a, c)(NC NA )(a, c) . a,c А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 26 / 28
  • 74. Алгебраизация Задача максимальной 2-выполнимости Итог А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
  • 75. Алгебраизация Задача максимальной 2-выполнимости Итог Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 ) памяти (������ ≈ 2.38 — экспонента умножения матриц). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
  • 76. Алгебраизация Задача максимальной 2-выполнимости Итог Итак, полученный алгоритм требует времени O * 2������n/3 и O(22n/3 ) памяти (������ ≈ 2.38 — экспонента умножения матриц). Это лучше полного перебора по времени, но гораздо хуже по памяти (time-space tradeoff). А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 27 / 28
  • 77. Алгебраизация Задача максимальной 2-выполнимости Спасибо за внимание! А. Куликов (Computer Science клуб) 10. Точные и FPT-алгоритмы 28 / 28