2SAT — различия между версиями
Shersh (обсуждение | вклад) м (переименовал 2-SAT Выполнимость в 2-SAT: слишком длинное название) |
(Добавлен TEX. Добавлены ссылки на КНФ и 2-КНФ. Перенесено определение во вступление) |
||
Строка 1: | Строка 1: | ||
− | + | Рассмотрим функцию, записанную в виде 2-КНФ (КНФ Крома). | |
− | + | {{Определение | |
− | 2-SAT выполнимость данной функции | + | |definition = |
+ | 2-SAT выполнимость данной функции — эта задача распределения аргументов таким образом, чтобы результат данной функции был равен 1. | ||
+ | }} | ||
Строка 8: | Строка 10: | ||
− | Рассмотрим любой дизъюнкт функции: | + | Рассмотрим любой дизъюнкт функции: <tex> a \vee b </tex> <br> |
− | Несложно заметить, что это равнозначно записи | + | Несложно заметить, что это равнозначно записи <tex>(\overline a \to b \wedge b \to \overline a) </tex> <br> |
− | Построим ориентированный граф, где вершинами будут аргументы и их отрицание, а ребрами будут ребра вида: | + | Построим ориентированный граф, где вершинами будут аргументы и их отрицание, а ребрами будут ребра вида: <tex>\overline a \to b </tex> и <tex> b \to \overline a </tex> для каждого дизъюнкта функции <tex> a \vee b </tex> <br> |
− | Для того, чтобы данная задача 2-SAT имела решение, необходимо и достаточно, чтобы для любой переменной x из вершины x нельзя достичь | + | Для того, чтобы данная задача 2-SAT имела решение, необходимо и достаточно, чтобы для любой переменной <tex> x </tex> из вершины <tex> x </tex> нельзя достичь <tex> \overline x </tex> и из вершины <tex> \overline x </tex> нельзя достичь <tex> x </tex> одновременно. <tex>(\overline x \to x \wedge x \to \overline x) </tex> |
Строка 19: | Строка 21: | ||
Пусть 2-SAT имеет решение. <br> | Пусть 2-SAT имеет решение. <br> | ||
− | Докажем, что не может быть такого, чтобы для любой переменной x из вершины x можно достичь | + | Докажем, что не может быть такого, чтобы для любой переменной <tex> x </tex> из вершины <tex> x </tex> можно достичь <tex> \overline x </tex> и из вершины <tex> \overline x </tex> можно достичь <tex> x </tex> одновременно. |
− | Тогда чтобы из | + | <tex>(\overline x \to x \wedge x \to \overline x) </tex> <br> |
+ | Тогда чтобы из <tex> \overline x </tex> достичь <tex> x </tex> <tex> (\overline x \to x </tex> было верным), <tex> x </tex> должен быть равен 1. С другой стороны для того, чтобы из <tex> x </tex> достичь <tex> \overline x </tex> <tex> (\overline x \to x </tex> было верным), <tex> x </tex> должен быть равен 0. Отсюда следует противоречие. <br> <br> | ||
− | Пусть для любой переменной x из вершины x нельзя достичь | + | Пусть для любой переменной <tex> x </tex> из вершины <tex> x </tex> нельзя достичь <tex> \overline x </tex> и из вершины <tex> \overline x </tex> нельзя достичь <tex> x </tex> одновременно. <br> |
Докажем, что этого достаточно, чтобы 2-SAT имело решение. <br> | Докажем, что этого достаточно, чтобы 2-SAT имело решение. <br> | ||
− | Пусть из | + | Пусть из <tex> \overline x </tex> можно достичь <tex> x </tex>, но из вершины <tex> x </tex> нельзя достичь <tex> \overline x </tex>. Докажем, что из <tex> x </tex> не достижимо такой <tex> y </tex>, что из <tex> y </tex> достижимо <tex> \overline y </tex>. (т.е. <tex> x \to y \to \overline y (x = 1, y = 0)) </tex>. <br> |
− | Если из x | + | Если из <tex> x \to y </tex>, то <tex> \overline x \vee y </tex>, отсюда следует <tex> \overline y \to \overline x </tex>. Тогда <tex> x \to y \to \overline y \to \overline x </tex>. Следовательно <tex> x \to \overline x </tex>. Противоречие. |
− | == | + | == См. также == |
+ | |||
+ | *[http://neerc.ifmo.ru/wiki/index.php?title=КНФ - КНФ] | ||
+ | *[http://neerc.ifmo.ru/wiki/index.php?title=Специальные_формы_КНФ - Специальные формы КНФ. КНФ в форме Крона (2-КНФ)] | ||
+ | == Источники информации == | ||
*[http://e-maxx.ru/algo/2_sat MAXimal :: algo :: Задача 2-SAT (2-CNF) ] | *[http://e-maxx.ru/algo/2_sat MAXimal :: algo :: Задача 2-SAT (2-CNF) ] |
Версия 10:40, 2 декабря 2015
Рассмотрим функцию, записанную в виде 2-КНФ (КНФ Крома).
Определение: |
2-SAT выполнимость данной функции — эта задача распределения аргументов таким образом, чтобы результат данной функции был равен 1. |
Алгоритм Решения
Рассмотрим любой дизъюнкт функции:
Несложно заметить, что это равнозначно записи
Построим ориентированный граф, где вершинами будут аргументы и их отрицание, а ребрами будут ребра вида:
Для того, чтобы данная задача 2-SAT имела решение, необходимо и достаточно, чтобы для любой переменной
из вершины нельзя достичь и из вершины нельзя достичь одновременно.
Доказательство
Пусть 2-SAT имеет решение.
Докажем, что не может быть такого, чтобы для любой переменной из вершины можно достичь и из вершины можно достичь одновременно.
Тогда чтобы из достичь было верным), должен быть равен 1. С другой стороны для того, чтобы из достичь было верным), должен быть равен 0. Отсюда следует противоречие.
Пусть для любой переменной
Докажем, что этого достаточно, чтобы 2-SAT имело решение.
Пусть из можно достичь , но из вершины нельзя достичь . Докажем, что из не достижимо такой , что из достижимо . (т.е. .
Если из , то , отсюда следует . Тогда . Следовательно . Противоречие.