Преобразование Цейтина , альтернативно записываемое как преобразование Цейтина , принимает в качестве входных данных произвольную комбинаторную логическую схему и производит равновыполнимую булеву формулу в конъюнктивной нормальной форме (КНФ). Длина формулы линейна по размеру схемы. Входные векторы, которые делают выход схемы «истинным», находятся в соответствии 1 к 1 с назначениями, которые удовлетворяют формуле. Это сводит проблему выполнимости схемы на любой схеме (включая любую формулу) к проблеме выполнимости на формулах в 3-КНФ. Она была открыта российским ученым Григорием Цейтиным .
Мотивация
Наивный подход заключается в том, чтобы записать схему как булево выражение и использовать закон Де Моргана и распределительное свойство для преобразования ее в КНФ. Однако это может привести к экспоненциальному увеличению размера уравнения. Преобразование Цейтина выводит формулу, размер которой растет линейно относительно входной схемы.
Подход
Выходное уравнение — это константа 1, установленная равной выражению. Это выражение является конъюнкцией подвыражений, где удовлетворение каждого подвыражения обеспечивает правильную работу одного вентиля во входной схеме. Удовлетворение всего выходного выражения, таким образом, обеспечивает правильную работу всей входной схемы.
Для каждого гейта вводится новая переменная, представляющая его выход. Небольшое предварительно вычисленное выражение CNF, связывающее входы и выходы, добавляется (через операцию "and") к выходному выражению. Обратите внимание, что входы для этих гейтов могут быть как исходными литералами, так и введенными переменными, представляющими выходы подгейтов.
Хотя выходное выражение содержит больше переменных, чем входное, оно остается equisatisfiable , то есть оно выполнимо, если и только если исходное входное уравнение выполнимо. Когда найдено удовлетворяющее назначение переменных, эти назначения для введенных переменных можно просто отбросить.
Последнее предложение добавляется с одним литералом: выходной переменной конечного шлюза. Если этот литерал дополняется, то удовлетворение этого предложения принудительно делает выходное выражение ложным; в противном случае выражение принудительно становится истинным.
Примеры
Рассмотрим следующую формулу .
Рассмотрим все подформулы (исключая простые переменные):
Введите новую переменную для каждой подформулы:
Объедините все замены и замену для :
Все замены могут быть преобразованы в КНФ, например
Подвыражения Gate
Перечислены некоторые из возможных подвыражений, которые могут быть созданы для различных логических вентилей. В выражении операции C действует как выход; в подвыражении CNF C действует как новая булева переменная. Для каждой операции подвыражение CNF истинно тогда и только тогда, когда C придерживается контракта булевой операции для всех возможных входных значений.
Следующая схема возвращает true, когда хотя бы некоторые из ее входов являются true, но не более двух за раз. Она реализует уравнение y = x1 · x2 + x1 · x2 + x2 · x3 . Для каждого выхода вентиля вводится переменная; здесь каждый отмечен красным:
Обратите внимание, что выход инвертора с x 2 в качестве входа имеет две введенные переменные. Хотя это избыточно, это не влияет на равновыполнимость результирующего уравнения. Теперь замените каждый вентиль его соответствующим подвыражением CNF:
Конечная выходная переменная — gate8, поэтому для обеспечения того, чтобы выход этой схемы был истинным, добавляется одно последнее простое предложение: (gate8). Объединение этих уравнений приводит к конечному экземпляру SAT:
Одним из возможных удовлетворительных назначений этих переменных является:
переменная
ценить
ворота2
0
ворота3
1
ворота1
1
ворота6
1
ворота7
0
ворота4
0
ворота5
1
ворота8
1
х2
0
х3
1
х1
0
Значения введенных переменных обычно отбрасываются, но их можно использовать для отслеживания логического пути в исходной схеме. Здесь, действительно, соответствует критериям исходной схемы, чтобы вывести true. Чтобы найти другой ответ, можно добавить предложение (x1 ∨ x2 ∨ x3 ) и снова выполнить решатель SAT.
Вывод
Представлен один из возможных выводов подвыражения CNF для некоторых выбранных вентилей:
ИЛИ ворота
Логический элемент ИЛИ с двумя входами A и B и одним выходом C удовлетворяет следующим условиям:
если выход C истинен, то по крайней мере один из его входов A или B истинен,
если выход C ложен, то оба его входа A и B ложны.
Мы можем выразить эти два условия как совокупность двух импликаций:
Замена импликаций эквивалентными выражениями, включающими только конъюнкции, дизъюнкции и отрицания, дает
и применение ассоциативности конъюнкции дает формулу CNF
НЕ ворота
Вентиль НЕ работает правильно, когда его вход и выход противостоят друг другу. То есть:
если выход C истинен, вход A ложен
если выход C ложен, то вход A истинен
выразите эти условия в виде выражения, которое должно быть выполнено:
,
NOR-ворота
Вентиль NOR работает правильно, если выполняются следующие условия:
если вывод C истинен, то ни A, ни B не истинны
если вывод C ложен, то по крайней мере один из выводов A и B истинен
выразите эти условия в виде выражения, которое должно быть выполнено:
, , , ,
Ссылки
ГС Цейтин : О сложности вывода в исчислении высказываний. В: Слисенко, А.О. (ред.) Исследования по конструктивной математике и математической логике, часть II, Семинары по математике, стр. 115–125. Математический институт им. В.А. Стеклова (1970). Перевод с русского: Записки научных семинаров ЛОМИ 8 (1968), стр. 234–259.
Г. С. Цейтин: О сложности вывода в исчислении высказываний. Доклад на Ленинградском семинаре по математической логике, состоявшемся в сентябре 1966 г.