Совершенные нормальные формы
Пусть – логическая переменная, . Введем обозначение . Выражение
называется литерой. Литеры и называются контрарными.
Отметим, что тогда и только тогда, когда .
Теорема (о разложении функций по переменным): Каждую функцию алгебры логики при любом можно представить в следующей форме:
,
где дизъюнкция берется по всем возможным наборам .
Это представление называется разложением функции по переменным.
Следствие 1: Разложение функции по одной переменной, например имеет вид:
.
Следствие 2: Разложение функции по переменным имеет вид:
.
Элементарной конъюнкцией, или конъюнктом называется конъюнкция литер. Элементарной дизъюнкцией, или дизъюнктом называется дизъюнкция литер.
Например, формулы и – дизъюнкты, формулы и – конъюнкты, является одновременно и дизъюнктом, и конъюнктом, а формула не является ни элементарной дизъюнкцией, ни элементарной конъюнкцией.
Дизъюнкция конъюнктов называется дизъюнктивной нормальной формой (ДНФ); конъюнкция дизъюнктов называется конъюнктивной нормальной формой (КНФ).
Например, формула – ДНФ, формула – КНФ, а формула является одновременно КНФ и ДНФ.
Теорема: 1) Любая формула эквивалентна некоторой ДНФ. 2) Любая формула эквивалентна некоторой КНФ.
Опишем алгоритм приведения формулы к ДНФ (КНФ).
1. Выразить все логические операции, участвующие в построении формулы, через дизъюнкции, конъюнкции и отрицания, используя эквивалентности и определения операций .
2. Используя законы де Моргана, перенести все отрицания к переменным и сократить двойные отрицания по правилу .
3. Используя закон дистрибутивности, преобразовать формулу так, чтобы все конъюнкции (дизъюнкций) выполнялись раньше дизъюнкций (конъюнкций).
В результате применения пп. 1 – 3 получается ДНФ (КНФ) данной формулы.
Например, для формулы имеем:
, то есть получено две ДНФ:
ДНФ ; ДНФ .
Для формулы можно получить (выполнить самостоятельно): КНФ , КНФ .
Любая булева функция может иметь бесконечно много представлений в виде ДНФ и КНФ. Особое место среди этих представлений занимают совершенные ДНФ (СДНФ) и совершенные КНФ (СКНФ).
Пусть – набор логических переменных, – набор нулей и единиц. Конституентой единицы набора называется конъюнкт . Конституентой нуля набора называется дизъюнкт . Отметим, что (или ) тогда и только тогда, когда , , … , .
Совершенной ДНФ называется дизъюнкция некоторых конституент единицы, среди которых нет одинаковых, а совершенной КНФ называется конъюнкция некоторых конституент нуля, среди которых нет одинаковых. Итак, СДНФ (СКНФ) есть ДНФ (КНФ), в которой в каждый конъюнкт (дизъюнкт) каждая переменная из набора входит ровно один раз, причем входит либо сама , либо ее отрицание .
Например, формула есть конституента единицы , формула есть конституента нуля , формула – СДНФ, формула – СКНФ, а формула не является СДНФ.
СДНФ называется совершенной, потому что каждое слагаемое в дизъюнкции включает все переменные; дизъюнктивной, потому что главная операция – дизъюнкция, а почему она называется нормальной, объясняется следующими соображениями. Говорят, что некоторый класс формул имеет нормальную форму, если существует другой класс формул , которые называются нормальными формами, такой, что любая формула класса имеет единственную равносильную формулу из класса . Наличие у класса формул нормальной формы обеспечивает разрешимость, то есть наличие алгоритма проверки равносильности. Один и тот же класс может иметь несколько различных нормальных форм, то есть несколько различных классов .
Теорема (о функциональной полноте): Для любой булевой функции найдется формула , представляющая функцию . Если , то существует представляющая ее формула, находящаяся в СДНФ:
,
и такое представление единственно с точностью до порядка следования конституент единицы. Если , то существует представляющая ее формула, находящаяся в СКНФ:
,
и такое представление единственно с точностью до порядка следования конституент нуля.
Константа 0 может быть представлена только СКНФ ( ), а константа 1 – только СДНФ ( ).
Пример 9: Для булевой функции даны наборы переменных, на которых функция принимает нулевое значение: . Остальные значения функции равны единице. Найти СДНФ и СКНФ.
Решение: Строим следующую таблицу.
Конституенты единицы | Конституенты нуля | ||||
По пятому столбцу таблицы формируем:
СДНФ ,
а по шестому столбцу формируем:
СКНФ .
Описанный в примере 9 способ нахождения СДНФ и СКНФ по таблице истинности бывает часто более трудоемким, чем следующий алгоритм.
Для нахождения СДНФ данную формулу привести сначала к ДНФ, а затем преобразовать ее конъюнкты в конституенты единицы с помощью следующих действий:
1) если в конъюнкт входит некоторая переменная вместе со своим отрицанием, то удалить этот конъюнкт из ДНФ;
2) если в конъюнкт одна и та же литера входит несколько раз, то удалить все литеры , кроме одной;
3) если в некоторый конъюнкт не входит переменная , то этот конъюнкт заменить на эквивалентную формулу и, применяя закон дистрибутивности, привести полученную формулу к ДНФ; если недостающих переменных несколько, то для каждой из них к конъюнкту добавить соответствующую формулу вида ;
4) если в полученной ДНФ имеется несколько одинаковых конституент единицы, то оставить только одну из них. В результате получается СДНФ.
Алгоритм приведения КНФ к СКНФ аналогичен описанному выше алгоритму приведения ДНФ к СДНФ (составить самостоятельно).
Пример 10: Найти СДНФ для формулы: .
Решение:
ДНФ .
= ДНФ =
СДНФ .
Ответ: СДНФ = .
Пример 11: Для формулы из примера 10 найти ее СКНФ, предварительно приведя ее к КНФ.
Решение: =КНФ .
=КНФ =
СКНФ .
Ответ: СКНФ .
Пример 12: Для формулы из примера 10 найти СКНФ, записав предварительно СДНФ ее отрицания, а затем применив принцип двойственности.
Решение: СДНФ .
СКНФ =
.
Дата добавления: 2016-05-25; просмотров: 1607;