2SAT — различия между версиями
(Добавлен алгоритм. Заменено "Определение" на "Задачу") |
м (Добавлена расшифровка) |
||
Строка 3: | Строка 3: | ||
Решим задачу 2-SAT выполнимости данной функции. | Решим задачу 2-SAT выполнимости данной функции. | ||
{{Задача | {{Задача | ||
− | |definition = 2-SAT выполнимость данной функции — задача распределения аргументов таким образом, чтобы результат данной функции был равен <tex> 1 </tex>. | + | |definition = 2-SAT (2-satisfiability) выполнимость данной функции — задача распределения аргументов таким образом, чтобы результат данной функции был равен <tex> 1 </tex>. |
}} | }} | ||
Версия 22:14, 3 декабря 2015
Рассмотрим функцию, записанную в виде 2-КНФ (КНФ Крома).
Решим задачу 2-SAT выполнимости данной функции.
Задача: |
2-SAT (2-satisfiability) выполнимость данной функции — задача распределения аргументов таким образом, чтобы результат данной функции был равен | .
Алгоритм Решения
Рассмотрим любой дизъюнкт функции:
. Несложно заметить, что это равнозначно записи .Построим ориентированный граф, где вершинами будут аргументы и их отрицание, а ребрами будут ребра вида:
и для каждого дизъюнкта функции .Теорема: |
Для того, чтобы данная задача 2-SAT имела решение, необходимо и достаточно, чтобы для любой переменной из вершины нельзя достичь и из вершины нельзя достичь одновременно. . |
Доказательство: |
|
Теперь мы можем собрать весь алгоритм воедино:
- Построим граф импликаций.
- Найдём в этом графе компоненты сильной связности за время , пусть — это номер компоненты сильной связности, которой принадлежит вершина .
- Проверим, что для каждой переменной вершины и лежат в разных компонентах, т.е. . Если это условие не выполняется, то вернуть "решение не существует".
- Если , то переменной x выбираем значение true, иначе - false.
Применение 2-SAT задач
Алгоритм для решения 2-SAT может быть применим во всех задачах, где есть набор величин, каждая из которых может принимать 2 возможных значения, и есть связи между этими величинами:
- Расположение текстовых меток на карте или диаграмме. Имеется в виду нахождение такого расположения меток, при котором никакие две не пересекаются. Стоит заметить, что в общем случае, когда каждая метка может занимать множество различных позиций, мы получаем задачу general satisfiability, которая является NP-полной. Однако, если ограничиться только двумя возможными позициями, то полученная задача будет задачей 2-SAT.
- Расположение рёбер при рисовании графа. Аналогично предыдущему пункту, если ограничиться только двумя возможными способами провести ребро, то мы придём к 2-SAT.
- Составление расписания игр. Имеется в виду такая система, когда каждая команда должна сыграть с каждой по одному разу, а требуется распределить игры по типу домашняя-выездная, с некоторыми наложенными ограничениями.
См. также
- КНФ
- Специальные формы КНФ. КНФ в форме Крона (2-КНФ)
- Ориентированные графы
- NP-полнота задачи о выполнимости булевой формулы в форме 3-КНФ
- MAXimal :: algo :: Поиск компонент сильной связности за O(N + M)