Алгоритм приведения формулы к днф.
1. Выразить все логические операции, участвующие в построении формулы, через дизъюнкции, конъюнкции и отрицания, используя эквивалентности
~
~
и определения операций:
штрих Шеффера (антиконъюнкция) ,
стрелки Пирса (антидизъюнкция)
сумма по модулю два (антиэквивалентность) .
2. Используя законы де Моргана, переносим все отрицания к переменным и сокращаем двойные отрицания по правилу
~ φ
3. Используя закон дистрибутивности
~ ,
преобразуем формулу так, чтобы все конъюнкции выполнялись раньше дизъюнкций. В результате применения пп. 1-3 получается ДНФ данной формулы.
Пример 6. Привести
к ДНФ формулу
.
Решение.
Выразим
логические операции
и
через
,
и
:
φ
~
~ ~
.
В полученной формуле перенесем отрицание к переменным и сократим двойные отрицания:
φ
~
~
~
.
Используя закон дистрибутивности, приводим формулу к ДНФ:
φ
~
.
Приведение формулы к КНФ производится аналогично приведению ее к ДНФ, только вместо п. 3 применяется пункт
3'. Используя закон дистрибутивности ~ , преобразуем формулу так, чтобы все дизъюнкции выполнялись раньше, чем конъюнкции.
Пример 6. Привести
к КНФ формулу
,
Решение. Преобразуем формулу φ к формуле, не содержащей :
φ
~
~
В
полученной формуле перенесем отрицание
к переменным и сократим двойные отрицания:
φ
~
~
По закону дистрибутивности получаем, что формула φ эквивалентна формуле
φ
~
,
являющейся КНФ.
Упростим полученную формулу:
1) используем закон дистрибутивности
~
2) используем закон эквивалентность φ φ0 ~ φ,
~
3) используем закон поглощения
~ .
Таким образом, формула φ из примера 6.1.1 эквивалентными преобразованиями приводится к формуле (являющейся одновременно ДНФ и КНФ формулы φ).
~
~
~
Построить таблицу истинности
Любая булева функция может иметь бесконечно много представлений в виде ДНФ и КНФ. Особое место среди этих представлений занимают совершенные ДНФ (СДНФ) и совершенные КНФ (СКНФ).
Совершенные днф (сднф) и кнф (скнф).
Пусть (x1,..., xn) — набор логических переменных, Δ = (δ1,,.., δп) — набор нулей и единиц.
Конституентой
единицы набора
Δ
называется конъюнкт K1(δ1
...
δп)
=
.
Конституентой
нуля набора
Δ
называется дизъюнкт K0(δ1
…
δп)
=
.
Отметим, что K1(δ1 ... δп) = 1, а K0(δ1 … δп) = 0 тогда и только тогда, когда х1 = δ1, х2 = δ2, хn = δn.
Совершенной ДНФ называется дизъюнкция некоторых конституент единицы, среди которых нет одинаковых.
Совершенной КНФ называется конъюнкция некоторых конституент нуля, среди которых нет одинаковых.
Таким образом,
СДНФ (СКНФ) есть ДНФ (КНФ), в которой в
каждый конъюнкт (дизъюнкт) каждая
переменная хi
из набора {x1,...,
xn}
входит ровно один раз, причем входит
либо сама хi,
либо ее отрицание
.
Пример 7. Формула
есть конституента
единицы К1(1,0,1).
Формула
есть
конституента нуля К0(0,0,1).
Формула
— СДНФ.
Формула
— СКНФ.
Формула
не
является СДНФ.
Для решения задачи нахождения СДНФ и СКНФ, эквивалентных исходной формуле φ, предварительно рассмотрим разложения булевой функции f(x1, х2,...,xп) по k; переменным (для определенности по x1, х2,...,xk) — разложения Шеннона.
Теорема (первая теорема Шеннона). Любая булева функция f(x1, х2,...,xп) представима в виде разложения Шеннона:
Доказательство.
Прежде всего, заметим, что
.
Подставим произвольно вместо первых k
переменных их значения:
.
Тогда левая часть доказываемой формулы
равна
Правая часть представляет собой
дизъюнкцию 2k
конъюнкций вида
,
которые этой подстановкой разбиваются
на два класса. К первому классу относится
конъюнкция, у которой набор (δ1,
δ2,...,δk)
совпадает с набором
:
=
= 1 1 ... 1 =
Эта конъюнкция
равна левой части формулы. Ко второму
классу относится 2k-1
конъюнкций, у каждой из которых хотя бы
в одной переменной xi,
выполнено условие
.
Следовательно, каждая из них равна нулю.
Используя закон
,
получаем, что левая и правая части формул
равны при любой подстановке переменных
x1,
x2...,
xn.
В силу принципа двойственности для булевых алгебр справедлива
Теорема 6.4.3 (вторая теорема Шеннона). Любая булева функция f(x1, х2,...,xп) представима в виде разложения Шеннона:
В предельном случае, когда k = n, для булевой функции f(x1, х2,...,xп), не равной нулю, получаем ее представление в виде совершенной ДНФ:
Аналогично для булевой функции f(x1, х2,...,xп), не равной единице, получаем ее представление в виде совершенной КНФ:
Приведенные формулы позволяют сформулировать следующую теорему о функциональной полноте.
