с/к “Эффективные алгоритмы”
                  Лекция 11: Задача выполнимости

                                     А. Куликов

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




А. Куликов (CS клуб при ПОМИ)     11. Задача выполнимости       1 / 30
План лекции



1   Определение задачи




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   2 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   2 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   2 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   3 / 30
Формула в КНФ
Определение




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   4 / 30
Формула в КНФ
Определение
      Пропозициональной или Булевой (propositional, Boolean)
      переменной называется переменная, принимающая значения true
      (1) и false (0).




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости       4 / 30
Формула в КНФ
Определение
      Пропозициональной или Булевой (propositional, Boolean)
      переменной называется переменная, принимающая значения true
      (1) и false (0).
      Литералом (literal) называется Булева переменная x или ее
      отрицание ¬x.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости           4 / 30
Формула в КНФ
Определение
      Пропозициональной или Булевой (propositional, Boolean)
      переменной называется переменная, принимающая значения true
      (1) и false (0).
      Литералом (literal) называется Булева переменная x или ее
      отрицание ¬x.
      Клозом (clause) называется дизъюнкция конечного множества
      литералов, не содержащего одновременно переменной и ее
      отрицания.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости           4 / 30
Формула в КНФ
Определение
      Пропозициональной или Булевой (propositional, Boolean)
      переменной называется переменная, принимающая значения true
      (1) и false (0).
      Литералом (literal) называется Булева переменная x или ее
      отрицание ¬x.
      Клозом (clause) называется дизъюнкция конечного множества
      литералов, не содержащего одновременно переменной и ее
      отрицания.
      k-клозом (k-clause) называется клоз, содержащий ровно k
      литералов.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости           4 / 30
Формула в КНФ
Определение
      Пропозициональной или Булевой (propositional, Boolean)
      переменной называется переменная, принимающая значения true
      (1) и false (0).
      Литералом (literal) называется Булева переменная x или ее
      отрицание ¬x.
      Клозом (clause) называется дизъюнкция конечного множества
      литералов, не содержащего одновременно переменной и ее
      отрицания.
      k-клозом (k-clause) называется клоз, содержащий ровно k
      литералов.
      Формулой в конъюнктивной нормальной форме (КНФ) (formula in
      conjunctive normal form, CNF) называется конъюнкция конечного
      множества клозов.

А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости           4 / 30
Меры сложности формул




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   5 / 30
Меры сложности формул




      n(F ), N(F ) — кол-во различных переменных в F .




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   5 / 30
Меры сложности формул




      n(F ), N(F ) — кол-во различных переменных в F .
      m(F ), K (F ) — кол-во клозов в F .




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   5 / 30
Меры сложности формул




      n(F ), N(F ) — кол-во различных переменных в F .
      m(F ), K (F ) — кол-во клозов в F .
      l (F ), L(F ) — кол-во литералов в (длина) F .




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   5 / 30
Задача выполнимости

Определение




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   6 / 30
Задача выполнимости

Определение
      Задача пропозициональной выполнимости (Boolean satisfiability
      problem, SAT): определить, выполнима ли данная формула в
      КНФ, то есть существует ли набор Булевых значений переменным
      формулы, выполняющий формулу. Такой набор называют
      выполняющим (satisfying assignment), а формулу, для которой
      такой набор существует, — выполнимой (satisfiable).




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости         6 / 30
Задача выполнимости

Определение
      Задача пропозициональной выполнимости (Boolean satisfiability
      problem, SAT): определить, выполнима ли данная формула в
      КНФ, то есть существует ли набор Булевых значений переменным
      формулы, выполняющий формулу. Такой набор называют
      выполняющим (satisfying assignment), а формулу, для которой
      такой набор существует, — выполнимой (satisfiable).
      Задача максимальной выполнимости (maximum satisfiability
      problem, SAT): по данной формуле определить, какое
      максимальное количество ее клозов может быть выполнено.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          6 / 30
Задача выполнимости

Определение
      Задача пропозициональной выполнимости (Boolean satisfiability
      problem, SAT): определить, выполнима ли данная формула в
      КНФ, то есть существует ли набор Булевых значений переменным
      формулы, выполняющий формулу. Такой набор называют
      выполняющим (satisfying assignment), а формулу, для которой
      такой набор существует, — выполнимой (satisfiable).
      Задача максимальной выполнимости (maximum satisfiability
      problem, SAT): по данной формуле определить, какое
      максимальное количество ее клозов может быть выполнено.
      k-SAT, MAX-k-SAT — частные случаи соответствующих задач,
      когда все клозы входной формулы содержат не более k литералов.



А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          6 / 30
Пример



Пример




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)
            n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6




А. Куликов (CS клуб при ПОМИ)     11. Задача выполнимости   7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)
            n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6
            F1 выполнима: x = 0, y = 1, z = 1




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)
            n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6
            F1 выполнима: x = 0, y = 1, z = 1
      F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y )




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости    7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)
            n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6
            F1 выполнима: x = 0, y = 1, z = 1
      F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y )
            n(F2 ) = 2, m(F2 ) = 4, l (F1 ) = 8




А. Куликов (CS клуб при ПОМИ)     11. Задача выполнимости   7 / 30
Пример



Пример
      F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z)
            n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6
            F1 выполнима: x = 0, y = 1, z = 1
      F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y )
            n(F2 ) = 2, m(F2 ) = 4, l (F1 ) = 8
            F2 невыполнима, но три клоза можно выполнить




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости    7 / 30
NP-трудность




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   8 / 30
NP-трудность




      Первая известная NP-полная задача (Кук, 1971).




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   8 / 30
NP-трудность




      Первая известная NP-полная задача (Кук, 1971).
      3-SAT тоже NP-полна.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   8 / 30
NP-трудность




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




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   8 / 30
NP-трудность




      Первая известная NP-полная задача (Кук, 1971).
      3-SAT тоже NP-полна.
      2-SAT может быть решена за линейное время.
      MAX-2-SAT NP-трудна, даже если каждая переменная
      встречается в формуле не более трех раз.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   8 / 30
Важность задачи




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.
      http://www.satcompetition.org/ — The international SAT
      Competitions web page.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.
      http://www.satcompetition.org/ — The international SAT
      Competitions web page.
      http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on
      Satisfiability, Boolean Modeling and Computation.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.
      http://www.satcompetition.org/ — The international SAT
      Competitions web page.
      http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on
      Satisfiability, Boolean Modeling and Computation.
      http://www.satlib.org/ — The Satisfiability Library.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.
      http://www.satcompetition.org/ — The international SAT
      Competitions web page.
      http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on
      Satisfiability, Boolean Modeling and Computation.
      http://www.satlib.org/ — The Satisfiability Library.
      http://www.satlive.org/ — Up-to-date links for the Satisfiability
      Problem.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
Важность задачи


      http://www.satisfiability.org/ — The International
      Conferences on Theory and Applications of Satisfiability Testing.
      http://www.satcompetition.org/ — The international SAT
      Competitions web page.
      http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on
      Satisfiability, Boolean Modeling and Computation.
      http://www.satlib.org/ — The Satisfiability Library.
      http://www.satlive.org/ — Up-to-date links for the Satisfiability
      Problem.
      http://www.qbflib.org/ — The Quantified Boolean Formulas
      Satisfiability Library.



А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   9 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   10 / 30
Сведения




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   11 / 30
Сведения




      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        11 / 30
Сведения




      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.
      Сведя задачу к SAT, на практике можно воспользоваться
      SAT-солвером.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        11 / 30
Сведения




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




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        11 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   12 / 30
Японские кроссворды

Определение
Решение японского кроссворда (japanese puzzle) заключается в
восстановлении картинки по длинам блоков подряд идущих
закрашенных клеток в строках и столбцах.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        13 / 30
Сведение к SAT




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   14 / 30
Сведение к SAT




      дано поле n × m




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   14 / 30
Сведение к SAT




      дано поле n × m
      достаточно научиться кодировать тот факт, что в i-й строке
      закрашены блоки длины a1 , . . . , at




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            14 / 30
Сведение к SAT




      дано поле n × m
      достаточно научиться кодировать тот факт, что в i-й строке
      закрашены блоки длины a1 , . . . , at
      введем такие переменные:




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            14 / 30
Сведение к SAT




      дано поле n × m
      достаточно научиться кодировать тот факт, что в i-й строке
      закрашены блоки длины a1 , . . . , at
      введем такие переменные:
            xij — клетка (i, j) закрашена




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            14 / 30
Сведение к SAT




      дано поле n × m
      достаточно научиться кодировать тот факт, что в i-й строке
      закрашены блоки длины a1 , . . . , at
      введем такие переменные:
            xij — клетка (i, j) закрашена
            yijp — p-й блок строки i начинается в клетке j




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            14 / 30
Сведение к SAT (продолжение)
итак, дана строка i с блоками a1 , . . . , at




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   15 / 30
Сведение к SAT (продолжение)
итак, дана строка i с блоками a1 , . . . , at
    p-й блок начинается ровно в одной клетке:
                     (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k




А. Куликов (CS клуб при ПОМИ)      11. Задача выполнимости                    15 / 30
Сведение к SAT (продолжение)
итак, дана строка i с блоками a1 , . . . , at
    p-й блок начинается ровно в одной клетке:
                     (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k

      (p + 1)-й блок начинается позже конца p-го:
                                {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0




А. Куликов (CS клуб при ПОМИ)      11. Задача выполнимости                    15 / 30
Сведение к SAT (продолжение)
итак, дана строка i с блоками a1 , . . . , at
    p-й блок начинается ровно в одной клетке:
                     (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k

      (p + 1)-й блок начинается позже конца p-го:
                                {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0

      если p-й блок начинается в клетке j, то соответствующие ap
      клеток закрашены:
                                 {(¬yijp ∨ xi(j+k) )}0≤k<ap




А. Куликов (CS клуб при ПОМИ)      11. Задача выполнимости                    15 / 30
Сведение к SAT (продолжение)
итак, дана строка i с блоками a1 , . . . , at
    p-й блок начинается ровно в одной клетке:
                     (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k

      (p + 1)-й блок начинается позже конца p-го:
                                {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0

      если p-й блок начинается в клетке j, то соответствующие ap
      клеток закрашены:
                                  {(¬yijp ∨ xi(j+k) )}0≤k<ap

      если клетка не принадлежит ни одному из блоков, то она не
      закрашена:
             (yi(j−a1 +1)1 ∨ · · · ∨ yij1 ∨ · · · ∨ yi(j−at +1)p ∨ · · · ∨ yijt ∨ ¬xij )
А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                                15 / 30
Замечание




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   16 / 30
Замечание
      если какой-то индекс “вылезает”, то соответствующим
      переменным просто присваиваем значение 0




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости     16 / 30
Замечание
      если какой-то индекс “вылезает”, то соответствующим
      переменным просто присваиваем значение 0
      можно сводить более эффективно




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости     16 / 30
Примеры решенных кроссвордов




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   17 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   18 / 30
Игра Eternity
Определение
Нужно замостить квадрат заданным набором доминошек так, чтобы
узоры на граничащих частях доминошек совпадали.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости    19 / 30
Сведение к SAT



дан квадрат n × n и n2 доминошек




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   20 / 30
Сведение к SAT



дан квадрат n × n и n2 доминошек
      перенумеруем все клетки и доминошки числами от 1 до n2




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        20 / 30
Сведение к SAT



дан квадрат n × n и n2 доминошек
      перенумеруем все клетки и доминошки числами от 1 до n2
      заводим два типа переменных:




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        20 / 30
Сведение к SAT



дан квадрат n × n и n2 доминошек
      перенумеруем все клетки и доминошки числами от 1 до n2
      заводим два типа переменных:
            xij — в i-й клетке стоит j-я доминошка




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        20 / 30
Сведение к SAT



дан квадрат n × n и n2 доминошек
      перенумеруем все клетки и доминошки числами от 1 до n2
      заводим два типа переменных:
            xij — в i-й клетке стоит j-я доминошка
            yjk — j-я доминошка в “положении” k, 1 ≤ k ≤ 4 (например, так:
            k = 1 — не повернута, k = 2 — повернута на /2 по часовой,
            k = 3 — на , k = 4 — на /2 против часовой)




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                 20 / 30
Сведение к SAT




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   21 / 30
Сведение к SAT
      каждая доминошка находится ровно в одном “положении”:
                       (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q




А. Куликов (CS клуб при ПОМИ)     11. Задача выполнимости                21 / 30
Сведение к SAT
      каждая доминошка находится ровно в одном “положении”:
                       (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q


      каждая доминошка стоит хотя бы в одной клетке:
                                {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости              21 / 30
Сведение к SAT
      каждая доминошка находится ровно в одном “положении”:
                       (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q


      каждая доминошка стоит хотя бы в одной клетке:
                                {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]


      в каждой клетке стоит хотя бы одна доминошка:
                                {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости              21 / 30
Сведение к SAT
      каждая доминошка находится ровно в одном “положении”:
                       (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q


      каждая доминошка стоит хотя бы в одной клетке:
                                {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]


      в каждой клетке стоит хотя бы одна доминошка:
                                {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]


      доминошка не стоит в двух клетках одновременно:
                                      {(¬xpj ∨ ¬xqj )}p̸=q


А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости              21 / 30
Сведение к SAT (продолжение)




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   22 / 30
Сведение к SAT (продолжение)


      в клетке одновременно не стоят две доминошки:

                                  {(¬xip ∨ ¬xiq )}p̸=q




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   22 / 30
Сведение к SAT (продолжение)


      в клетке одновременно не стоят две доминошки:

                                      {(¬xip ∨ ¬xiq )}p̸=q


      две доминошки должны граничить равными ребрами:

                            {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )},

      если клетки i1 и i2 — соседи и при постановке туда доминошек j1
      и j2 в “положениях”, соответственно, k1 и k2 нарушается узор




А. Куликов (CS клуб при ПОМИ)      11. Задача выполнимости                22 / 30
Не все так просто, тем не менее




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   23 / 30
Не все так просто, тем не менее




      итак, мы записали игру Eternity в виде задачи выполнимости
      конкретной формулы при помощи полиномиального сведения




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            23 / 30
Не все так просто, тем не менее




      итак, мы записали игру Eternity в виде задачи выполнимости
      конкретной формулы при помощи полиномиального сведения
      осталось напустить на полученную формулу какой-нибудь
      эффективный SAT-солвер




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            23 / 30
Не все так просто, тем не менее




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




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            23 / 30
Не все так просто, тем не менее




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




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости            23 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q         (4 + 2 · 6)n2




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости                   24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                   24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2
  {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]                           n2 · n2




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                   24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2
  {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]                          n2 · n2
                                                                n2 · n
                                                                    (︀ )︀
  {(¬xpj ∨ ¬xqj )}p̸=q                                                2




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                   24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2
  {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]                          n2 · n2
                                                                n2 · n
                                                                    (︀ )︀
  {(¬xpj ∨ ¬xqj )}p̸=q
                                                                    (︀2)︀
                                                                  2· n
  {(¬xip ∨ ¬xiq )}p̸=q                                          n     2




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                   24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2
  {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]                           n2 · n2
                                                                 n2 · n
                                                                     (︀ )︀
  {(¬xpj ∨ ¬xqj )}p̸=q
                                                                     (︀2)︀
                                                                   2· n
  {(¬xip ∨ ¬xiq )}p̸=q                                           n     2
  {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )}                  ∼ n2 · n2 · n2




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                    24 / 30
Оценка длины


  (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q             (4 + 2 · 6)n2
  {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ]                          n2 · n2
  {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ]                           n2 · n2
                                                                 n2 · n
                                                                     (︀ )︀
  {(¬xpj ∨ ¬xqj )}p̸=q
                                                                     (︀2)︀
                                                                   2· n
  {(¬xip ∨ ¬xiq )}p̸=q                                           n     2
  {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )}                  ∼ n2 · n2 · n2
Итого, порядок длины формулы будет n6 , что при n = 16 составляеят
166 = 224 = 16 777 216.




А. Куликов (CS клуб при ПОМИ)       11. Задача выполнимости                    24 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   25 / 30
Задача о максимальном разрезе


Определение
Задача о максимальном разрезе (maximum cut, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          26 / 30
Задача о максимальном разрезе


Определение
Задача о максимальном разрезе (maximum cut, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.

NP-трудность




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          26 / 30
Задача о максимальном разрезе


Определение
Задача о максимальном разрезе (maximum cut, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.

NP-трудность
      Одна из знаменитых 21-й NP-полной задачи Карпа.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          26 / 30
Задача о максимальном разрезе


Определение
Задача о максимальном разрезе (maximum cut, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.

NP-трудность
      Одна из знаменитых 21-й NP-полной задачи Карпа.
      Остается NP-полной даже на графах степени 3.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости          26 / 30
Сведение к MAX-2-SAT




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   27 / 30
Сведение к MAX-2-SAT



      каждой вершине u графа G (V , E ) поставим в соответствие
      переменную xu (xu = 1 — вершина u принадлежит первой части)




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        27 / 30
Сведение к MAX-2-SAT



      каждой вершине u графа G (V , E ) поставим в соответствие
      переменную xu (xu = 1 — вершина u принадлежит первой части)
      для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv )




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости               27 / 30
Сведение к MAX-2-SAT



      каждой вершине u графа G (V , E ) поставим в соответствие
      переменную xu (xu = 1 — вершина u принадлежит первой части)
      для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv )
      видно, что набор значений переменным u, v выполняет оба клоза,
      когда u и v в разных частях, и выполняет только один из них —
      когда в одной




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости               27 / 30
Сведение к MAX-2-SAT



      каждой вершине u графа G (V , E ) поставим в соответствие
      переменную xu (xu = 1 — вершина u принадлежит первой части)
      для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv )
      видно, что набор значений переменным u, v выполняет оба клоза,
      когда u и v в разных частях, и выполняет только один из них —
      когда в одной
      таким образом, максимальное количество одновременно
      выполнимых клозов полученной формулы равно
      |E | + |MAX-CUT(G )|




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости               27 / 30
План лекции



1   Определение задачи


2   Сведения
      Японские кроссворды
      Eternity
      Максимальный разрез


3   Что мы узнали за сегодня




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   28 / 30
Что мы узнали за сегодня?




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   29 / 30
Что мы узнали за сегодня?



      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        29 / 30
Что мы узнали за сегодня?



      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.
      Сведя задачу к SAT, на практике можно воспользоваться
      SAT-солвером.




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        29 / 30
Что мы узнали за сегодня?



      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.
      Сведя задачу к SAT, на практике можно воспользоваться
      SAT-солвером.
      Сведения:




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        29 / 30
Что мы узнали за сегодня?



      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.
      Сведя задачу к SAT, на практике можно воспользоваться
      SAT-солвером.
      Сведения:
            японские кроссворды, игра Eternity — к SAT




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        29 / 30
Что мы узнали за сегодня?



      Многие известные задачи из NP очень просто сводятся к SAT или
      MAX-SAT.
      Сведя задачу к SAT, на практике можно воспользоваться
      SAT-солвером.
      Сведения:
            японские кроссворды, игра Eternity — к SAT
            задача о максимальном разрезе — к MAX-SAT




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости        29 / 30
Спасибо за внимание!




А. Куликов (CS клуб при ПОМИ)   11. Задача выполнимости   30 / 30

20071202 efficientalgorithms kulikov_lecture11

  • 1.
    с/к “Эффективные алгоритмы” Лекция 11: Задача выполнимости А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 1 / 30
  • 2.
    План лекции 1 Определение задачи А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 2 / 30
  • 3.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 2 / 30
  • 4.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 2 / 30
  • 5.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 3 / 30
  • 6.
    Формула в КНФ Определение А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 7.
    Формула в КНФ Определение Пропозициональной или Булевой (propositional, Boolean) переменной называется переменная, принимающая значения true (1) и false (0). А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 8.
    Формула в КНФ Определение Пропозициональной или Булевой (propositional, Boolean) переменной называется переменная, принимающая значения true (1) и false (0). Литералом (literal) называется Булева переменная x или ее отрицание ¬x. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 9.
    Формула в КНФ Определение Пропозициональной или Булевой (propositional, Boolean) переменной называется переменная, принимающая значения true (1) и false (0). Литералом (literal) называется Булева переменная x или ее отрицание ¬x. Клозом (clause) называется дизъюнкция конечного множества литералов, не содержащего одновременно переменной и ее отрицания. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 10.
    Формула в КНФ Определение Пропозициональной или Булевой (propositional, Boolean) переменной называется переменная, принимающая значения true (1) и false (0). Литералом (literal) называется Булева переменная x или ее отрицание ¬x. Клозом (clause) называется дизъюнкция конечного множества литералов, не содержащего одновременно переменной и ее отрицания. k-клозом (k-clause) называется клоз, содержащий ровно k литералов. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 11.
    Формула в КНФ Определение Пропозициональной или Булевой (propositional, Boolean) переменной называется переменная, принимающая значения true (1) и false (0). Литералом (literal) называется Булева переменная x или ее отрицание ¬x. Клозом (clause) называется дизъюнкция конечного множества литералов, не содержащего одновременно переменной и ее отрицания. k-клозом (k-clause) называется клоз, содержащий ровно k литералов. Формулой в конъюнктивной нормальной форме (КНФ) (formula in conjunctive normal form, CNF) называется конъюнкция конечного множества клозов. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 4 / 30
  • 12.
    Меры сложности формул А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 5 / 30
  • 13.
    Меры сложности формул n(F ), N(F ) — кол-во различных переменных в F . А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 5 / 30
  • 14.
    Меры сложности формул n(F ), N(F ) — кол-во различных переменных в F . m(F ), K (F ) — кол-во клозов в F . А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 5 / 30
  • 15.
    Меры сложности формул n(F ), N(F ) — кол-во различных переменных в F . m(F ), K (F ) — кол-во клозов в F . l (F ), L(F ) — кол-во литералов в (длина) F . А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 5 / 30
  • 16.
    Задача выполнимости Определение А. Куликов(CS клуб при ПОМИ) 11. Задача выполнимости 6 / 30
  • 17.
    Задача выполнимости Определение Задача пропозициональной выполнимости (Boolean satisfiability problem, SAT): определить, выполнима ли данная формула в КНФ, то есть существует ли набор Булевых значений переменным формулы, выполняющий формулу. Такой набор называют выполняющим (satisfying assignment), а формулу, для которой такой набор существует, — выполнимой (satisfiable). А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 6 / 30
  • 18.
    Задача выполнимости Определение Задача пропозициональной выполнимости (Boolean satisfiability problem, SAT): определить, выполнима ли данная формула в КНФ, то есть существует ли набор Булевых значений переменным формулы, выполняющий формулу. Такой набор называют выполняющим (satisfying assignment), а формулу, для которой такой набор существует, — выполнимой (satisfiable). Задача максимальной выполнимости (maximum satisfiability problem, SAT): по данной формуле определить, какое максимальное количество ее клозов может быть выполнено. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 6 / 30
  • 19.
    Задача выполнимости Определение Задача пропозициональной выполнимости (Boolean satisfiability problem, SAT): определить, выполнима ли данная формула в КНФ, то есть существует ли набор Булевых значений переменным формулы, выполняющий формулу. Такой набор называют выполняющим (satisfying assignment), а формулу, для которой такой набор существует, — выполнимой (satisfiable). Задача максимальной выполнимости (maximum satisfiability problem, SAT): по данной формуле определить, какое максимальное количество ее клозов может быть выполнено. k-SAT, MAX-k-SAT — частные случаи соответствующих задач, когда все клозы входной формулы содержат не более k литералов. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 6 / 30
  • 20.
    Пример Пример А. Куликов (CSклуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 21.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 22.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 23.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6 F1 выполнима: x = 0, y = 1, z = 1 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 24.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6 F1 выполнима: x = 0, y = 1, z = 1 F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y ) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 25.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6 F1 выполнима: x = 0, y = 1, z = 1 F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y ) n(F2 ) = 2, m(F2 ) = 4, l (F1 ) = 8 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 26.
    Пример Пример F1 = (x ∨ y ∨ ¬z) ∧ (¬x) ∧ (¬y ∨ z) n(F1 ) = 3, m(F1 ) = 3, l (F1 ) = 6 F1 выполнима: x = 0, y = 1, z = 1 F2 = (x ∨ y ) ∧ (x ∨ ¬y ) ∧ (¬x ∨ y ) ∧ (¬x ∨ ¬y ) n(F2 ) = 2, m(F2 ) = 4, l (F1 ) = 8 F2 невыполнима, но три клоза можно выполнить А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 7 / 30
  • 27.
    NP-трудность А. Куликов (CSклуб при ПОМИ) 11. Задача выполнимости 8 / 30
  • 28.
    NP-трудность Первая известная NP-полная задача (Кук, 1971). А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 8 / 30
  • 29.
    NP-трудность Первая известная NP-полная задача (Кук, 1971). 3-SAT тоже NP-полна. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 8 / 30
  • 30.
    NP-трудность Первая известная NP-полная задача (Кук, 1971). 3-SAT тоже NP-полна. 2-SAT может быть решена за линейное время. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 8 / 30
  • 31.
    NP-трудность Первая известная NP-полная задача (Кук, 1971). 3-SAT тоже NP-полна. 2-SAT может быть решена за линейное время. MAX-2-SAT NP-трудна, даже если каждая переменная встречается в формуле не более трех раз. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 8 / 30
  • 32.
    Важность задачи А. Куликов(CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 33.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 34.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 35.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on Satisfiability, Boolean Modeling and Computation. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 36.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on Satisfiability, Boolean Modeling and Computation. http://www.satlib.org/ — The Satisfiability Library. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 37.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on Satisfiability, Boolean Modeling and Computation. http://www.satlib.org/ — The Satisfiability Library. http://www.satlive.org/ — Up-to-date links for the Satisfiability Problem. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 38.
    Важность задачи http://www.satisfiability.org/ — The International Conferences on Theory and Applications of Satisfiability Testing. http://www.satcompetition.org/ — The international SAT Competitions web page. http://www.isa.ewi.tudelft.nl/Jsat/ — Journal on Satisfiability, Boolean Modeling and Computation. http://www.satlib.org/ — The Satisfiability Library. http://www.satlive.org/ — Up-to-date links for the Satisfiability Problem. http://www.qbflib.org/ — The Quantified Boolean Formulas Satisfiability Library. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 9 / 30
  • 39.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 10 / 30
  • 40.
    Сведения А. Куликов (CSклуб при ПОМИ) 11. Задача выполнимости 11 / 30
  • 41.
    Сведения Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 11 / 30
  • 42.
    Сведения Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 11 / 30
  • 43.
    Сведения Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. Такой подход иногда помогает, иногда — нет. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 11 / 30
  • 44.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 12 / 30
  • 45.
    Японские кроссворды Определение Решение японскогокроссворда (japanese puzzle) заключается в восстановлении картинки по длинам блоков подряд идущих закрашенных клеток в строках и столбцах. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 13 / 30
  • 46.
    Сведение к SAT А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 47.
    Сведение к SAT дано поле n × m А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 48.
    Сведение к SAT дано поле n × m достаточно научиться кодировать тот факт, что в i-й строке закрашены блоки длины a1 , . . . , at А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 49.
    Сведение к SAT дано поле n × m достаточно научиться кодировать тот факт, что в i-й строке закрашены блоки длины a1 , . . . , at введем такие переменные: А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 50.
    Сведение к SAT дано поле n × m достаточно научиться кодировать тот факт, что в i-й строке закрашены блоки длины a1 , . . . , at введем такие переменные: xij — клетка (i, j) закрашена А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 51.
    Сведение к SAT дано поле n × m достаточно научиться кодировать тот факт, что в i-й строке закрашены блоки длины a1 , . . . , at введем такие переменные: xij — клетка (i, j) закрашена yijp — p-й блок строки i начинается в клетке j А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 14 / 30
  • 52.
    Сведение к SAT(продолжение) итак, дана строка i с блоками a1 , . . . , at А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 15 / 30
  • 53.
    Сведение к SAT(продолжение) итак, дана строка i с блоками a1 , . . . , at p-й блок начинается ровно в одной клетке: (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 15 / 30
  • 54.
    Сведение к SAT(продолжение) итак, дана строка i с блоками a1 , . . . , at p-й блок начинается ровно в одной клетке: (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k (p + 1)-й блок начинается позже конца p-го: {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 15 / 30
  • 55.
    Сведение к SAT(продолжение) итак, дана строка i с блоками a1 , . . . , at p-й блок начинается ровно в одной клетке: (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k (p + 1)-й блок начинается позже конца p-го: {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0 если p-й блок начинается в клетке j, то соответствующие ap клеток закрашены: {(¬yijp ∨ xi(j+k) )}0≤k<ap А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 15 / 30
  • 56.
    Сведение к SAT(продолжение) итак, дана строка i с блоками a1 , . . . , at p-й блок начинается ровно в одной клетке: (yi1p ∨ yi2p ∨ · · · ∨ yimp ) ∧ {(¬yijp ∨ ¬yikp )}j̸=k (p + 1)-й блок начинается позже конца p-го: {(¬yij(p+1) ∨ ¬yi(j+k)p )}k≥0 если p-й блок начинается в клетке j, то соответствующие ap клеток закрашены: {(¬yijp ∨ xi(j+k) )}0≤k<ap если клетка не принадлежит ни одному из блоков, то она не закрашена: (yi(j−a1 +1)1 ∨ · · · ∨ yij1 ∨ · · · ∨ yi(j−at +1)p ∨ · · · ∨ yijt ∨ ¬xij ) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 15 / 30
  • 57.
    Замечание А. Куликов (CSклуб при ПОМИ) 11. Задача выполнимости 16 / 30
  • 58.
    Замечание если какой-то индекс “вылезает”, то соответствующим переменным просто присваиваем значение 0 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 16 / 30
  • 59.
    Замечание если какой-то индекс “вылезает”, то соответствующим переменным просто присваиваем значение 0 можно сводить более эффективно А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 16 / 30
  • 60.
    Примеры решенных кроссвордов А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 17 / 30
  • 61.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 18 / 30
  • 62.
    Игра Eternity Определение Нужно замоститьквадрат заданным набором доминошек так, чтобы узоры на граничащих частях доминошек совпадали. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 19 / 30
  • 63.
    Сведение к SAT данквадрат n × n и n2 доминошек А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 20 / 30
  • 64.
    Сведение к SAT данквадрат n × n и n2 доминошек перенумеруем все клетки и доминошки числами от 1 до n2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 20 / 30
  • 65.
    Сведение к SAT данквадрат n × n и n2 доминошек перенумеруем все клетки и доминошки числами от 1 до n2 заводим два типа переменных: А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 20 / 30
  • 66.
    Сведение к SAT данквадрат n × n и n2 доминошек перенумеруем все клетки и доминошки числами от 1 до n2 заводим два типа переменных: xij — в i-й клетке стоит j-я доминошка А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 20 / 30
  • 67.
    Сведение к SAT данквадрат n × n и n2 доминошек перенумеруем все клетки и доминошки числами от 1 до n2 заводим два типа переменных: xij — в i-й клетке стоит j-я доминошка yjk — j-я доминошка в “положении” k, 1 ≤ k ≤ 4 (например, так: k = 1 — не повернута, k = 2 — повернута на /2 по часовой, k = 3 — на , k = 4 — на /2 против часовой) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 20 / 30
  • 68.
    Сведение к SAT А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 21 / 30
  • 69.
    Сведение к SAT каждая доминошка находится ровно в одном “положении”: (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 21 / 30
  • 70.
    Сведение к SAT каждая доминошка находится ровно в одном “положении”: (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q каждая доминошка стоит хотя бы в одной клетке: {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 21 / 30
  • 71.
    Сведение к SAT каждая доминошка находится ровно в одном “положении”: (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q каждая доминошка стоит хотя бы в одной клетке: {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] в каждой клетке стоит хотя бы одна доминошка: {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 21 / 30
  • 72.
    Сведение к SAT каждая доминошка находится ровно в одном “положении”: (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q каждая доминошка стоит хотя бы в одной клетке: {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] в каждой клетке стоит хотя бы одна доминошка: {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] доминошка не стоит в двух клетках одновременно: {(¬xpj ∨ ¬xqj )}p̸=q А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 21 / 30
  • 73.
    Сведение к SAT(продолжение) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 22 / 30
  • 74.
    Сведение к SAT(продолжение) в клетке одновременно не стоят две доминошки: {(¬xip ∨ ¬xiq )}p̸=q А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 22 / 30
  • 75.
    Сведение к SAT(продолжение) в клетке одновременно не стоят две доминошки: {(¬xip ∨ ¬xiq )}p̸=q две доминошки должны граничить равными ребрами: {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )}, если клетки i1 и i2 — соседи и при постановке туда доминошек j1 и j2 в “положениях”, соответственно, k1 и k2 нарушается узор А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 22 / 30
  • 76.
    Не все такпросто, тем не менее А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 23 / 30
  • 77.
    Не все такпросто, тем не менее итак, мы записали игру Eternity в виде задачи выполнимости конкретной формулы при помощи полиномиального сведения А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 23 / 30
  • 78.
    Не все такпросто, тем не менее итак, мы записали игру Eternity в виде задачи выполнимости конкретной формулы при помощи полиномиального сведения осталось напустить на полученную формулу какой-нибудь эффективный SAT-солвер А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 23 / 30
  • 79.
    Не все такпросто, тем не менее итак, мы записали игру Eternity в виде задачи выполнимости конкретной формулы при помощи полиномиального сведения осталось напустить на полученную формулу какой-нибудь эффективный SAT-солвер но в чем же тогда подвох? А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 23 / 30
  • 80.
    Не все такпросто, тем не менее итак, мы записали игру Eternity в виде задачи выполнимости конкретной формулы при помощи полиномиального сведения осталось напустить на полученную формулу какой-нибудь эффективный SAT-солвер но в чем же тогда подвох? давайте примерно оценим длину полученной формулы А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 23 / 30
  • 81.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 82.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 83.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] n2 · n2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 84.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] n2 · n2 n2 · n (︀ )︀ {(¬xpj ∨ ¬xqj )}p̸=q 2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 85.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] n2 · n2 n2 · n (︀ )︀ {(¬xpj ∨ ¬xqj )}p̸=q (︀2)︀ 2· n {(¬xip ∨ ¬xiq )}p̸=q n 2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 86.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] n2 · n2 n2 · n (︀ )︀ {(¬xpj ∨ ¬xqj )}p̸=q (︀2)︀ 2· n {(¬xip ∨ ¬xiq )}p̸=q n 2 {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )} ∼ n2 · n2 · n2 А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 87.
    Оценка длины (yj1 ∨ yj2 ∨ yj3 ∨ yj4 ) ∧ {(¬yjp ∨ ¬yjq )}p̸=q (4 + 2 · 6)n2 {(x1j ∨ x2j ∨ · · · ∨ xn2 j )}j∈[n2 ] n2 · n2 {(xi1 ∨ xi2 ∨ · · · ∨ xin2 )}i∈[n2 ] n2 · n2 n2 · n (︀ )︀ {(¬xpj ∨ ¬xqj )}p̸=q (︀2)︀ 2· n {(¬xip ∨ ¬xiq )}p̸=q n 2 {(¬xi1 j1 ∨ ¬xi2 j2 ∨ ¬yi1 k1 ∨ ¬yi2 k2 )} ∼ n2 · n2 · n2 Итого, порядок длины формулы будет n6 , что при n = 16 составляеят 166 = 224 = 16 777 216. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 24 / 30
  • 88.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 25 / 30
  • 89.
    Задача о максимальномразрезе Определение Задача о максимальном разрезе (maximum cut, MAX-CUT) заключается в нахождении такого разбиения вершин графа на две части, при котором количество ребер, концы которых принадлежат разным частям, максимально. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 26 / 30
  • 90.
    Задача о максимальномразрезе Определение Задача о максимальном разрезе (maximum cut, MAX-CUT) заключается в нахождении такого разбиения вершин графа на две части, при котором количество ребер, концы которых принадлежат разным частям, максимально. NP-трудность А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 26 / 30
  • 91.
    Задача о максимальномразрезе Определение Задача о максимальном разрезе (maximum cut, MAX-CUT) заключается в нахождении такого разбиения вершин графа на две части, при котором количество ребер, концы которых принадлежат разным частям, максимально. NP-трудность Одна из знаменитых 21-й NP-полной задачи Карпа. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 26 / 30
  • 92.
    Задача о максимальномразрезе Определение Задача о максимальном разрезе (maximum cut, MAX-CUT) заключается в нахождении такого разбиения вершин графа на две части, при котором количество ребер, концы которых принадлежат разным частям, максимально. NP-трудность Одна из знаменитых 21-й NP-полной задачи Карпа. Остается NP-полной даже на графах степени 3. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 26 / 30
  • 93.
    Сведение к MAX-2-SAT А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 27 / 30
  • 94.
    Сведение к MAX-2-SAT каждой вершине u графа G (V , E ) поставим в соответствие переменную xu (xu = 1 — вершина u принадлежит первой части) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 27 / 30
  • 95.
    Сведение к MAX-2-SAT каждой вершине u графа G (V , E ) поставим в соответствие переменную xu (xu = 1 — вершина u принадлежит первой части) для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv ) А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 27 / 30
  • 96.
    Сведение к MAX-2-SAT каждой вершине u графа G (V , E ) поставим в соответствие переменную xu (xu = 1 — вершина u принадлежит первой части) для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv ) видно, что набор значений переменным u, v выполняет оба клоза, когда u и v в разных частях, и выполняет только один из них — когда в одной А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 27 / 30
  • 97.
    Сведение к MAX-2-SAT каждой вершине u графа G (V , E ) поставим в соответствие переменную xu (xu = 1 — вершина u принадлежит первой части) для каждого ребра (u, v ) запишем два клоза (xu ∨ xv ), (¬xu ∨ ¬xv ) видно, что набор значений переменным u, v выполняет оба клоза, когда u и v в разных частях, и выполняет только один из них — когда в одной таким образом, максимальное количество одновременно выполнимых клозов полученной формулы равно |E | + |MAX-CUT(G )| А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 27 / 30
  • 98.
    План лекции 1 Определение задачи 2 Сведения Японские кроссворды Eternity Максимальный разрез 3 Что мы узнали за сегодня А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 28 / 30
  • 99.
    Что мы узнализа сегодня? А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 100.
    Что мы узнализа сегодня? Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 101.
    Что мы узнализа сегодня? Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 102.
    Что мы узнализа сегодня? Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. Сведения: А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 103.
    Что мы узнализа сегодня? Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. Сведения: японские кроссворды, игра Eternity — к SAT А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 104.
    Что мы узнализа сегодня? Многие известные задачи из NP очень просто сводятся к SAT или MAX-SAT. Сведя задачу к SAT, на практике можно воспользоваться SAT-солвером. Сведения: японские кроссворды, игра Eternity — к SAT задача о максимальном разрезе — к MAX-SAT А. Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 29 / 30
  • 105.
    Спасибо за внимание! А.Куликов (CS клуб при ПОМИ) 11. Задача выполнимости 30 / 30