SlideShare a Scribd company logo
1 of 105
Download to read offline
с/к “Эффективные алгоритмы”
                  Лекция 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

More Related Content

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
 

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