Эквивалентность формул крома тягутся?
-
29-09-2020 - |
Вопрос
Предположим, у меня есть два Crom Formulas $ \ psi_1, \PSI_2 $ .Формулы KROM - это формулы пропозициональных в CNF, которые имеют 2 литерала в каждом пункте.Каждый буквальный может быть отрицательный или не отрицательный.Другими словами, $ \ psi_1, \ psi_2 $ 2-CNF формул.Например:
$ (x_1 \ vee \ neg x_2) \ land (\ neg x_2 \ vee x_3) \ land (x_3 \ vee x_4) $
Я хочу решить, стоит ли $ \ psi_1, \ psi_2 $ логически эквивалентен, то есть $ \ psi_1 \ leftrightarrow\ psi_2 $ .Эквивалентно, я хочу проверить, стоит ли $ f= (\ psi_1 \ vee \ neg \ psi_2) \ enge (\ neg \ psi_1 \ vee \ psi_2) $ Все задания $ x_1, \ dots, x_n $ .
Эта проблема тяготана?
Решение
Да, эквивалентность может быть проверена в полиноме времени (на самом деле, в квадратичном времени).
Я опишу, как проверить, будет ли $ \ psi_1 \ lor \ neg \ psi_2 $ для всех заданий. Вы можете сделать то же самое для $ \ neg \ psi_1 \ lor \ psi_2 $ и используйте это, чтобы проверить, будет ли $ F $ - это тавтология, т. Е. Будь то $ \ psi_1, \ psi_2 $ логически эквивалентны.
Я сделаю это, проверив, есть ли $ \ psi_1 \ lor \ neg \ psi_2 $ false для любого назначения, или другими словами, будь то $ \ neg (\ psi_1 \ lor \ neg \ psi_2) $ удовлетворяет. Обратите внимание, что
$$ \ neg (\ psi_1 \ lor \ neg \ psi_2)=neg \ psi_1 \ land \ psi_2, $$
Так что достаточно, чтобы проверить удовлетворяемость $ \ neg \ psi_1 \ land \ psi_2 $ где $ \ psi_1, \ PSI_2 $ являются формулами KROM (2-CNF).
Предположим, что $ \ psi_1= c_1 \ land \ cdots \ land c_k $ где $ C_i $ это $ i $ th prose в $ \ psi_1 $ . Тогда
$$ \ neg \ psi_1= (\ neg C_1) \ lor \ cdots \ lor (\ neg c_k). $$
Следовательно,
$$ \ begin {align *} \ neg \ psi_1 \ land \ psi_2 &= ((\ neg c_1) \ lor \ cdots \ lor (\ neg c_k)) \ land \ psi_2 \\ &= (\ neg c_1 \ land \ psi_2) \ lor \ cdots \ lor (\ neg c_k \ land \ psi_2). \ end {align *} $$
Теперь, $ \ neg \ psi_1 \ land \ psi_2 $ удовлетворяет iff $ \ neg c_i \ land \ psi_2 $ удовлетворяется для некоторых $ i $ . Итак, мы можем произойти за счет $ i $ и тестовая удовлетворяемость каждого $ \ neg c_i \ land \ psi_2 $ ; Если кто-то из них будет удовлетворен, то $ \ neg \ psi_1 \ lor \ psi_2 $ удовлетворяет и $ F $ не тавтология и $ \ psi_1, \ psi_2 $ не логически эквивалентны.
Как проверить удовлетворяемость $ \ neg c_i \ land \ psi_2 $ ? Ну, $ C_i $ имеет форму $ (\ ell_1 \ lor \ ell_2) $ где $ \ ell_1, \ ell_2 $ - это два литерала, поэтому $ \ neg C_i \ land \ psi_2 $ имеет форму < Spaness Class="Math-Container"> $ \ neg \ el_1 \ land \ neg \ el_2 \ land \ psi_2 $ . Это также формула KROM (2-CNF), поэтому вы можете проверить свою удовлетворительность с использованием стандартного алгоритма многонового времени. Вы делаете линейное количество таких испытаний, поэтому общее время работы - многочлена. На самом деле, это квадратично, так как устойчивость к тестированию может быть сделана в линейном времени.
Другие советы
Реконт. 2-SAT STRECT, который использует сильно подключенные компоненты: мы строим график с вершинами $ x_1, \ ldots, x_n, \ lnot x_1, \ ldots, \ lnot x_n $ < / span>, и мы заменяем каждый пункт $ x_i \ lor x_j $ с ребрами $ \ lnot x_i \ to x_j $ < / span> и $ \ lnot x_j \ to x_i $ . Пример от Здесь :
Чтобы удовлетворить формулу, необходимо и достаточное назначение вершин, чтобы на графике нет противоречий (без ребра
- Мы создаем эти графики $ G_1 $ и $ G_2 $ для обоих формул
$ f_1 $ и $ f_2 $ . - Если есть цикл $ x_i \ readsto \ lnot x_i \ leadsto x_i $ на графике, то его формула не имеет решений. Мы проверяем, что оба формулы разрешимы / неразрешимы.
- Если существует путь формы $ x_i \ readsto \ lnot x_i $ (аналогично для случая $ \ lnot x_i \ readsto x_i $ ), мы знаем, что для удовлетворения формулы мы должны выбрать $ x_i $ , чтобы быть ложным (в противном случае у нас есть противоречие). Мы помним этот выбор. Используя график, мы можем назначать значения для всех вершин, доступных из $ \ lnot x_i $ (они должны быть правдой). Опять же, убедитесь, что оба формулы сделали именно те же решения в конце.
- Удалите все края в / от всех известных вершин от графиков.
- теперь $ f_1 $ и $ f_2 $ эквивалентны $ v_1, v_2 $ путь
$ G_1 $ iff, он существует в $ G_2 $ . Это можно проверить в большинстве $ o (| v | \ cdot | e |) $ время (просто запустите dfs от каждой вершины и убедитесь, что оно посетило то же самое вершины для обоих графов). Может быть, это можно сделать быстрее. - $ true $ Для всех вершин, доступных из $ v_1 $ .
- $ false $ От всех вершин, которые могут достигать $ v_2 $ .
- Удалите все известные вершины (упомянутые выше и их дополнения) с графика. Все остальные вершины создают подключенные компоненты. Мы связываем соединенные компоненты в
$ TRUE $ и подключенные компоненты, соответствующие их дополнениям - в $ false $ ( см. Примечание ниже). - Если $ u $ принадлежит компоненту, который был полностью окрашенным $ true $ , то такое SPAN CLASS= «Математический контейнер»> $ V $ также должен быть правдой.
- в противном случае, это означает, что $ u $ достижимо от $ v_1 $ , и, следовательно, $ V $ также достижимо от $ v_1 $ и должен быть правдой. $ \ blacksquare $
<Сильные> Доказательство :
$ \ fenderarrows $ : очевидно, поскольку после переходного закрытия графов у нас есть те же последствия в обоих формулах.
$ \ pruralarrow $ : путем противоречия. WLOG Мы предполагаем, что существует путь $ v_1 \ veadsto v_2 $ в $ G_1 $ который не Существуют в $ g_2 $ . Это означает, что назначение $ v_1:= true $ , $ v_2:= false $ возможен в $ f_2 $ (поскольку нет пути $ v_1 \ redsto v_2 $ ), но неисправен в $ f_1 $ .
Именно следующее назначение удовлетворяет $ f_2 $ :
- .
Это задание не имеет противоречия, поскольку не может быть никаких преимуществ $ u \ to v $ form $ true \ до false $ :
- .
<Сильная> Техническая нота : для каждой переменной $ x_i $ Есть две вершины: