Функциональная полнота
Теорема (о функциональной полноте). Для любой булевой функции f найдется формула φ, представляющая функцию f. Если f ≠ 0, то существует представляющая ее формула φ, находящаяся в СДНФ:
и такое представление единственно с точностью до порядка следования конституент единицы. Если f ≠ 1, то существует приставляющая ее формула φ, находящаяся в СКНФ:
,
и такое представление единственно с точностью до порядка следования конституент нуля.
Пример. Найти СДНФ и СКНФ функции f(x,y,z), заданной следующей таблицей истинности:
-
х
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
f(x,y,z)
1
0
0
1
0
1
0
1
По теореме о
функциональной полноте СДНФ имеет вид
,
а СКНФ —
.
Для нахождения СДНФ и СКНФ исходной
формулы φ
составляется ее таблица истинности, а
затем по ней строится требуемая
совершенная нормальная форма. По СДНФ
φ1
для функции f,
можно составить ее таблицу истинности
и по ней найти СКНФ φ2.
Описанный способ нахождения СДНФ и СКНФ по таблице истинности бывает часто более трудоемким, чем следующий алгоритм.
Алгоритм. Для нахождения СДНФ данную формулу нужно привести сначала к ДНФ, а затем преобразовать ее конъюнкты в конституенты единицы с помощью следующих действий:
а) если в конъюнкт входит некоторая переменная вместе со своим отрицанием, то нужно удалить этот конъюнкт из ДНФ;
б) если в конъюнкт одна и та же литера хδ входит несколько раз, то удалить все литеры хδ, кроме одной;
в) если в некоторый
конъюнкт
не входит переменная y,
то этот конъюнкт заменить на эквивалентную
формулу
применяя закон дистрибутивности,
привести полученную формулу к ДНФ; если
недостающих переменных несколько, то
для каждой из них к конъюнкту добавляется
соответствующую формулу вида
;
г) если в полученной ДНФ имеется несколько одинаковых конституент единицы, то оставить только одну из них. В результате получается СДНФ.
Пример. Найдем
СДНФ для ДНФ
.
Решение.
Имеем
φ
~
~
~
~
~
~
~
~
~
~
~
.
Алгоритм приведения КНФ к СКНФ аналогичен вышеизложенному описанию алгоритма приведения ДНФ к СДНФ.
Двухэлементная булева алгебра.
Рассмотрим множество
Во
= {0,1} и
определим на нем операции
,
согласно таблицам истинности формул
,
,
.
Тогда система Bо
=
является двухэлементной булевой алгеброй
со всеми свойствами на операции. Формулы
алгебры логики, содержащие лишь логические
операции
являются термами в Bо.
Термом
является любое функциональное выражение,
составленное с помощью переменных и/или
сигнатурных функциональных символов.
По теореме о функциональной полноте в булевой алгебре Bо с помощью терма можно задать любую булеву функцию.
Фактор-алгебра алгебры формул
Обозначим через Фn множество всех формул алгебры логики с переменными из множества {х1, х2, ... , хn}.
На множестве Фn
определены двухместные операции
конъюнкции и дизъюнкции —
:
,
:
— и одноместная операция отрицания
:
.
Выделим на множестве
Фn
две константы
и
.
Так получается алгебра
формул Fn
=
.
Отношение ~ эквивалентности формул является конгруэнцией на алгебре Fn, и поэтому можно задать фактор-алгебру Fn/~.
На фактор-множестве Фn/~ операции , и определяются следующим образом:
~(φ) ~(ψ) = ~( φ ψ),
~(φ) ~(ψ) = ~( φ ψ),
~(φ) = ~( φ),.
На множестве Фn/~
выделяются две константы: 0 = ~(
)
и 1 = ~(
).
Полученная система
является фактор-алгеброй Fn/~.
Теорема. Фактор-алгебра Fn/~ изоморфна алгебре булевых функций Bn
Доказательство.
Искомый изоморфизм
ξ:
Fn/~
→ Bn
определяется по следующему правилу:
классу эквивалентности ~(φ)
сопоставляется функция fφ,
имеющая таблицу истинности произвольной
формулы из множества ~(φ).
Поскольку разным классам эквивалентности
соответствуют различные таблицы
истинности, отображение ξ
инъективно, а так как для любой булевой
функции f
из Вп
найдется формула
,
представляющая функцию f,
то отображение ξ
сюръективно. Сохранение операций
,
0, 1 при отображении ξ
проверяется непосредственно. ЧТД.
По теореме о
функциональной полноте каждой функции
,
не являющейся константой 0,
соответствует некоторая СДНФ ψ,
принадлежащая классу ~(φ)
=
ξ-1(f)
формул,
представляющих функцию f.
Возникает задача нахождения в классе
~(φ)
дизъюнктивной нормальной формы, имеющей
наиболее простое строение.
