Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретная математика

.pdf
Скачиваний:
54
Добавлен:
11.08.2019
Размер:
1.66 Mб
Скачать

vk.com/club152685050 | vk.com/id446425943

а) дизъюнкции относительно конъюнкции

ab c a c b c ,

б) конъюнкции относительно дизъюнкции

a b c ac bc.

4.

Свойства нуля

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a 0 a ,

a 0 0.

5.

Свойства единицы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a 1 1,

a 1 a.

6.

Идемпотентность (законы повторения)

 

 

 

 

a a a ,

a a a.

7.

Законы поглощения

 

 

 

 

 

 

 

 

 

 

 

 

a b a a ,

ab a a.

8.

Законы де Моргана

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a b a b ,

a b a b.

9.

Свойства исключенного третьего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a a 1,

 

 

 

 

a a 0.

10.Свойства отрицания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 ,

0 1,

 

 

a a.

11.Свойство импликации a b a b.

12.Свойства эквиваленции

a b a b b a .

13.Свойства сложения по модулю 2

1 a a , a b a b a b.

§ 6. Дизъюнктивные нормальные формы представления булевых функций

Пусть имеются переменные x1, x2 ,..., xn .

Конъюнкцию переменных или их отрицаний называют элементарной конъюнкцией или конъюнктом.

Например, конъюнктами будут

K1 x1x3 ,

K2 x2 x5 xn , K3 x7 .

51

vk.com/club152685050 | vk.com/id446425943

 

Представление булевой функции в форме дизъюнкции

 

f x1, x2 ,..., xn K1 K2 ... Km , m 1 ,

(1)

где каждый конъюнкт Ki представляет конъюнкцию взятых с отрицаниями или

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

Представление булевой функции в ДНФ не единственно. Например, функция

f x1, x2 x1 x2 x1 x1x2 x1 x2

представлена в двух разных ДНФ.

Введем понятие совершенной дизъюнктивной нормальной формы булевой функции.

Если представление (1) обладает следующими свойствами:

1.Каждый конъюнкт содержит все переменные или их отрицания;

2.Все конъюнкты различны;

3.Ни один конъюнкт не содержит одну и ту же переменную дважды;

4.Ни один конъюнкт не содержит одновременно переменную и её отрицание,

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

функции f x1, x2 ,..., xn

Без доказательства приведем теорему.

Теорема. Любая булева функция f x1, x2 ,..., xn , не тождествннно равная 0, может быть единственным образом представлена в СДНФ.

Из доказательства этой теоремы следует Алгоритм построения СДНФ булевой функции, заданной таблично:

1.

Для каждого

набора переменных, на котором функция

 

f x1, x2 ,..., xn

принимает значение 1, запишем конъюнкцию

 

переменных. При

этом, если xk в этом наборе равна 1, то в

 

конъюнкции пишем xk (без отрицания). Если xk в этом наборе равна

 

 

 

 

 

0, то в конъюнкции пишем xk (с отрицанием).

2.

Составим дизъюнкцию всех полученных конъюнктов.

Пример. Функция f x1, x2 , x3 задана таблично (табл. 4). Найти её СДНФ.

52

vk.com/club152685050 | vk.com/id446425943

 

 

 

 

 

 

 

 

Таблица 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

x2

x3

f x1, x2 , x3

 

 

 

 

 

Ki

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

1

 

 

x1 x2 x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

1

 

x1 x2 x3

0

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

 

x1 x2 x3

1

1

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

 

 

x1 x2 x3

В последнем столбце в соответствии с алгоритмом записаны конъюнкции переменных для тех наборов, на которых заданная функция принимает значение 1. Составляем их дизъюнкцию и получаем СДНФ:

fx1, x2 , x3 = x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 .

§7. Конъюнктивные нормальные формы представления булевых функций

Пусть имеются переменные x1, x2 ,..., xn .

Дизъюнкцию переменных или их отрицаний называют элементарной дизъюнкцией или дизъюнктом.

Например, дизъюнктами будут

D1 x1 x2 ,

D2 x3 x5 xn , D3 x7.

Представление булевой функции в форме конъюнкции

 

f x1, x2 ,..., xn D1 D2 ... Dm , m 1

(2),

где каждый дизъюнкт Di представляет дизъюнкцию взятых с отрицаниями

или без них переменных функции, называется конъюнктивной нормальной формой (КНФ) этой функции.

Представление булевой функции в КНФ не единственно. Например, функция

53

vk.com/club152685050 | vk.com/id446425943

f x1, x2 x1 x1 x2 x1 x2

представлена в двух разных КНФ.

Введем понятие совершенной конъюнктивной нормальной формы

булевой функции.

Если представление (2) обладает следующими свойствами:

1.Каждый дизъюнкт содержит все переменные или их отрицания;

2.Все дизъюнкты различны;

3.Ни один дизъюнкт не содержит одну и ту же переменную дважды;

4.Ни один дизъюнкт не содержит одновременно переменную и её

отрицание, то КНФ называется совершенной конъюнктивной нормальной формой (СКНФ) функции f x1, x2 ,..., xn .

Без доказательства приведем теорему.

 

Теорема. Любая булева

функция f x1, x2 ,..., xn , не тождествннно

равная 1, может быть единственным образом представлена в СКНФ.

 

Из доказательства этой теоремы следует

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритм построения СКНФ булевой функции, заданной таблично:

1.

Для каждого набора переменных, на котором функция f x1, x2 ,..., xn

 

принимает значение 0, запишем дизъюнкцию переменных. При этом,

 

если xk в этом наборе равна 0, то в дизъюнкции пишем xk (без

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отрицания). Если xk

в этом наборе равна 1, то в дизъюнкции пишем xk

 

(с отрицанием)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

Составим конъюнкцию всех полученных дизъюнктов.

Пример. Функция

f x1, x2 , x3 задана таблично (табл.5).Найти её СКНФ.

 

 

 

 

 

 

 

 

 

 

 

Таблица 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

x2

 

x3

 

f x1, x2 , x3

 

 

 

 

Di

 

 

 

0

 

0

 

0

 

0

 

x1 x2 x3

 

 

 

0

 

0

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

1

 

0

x1 x2 x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0

 

0

 

0

 

x1 x2 x3

 

 

 

 

 

1

 

0

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

0

 

0

 

x1 x2 x3

 

 

 

 

 

1

 

1

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

54

 

 

 

 

 

 

 

 

 

 

 

vk.com/club152685050 | vk.com/id446425943

В последнем столбце в соответствии с алгоритмом записаны дизъюнкции переменных для тех наборов, на которых заданная функция принимает

значение 0. Составляем их конъюнкцию и получаем СКНФ

f x1, x2 , x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 .

§ 8. Аналитическое преобразование булевой функции в нормальные формы

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

1. Устраняем операции , , , ,| , используя свойства:

a b a b ,

a b a b b a ,

a b a b , a b a b , a | b a b .

2. Используя законы де Моргана, операцию отрицания переносим непосредственно на переменные и убираем двойные отрицания:

a b a b , a b a b ,

a a .

3. Используя закон дистрибутивности конъюнкции относительно дизъюнкции a b c ac bc , преобразуем формулу так, чтобы все

конъюнкции выполнялись раньше, чем дизъюнкции, и получаем ДНФ. Приведение функции к КНФ производится аналогично приведению к

ДНФ, только вместо п. 3 применяется п. 3 .

3 . Используя закон дистрибутивности дизъюнкции относительно конъюнкции ab c a c b c , преобразуем формулу так, чтобы все дизъюнкции выполнялись раньше, чем конъюнкции, и получаем КНФ.

Пример 1. Привести к ДНФ функцию f x, y.z x y y z .

fx, y.z x y y z x y y z

x y y z x y y z x y y z

55

vk.com/club152685050 | vk.com/id446425943

x y y z x y x yz .

Получили ДНФ заданной функции. Можно упростить её и получить другую ДНФ: x y x yz x y 1 z x y .

Отметим, что функция, заданная в виде f x, y.z x y , может

рассматриваться и как ДНФ, состоящая из одного логического слагаемого, и как КНФ, состоящая из двух логических сомножителей.

Пример 2.

Привести к КНФ функцию

f x, y, z x y y z x .

fx, y, z x y y z x

x y y z x x y y z x

x y y x z x .

Получили КНФ заданной функции. Используя свойства дистрибутивности и поглощения, можно получить другую КНФ: f x, y, z x .

Функция в виде f x, y, z x может рассматриваться и как КНФ,

состоящая из одного логического сомножителя, и как ДНФ, состоящая из одного логического слагаемого.

§9. Аналитическое приведение булевой функции к СДНФ

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

1. Если в конъюнкт K входит некоторая переменная вместе со своим отрицанием, то удаляем этот конъюнкт из ДНФ, т. к.

Kx1 ... xk xk ... xn 0 .

2.Если одна и та же переменная xk входит в конъюнкт несколько раз, то

удаляем все xk , кроме одной, т. к.

xk xk xk .

3. Если в некоторый конъюнкт K не входит переменная xk , то этот конъюнкт заменяем на

56

vk.com/club152685050 | vk.com/id446425943

KK xk xk K xk K xk .

4.Если в полученной ДНФ имеется несколько одинаковых конъюнктов,

то оставляем один из них, т. к.

K K K .

В результате получаем СДНФ.

Пример. Найти СДНФ для ДНФ функции f x, y, z x x x y z y .

fx, y, z x x x y z y x y z

x y y yz x x xy x y xyz xyz

xy z z x y z z xyz xyz

xyz xy z x yz x y z xyz xyz

xyz xy z x yz x y z xyz

§10. Аналитическое приведение булевой функции к СКНФ

Для нахождения СКНФ данную булеву функцию приводим к любой КНФ,

азатем преобразуем её дизъюнкты с помощью следующих действий:

1.Если в дизъюнкт D входит некоторая переменная вместе со своим отрицанием, то удаляем этот дизъюнкт из КНФ, т. к.

D x1 ... xk xk ... xn 1.

2. Если одна и та же переменная xk входит в дизъюнкт несколько раз, то удаляем все xk , кроме одной, т. к.

xk xk xk .

3. Если в некоторый конъюнкт D не входит переменная xk , то этот дизъюнкт заменяем на

DD xk xk D xk D xk .

4.Если в полученной КНФ имеется несколько одинаковых дизъюнктов, то оставляем один из них, т. к.

D D D .

В результате получаем СКНФ.

Пример. Найти СКНФ для КНФ функции

f x, y, z x z z x x y y z .

57

vk.com/club152685050 | vk.com/id446425943

fx, y, z x z z x x y y z x y y z

x y z z xx y z

x y z x y z x y z x y z

x y z x y z x y z .

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

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

2.Для любой булевой функции можно найти её СДНФ и СКНФ двумя способами:

-с помощью таблицы, задающей функцию;

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

3.Так как представление функции в СДНФ или в СКНФ единственно, то чтобы доказать равенство двух функций, можно привести их к одной из совершенных форм и сравнить совершенные формы обеих функций. Если функции имеют одинаковые СДНФ или СКНФ, то они равны.

§11. Принцип двойственности для булевых функций

Пусть

f x , x

2

,..., x

n

– булева функция. Тогда функция

f x , x

,..., x

,

 

1

 

 

1 2

n

 

определенная следующим образом:

f x1, x2 ,..., xn f x1, x2 ,..., xn ,

называется двойственной к функции f .

 

 

Из определения очевидно: f f .

 

Функция называется самодвойственной, если

f f .

Множество самодвойственных функций обозначим S .

Примеры.

 

1. Найти функцию, двойственную к конъюнкции

f1 x1, x2 x1 x2 .

58

 

vk.com/club152685050 | vk.com/id446425943

f1 x1, x2 f1 x1, x2 x1 x2 x1 x2 x1 x2 f7 x1, x2

Таким образом, для конъюнкции двойственной является дизъюнкция. 2. Найти функцию, двойственную к функции стрелка Пирса

f8 x1, x2 x1 x2 x1 x2 .

f8 x1, x2 x1 x2 x1 x2 x1 | x2 f14 x1, x2 .

Таким образом, штрих Шеффера есть функция, двойственная к функции стрелка Пирса.

Аналогично можно показать, что конъюнкция двойственна к дизъюнкции, стрелка Пирса двойственна к штриху Шеффера, эквиваленция двойственна к сложению по модулю 2 и наоборот.

Примером самодвойственных функций могут являться функции

 

f10 x1, x2

 

 

 

и f12 x1, x2

 

 

 

, так как

отрицания

x2

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f10 x1, x2

 

f10

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f10 x1, x2 ,

 

x1

 

x2

x2

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f12 x1, x2

f12

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

f12 x1, x2 .

 

x1

x2

x1

x1

 

 

 

Принцип двойственности

Теорема. Если функция F x1, x2 ,..., xn выражается формулой

F x1, x2 ,..., xn f f1 x1, x2 ,..., xn ,..., fn x1, x2 ,..., xn , то

F x1, x2

,..., xn f f1 x1, x2 ,..., xn ,..., fn x1, x2 ,..., xn .

Доказательство.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F x1, x2 ,..., xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

,

 

 

 

 

,...,

 

 

 

 

 

 

x1

x2

xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f f1

 

 

 

 

 

,...,

 

 

 

 

 

 

,...,

fn

 

 

,...,

 

 

 

 

 

 

 

x1

xn

x1

xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f f1 x1,..., xn ,...,

fn x1,..., xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f f1 x1,..., xn ,..., fn x1,..., xn

f f1 x1,..., xn ,..., fn x1,..., xn .

59

В силу принципа двойственности

vk.com/club152685050 | vk.com/id446425943

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

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

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

f x, y, z xy x z x y z .

f x, y, z x y x z x y z .

§12. Минимизация булевых функций

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

Построить алгоритм минимизации числа суперпозиций функций в формуле трудно, поэтому решают более простую задачу – минимизируют ДНФ булевой функции.

Минимальной ДНФ (МДНФ) функции f называется ДНФ, имеющая наименьшее число вхождений переменных среди всех ДНФ, равносильных ей.

Пример. ДНФ xy xy не является минимальной. Она содержит 4 вхождения переменных. Преобразуем данную ДНФ к равносильной

xy xy x x y y

Полученная ДНФ имеет одно вхождение переменной.

Одним из методов минимизации ДНФ является метод Квайна. Чтобы рассмотреть его, введём несколько определений.

 

Элементарная конъюнкция I называется импликантой булевой функции

f ,

если для любых наборов значений переменных из того, что I 1 следует,

что

f 1. (Термин «импликанта» связан с булевой функцией импликация.

Действительно, если I

- импликанта функции f , то из того, что I f 1 и

I 1 следует, что и f

1).

 

 

60