Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
discretka_1 / lect4_m1_vm1__ipovs_DM_231000.62.doc
Скачиваний:
60
Добавлен:
12.05.2017
Размер:
629.25 Кб
Скачать

Лекция 4

§ 2.2. Совершенные дизъюнктивные и конъюнктивные нормальные формы

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

Базовые понятия и утверждения

1. Принцип двойственности. Функция, заданная формулой , называется двойственной к функции .

Функцию, двойственную к , обозначают , таким образом, .

Пример 1. Используя определение, найти функции, двойственные к дизъюнкции, конъюнкции и функциям одной переменной.

◄ Пусть . Тогда

.

Пусть . Тогда

.

Пусть . Тогда .

Пусть . Тогда .

Пусть . Тогда .

Пусть . Тогда . ►

Сравним таблицы истинности произвольной функции и двойственной к ней функции (табл. 2.17).

Таблица 2.17

0

0

0

1

1

0

1

1

Нетрудно заметить, что столбец значений функции можно получить из столбца значений функции действуя по следующему алгоритму:

1) столбец значений функции переписать в обратном порядке (т.е. число, стоящее в первой строке, записать в последнюю строку; число, стоящее во второй строке, - в предпоследнюю строку и т.д.);

2) в получившемся в результате выполнения п. 1 столбце значений каждое число заменить его отрицанием (0 заменить 1 и 1 заменить 0).

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

Если функция задана вектором значений, то роль столбца значений в алгоритме выполняет вектор значений.

Пример 2. Задать вектором значений функцию, двойственную к данной:

а); б).

◄ а) ;

б) . ►

На примерах мы имели возможность убедиться, что отношение двойственности между функциями симметрично, т.е. если функция , то функция . Это утверждение несложно обосновать теоретически.

Действительно, пусть . Тогда

.

Пусть функция задана формулой, и мы хотим построить формулу для двойственной к ней функции . Согласно определению, это можно сделать, заменив в формуле, которой задана , каждую переменную ее отрицанием и взяв отрицание от самой формулы (именно так мы поступили в примере 1).

Рассмотрим другой способ построения формулы для по формуле, представляющей . Этот способ основан на принципе двойственности: если формула задает функцию , то формула, полученная из нее заменой символов функций на символы двойственных к ним функций , задает функцию, двойственную к функции . Полученную таким образом формулу будем называть двойственной к и обозначать .

Доказательство принципа двойственности приведено во второй части параграфа.

Если функция задана формулой над множеством , то, используя пример 1, принципу двойственности можно придать более конкретный вид: если в формуле , представляющей функцию , все конъюнкции заменить на дизъюнкции, дизъюнкции - на конъюнкции, 1 на 0, 0 на 1, то получим формулу , представляющую функцию , двойственную к .

Пример 3. Задать формулой функцию, двойственную к данной:

а) ; б) .

◄ а) .

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

б) . ►

Если функции равны, то и двойственные к ним функции равны. В сочетании с принципом двойственности это очевидное обстоятельство позволяет получать новые равносильности, переходя от равенства к равенству . Например, из равносильности 1 (см. теорему 2.1) можно получить равносильность 2, а из равносильности 2 - равносильность 1.

Действительно, от равенства перейдем к равенству и, заменив дизъюнкцию на конъюнкцию, а конъюнкцию на дизъюнкцию, получим равенство .

Примерами других пар, связанных законом двойственности, являются равносильности 3 и 4, 5 и 6, 7 и 8, 9 и 10, 11 и 12, 13 и 14, 15 и 16, 17 и 18.

Пример 4. Задать функцию, двойственную к функции :

а) вектором значений; б) формулой.

◄ а) Начнем с того, что зададим таблично (табл. 2.18) саму функцию .

Таблица 2.18

0

0

0

1

0

1

1

0

0

1

0

0

1

1

0

1

0

1

0

0

0

0

1

1

0

0

0

0

1

0

0

1

1

0

1

1

0

1

0

0

0

0

1

1

0

1

1

0

1

1

1

1

0

0

0

0

Далее: .

б) Используя принцип двойственности и результат выполнения упр. 2.12, из формулы получим формулу . ►

2. Задание функции совершенной дизъюнктивной нормальной формой. Мы умеем переходить от реализации функции формулой к заданию ее таблицей истинности. Не меньший интерес представляет обратный переход - от таблицы истинности к формуле. Этот переход неоднозначен - формул, которыми можно задать любую булеву функцию, бесконечно много. Особый интерес имеет задание функций через дизъюнкцию, конъюнкцию и отрицание.

Введем обозначения: , .

Каждую булеву функцию от переменных, за исключением тождественно равной нулю, можно задать формулой

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

Эту формулу называют совершенной дизъюнктивной нормальной формой (сокращенно СДНФ).

Доказательство этого утверждения приведено во второй части параграфа.

Чтобы построить СДНФ функции, нужно действовать следующим образом:

1) выбрать в таблице истинности функции все наборы значений переменных, на которых функция равна 1;

2) для каждого такого набора записать конъюнкцию, в которую войдут все переменные, причем, если значение переменной на данном наборе равно 0, то она войдет в конъюнкцию со знаком отрицания, а если 1, то без знака отрицания;

3) записать дизъюнкцию всех выписанных в п. 2 конъюнкций.

Пример 5. Задать функцию в виде СДНФ:

а) ; б) ;

в) ; г) .

◄ а) - в) Зададим функции таблично (табл. 2.19) и выпишем для них СДНФ.

Таблица 2.19

0

0

1

1

1

0

1

1

1

0

1

0

0

1

0

1

1

1

0

0

;

;

.

г) Запишем СДНФ, воспользовавшись таблицей истинности функции (см. табл. 2.18):

. ►

3. Задание функции совершенной конъюнктивной нормальной формой. Рассмотрим еще один способ задания функции формулой над множеством, состоящим из дизъюнкции, конъюнкции и отрицания.

Каждую булеву функцию , не равную тождественно единице, можно задать формулой

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

Эту формулу называют совершенной конъюнктивной нормальной формой (сокращенно СКНФ).

Доказательство этого утверждения приведено во второй части параграфа.

Чтобы записать СКНФ функции, нужно действовать следующим образом:

1) выбрать в таблице истинности функции все наборы значений переменных, на которых функция равна 0;

2) для каждого такого набора записать дизъюнкцию, в которую войдут все переменные, причем, если значение переменной на данном наборе равно 1, то она войдет в дизъюнкцию со знаком отрицания, а если 0, то без знака отрицания;

3) записать конъюнкцию всех выписанных в п. 2 дизъюнкций.

Пример 6. Задать функцию в виде СКНФ:

а) ; б) ;

в) ; г) .

◄ а) - г) Опираясь на таблицы истинности функций (см. табл. 2.19 и 2.18), запишем:

а) ;

б) ;

в) ;

г) . ►

Каждая булева функция может быть задана формулой над множеством .

Действительно, если , то можно задать в виде СКНФ. Если , то можно задать в виде СДНФ.