Основные термины. Понятие СДНФ и СКНФ

Лекция 6. Канонические формы логических формул, используемых в ЭВМ

Вопросы:

6.1 Основные термины. Понятие СДНФ и СКНФ.

6.2 Алгоритмы построения СДНФ и СКНФ по таблице истинности.

Всякая логическая формула определяет некоторую булевую функцию. В то же время ясно, что для всякой булевой функции можно записать бесконечно много формул ее представляющих (см. задание 3 к § 3.6). Действительно, если имеется хотя бы одна формула, выражающая булеву функцию, то, используя тождественные преобразования, можно изменить эту формулу, построив сколь угодно сложную равносильную формулу, например,

a xor b ≡ (a and (not b)) or ((not a) and b).

Одна из основных задач алгебры логики — нахождение канонических форм (т. е. формул, построенных по определенному правилу, канону), а также наиболее простых формул, представляющих булевы функции.

Определение 1. Если логическая функция выражена через дизъюнкцию, конъюнкцию и отрицание переменных, то такая форма представления называется нормальной.

Среди нормальных форм выделяют такие, в которых функции записываются единственным образом. Их называют совершенными.

Особую роль в алгебре логики играют классы совершенных дизъюнктивных и конъюнктивных нормальных форм (СДНФ и СКНФ). В их основе лежат понятия элементарной дизъюнкции и элементарной конъюнкции.

Определение 2. Формулу называют элементарной конъюнкцией, если она является конъюнкцией одной или нескольких переменных, взятых с отрицанием или без отрицания. Одну переменную или ее отрицание считают одночленной элементарной конъюнкцией.

Пример 1. Формулы являются элементарными конъюнкциями; первые две из них — одночленными.

Определение 3. Формула называется дизъюнктивной нормальной формой (ДНФ), если она является дизъюнкцией неповторяющихся элементарных конъюнкций. ДНФ записываются в виде , где каждое Ai — элементарная конъюнкция.

Пример 2. Приведем две дизъюнктивные нормальные формы:

Определение 4. Формула А от k переменных называется совершенной дизъюнктивной нормальной формой (СДНФ), если:

1) А является ДНФ, в которой каждая элементарная конъюнкция есть конъюнкция k переменных , причем на i -м месте этой конъюнкции стоит либо переменная , либо ее отрицание;

2) все элементарные конъюнкции в такой ДНФ попарно различны.

Задание 1. Даны формулы:

;

;

Определить, являются ли они СДНФ двух переменных.

Решение. Формула А является СДНФ двух переменных. Формулы В и С не являются СДНФ. Формула В зависит от трех переменных, но количество переменных в элементарных конъюнкциях меньше трех. В формуле С переменная х2 дважды входит в одну и ту же элементарную конъюнкцию.

Совершенная дизъюнктивная нормальная форма представляет собой формулу, построенную по строго определенным правилам с точностью до порядка следования элементарных конъюнкций (дизъюнктивных членов) в ней. Она является примером однозначного представления булевой функции в виде формульной (алгебраической) записи.

Определение 5. Формула называется элементарной дизъюнкцией, если она является дизъюнкцией (быть может, одночленной) переменных и отрицаний переменных.

Пример 1 Приведем три элементарные дизъюнкции:
.

Определение 6. Формула называется конъюнктивной нормальной формой (КНФ), если она является конъюнкцией неповторяющихся элементарных дизъюнкций.
КНФ записываются в виде , где каждое Ai — элементарная дизъюнкция.

Пример 2. Формулы

являются конъюнктивными нормальными формами.

Определение 7. Формула А от k переменных называется совершенной конъюнктивной нормальной формой (СКНФ),если:

1) А является КНФ, в которой каждая элементарная дизъюнкция есть дизъюнкция k переменных , причем на i -м месте этой дизъюнкции стоит либо переменная х, либо ее отрицание;

2) все элементарные дизъюнкции в такой КНФ попарно различны.

Задание 2. Даны формулы и . Определить, являются ли они СКНФ.

Решение. Формула А является СКНФ, а формула В не является СКНФ, поскольку переменная дважды входит в первый конъюнктивный член, кроме того, количество переменных в каждой элементарной дизъюнкции меньше трех, в то время как формула зависит от трех переменных.

Вопрос. Всякую ли логическую функцию можно представить в одной из рассмотренных канонических совершенных форм?

Ответ. Да, любую булеву функцию, не равную тождественно 0 или 1, можно представить в виде СДНФ или СКНФ.
Для обоснования этого утверждения имеется теорема.

Теорема 1. Пусть — булева функция от n переменных, не равная тождественно нулю. Тогда существует совершенная дизъюнктивная нормальная форма, выражающая функцию f.

Алгоритм построения СДНФ по таблице истинности:

1. В таблице истинности отмечаем наборы переменных, на которых значение функции f равно единице.

2. Записываем для каждого отмеченного набора конъюнкцию всех переменных следующим образом: если значение некоторой переменной в этом наборе равно 1, то в конъюнкцию включаем саму переменную, в противном случае — ее отрицание.

3. Все полученные конъюнкции связываем операциями дизъюнкции.

Следствие теоремы 1. Для любой формулы можно найти равносильную ей ДНФ.

Пример 3. Требуется построить формулу для функции f (x1, х2, х3), заданной таблицей истинности:

x1 x2 x3 f(x1, х2, х3)
       
       
       
       
       
       
       
       

Используя описанный выше алгоритм, построим для нее СДНФ:

Теорема 2. Пусть — булева функция n переменных, не равная тождественно единице. Тогда существует совершенная конъюнктивная нормальная форма, выражающая функцию f.

На основании теоремы 2 можно предложить следующий алгоритм построения СКНФ по таблице истинности функции.

Алгоритм построения СКНФ по таблице истинности^

1. В таблице истинности отмечаем наборы переменных, на которых значение функции f равно нулю.

2. Записываем для каждого отмеченного набора дизъюнкцию всех переменных следующим образом: если значение некоторой переменной в этом наборе равно 0, то в конъюнкцию включаем саму переменную, в противном случае — ее отрицание.

3. Все полученные дизъюнкции связываем операциями конъюнкции.

Следствие теоремы 2. Для любой формулы можно найти равносильную ей КНФ.

Пример 4. Выразим функцию импликация с помощью операций отрицания, дизъюнкции и конъюнкции. Для этого запишем таблицу истинности функции импликация:

x1 x2 f(x1, х2, х3)
     
     
     
     

Так как в таблице истинности только один набор переменных, на котором функция принимает значение 0, то СКНФ принимает вид:

Ответ:

Вывод: Из алгоритмов построения СДНФ и СКНФ следует, что если на большей части наборов значений переменных функция равна 0, то для получения ее формулы проще построить СДНФ, в противном случае — СКНФ.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: