- •Оглавление
- •Тождества, связывающие булевы функции
- •Примеры
- •Вопросы и упражнения для самостоятельной работы
- •§1.2. Нормальные формы булевых функций
- •Примеры
- •Вопросы и упражнения для самостоятельной работы
- •§1.3. Важнейшие замкнутые классы булевых функций
- •Примеры
- •Вопросы и упражнения для самостоятельной работы
- •§1.4. Полные системы. Теорема Поста
- •Примеры
- •Вопросы и упражнения для самостоятельной работы
Примеры
1. Найти СДНФ и СКНФ для следующей функции:
x y | f
0 0 | 0
0 1 | 1
1 0 | 0
1 1 | 0
Решение.Воспользуемся разложениями (7) и (8):
f(x,y)=f(1,1)xyf(1,0)xy’f(0,1)x’yf(0,0)x’y’=
=0xy0xy’1x’y0x’y’= x’y,(СДНФ)
f(x,y)=(f(1,1)x’y’)(f(1,0)x’y)(f(0,1)xy’)(f(0,0)xy)=
=(0x’y’)(0x’y)(1xy’)(0xy)= )=(x’y’)(x’y)(xy). (СКНФ)
2. Построить СДНФ двойственной функции кf(x,y,z)=x’→yz.
Решение.СпособI. Воспользуемся определением двойственной формулы:
f*(x,y,z)= f ’(x’,y’,z’)=(x’’→y’z’)’=(x→y’z’)’=(x’y’z’)’=
=x’’(y’z’)’=x(yz)=xyxz.
Способ II. Воспользуемся теоремой двойственности. Исключим тождественными преобразованиями импликацию:
f(x,y,z)=x’→yz=xyz.
Далее, заменим символы конъюнкции и дизъюнкции друг на друга:
f*(x,y,z)=x(yz)=xyxz.
Вопросы и упражнения для самостоятельной работы
Построить СДНФ и СКНФ для функций f1,f2,f3иf4, заданных таблицей
xy z|f1 f2 f3 f4
0 0 0 | 0 1 1 1
0 0 1 | 0 0 1 1
0 1 0 | 1 1 0 1
0 1 1 | 1 1 0 1
1 0 0 | 1 0 1 1
1 0 1 | 1 0 0 1
1 1 0 | 1 1 0 1
1 1 1 | 1 0 0 1
Построить СДНФ и СКНФ для следующих функций:
а) xy, б)x↓y, в) (xy)↓z, г)x(yz), д)xyy’zx’z.
Построить двумя способами СКНФ и СДНФ двойственных функций f *для следующих функций:
а) xy, б)x↓y, в)xyг)xyz, д)x(yz).
§1.3. Важнейшие замкнутые классы булевых функций
Пусть K— некоторый класс (множество) булевых функций.Замыканием классаK называется множество всех тех функций, которые могут быть выражены через функции классаK. Замыкание классаK будем обозначать через [K]. Класс функций называетсязамкнутым, если он совпадает со своим замыканием, т.е . [K] = K.
Рассмотрим важнейшие замкнутые классы булевых функций.
Класс P0. КлассP0– этокласс всех функций, сохраняющих 0, то есть таких функцийf(x1,x2,…,xn), для которыхf(0,0,…,0)=0.
КлассP1. КлассP1– этокласс всех функций, сохраняющих 1, то есть таких функцийf(x1,x2,…,xn), для которыхf(1,1,…,1)=1.
КлассS. КлассS– этокласс всех самодвойственных функций, то есть таких функцийf, которые совпадают со своей двойственной функцией,f *=f.
КлассL. КлассL– этокласс всех линейных функций, то есть функций представимых в виде
f(x1,x2,…,xn) = 01x12x2…nxn,
где 0,1,2, …,n{0,1} – константы.
КлассM. КлассM– этокласс монотонных функций. Функцияf(x1,x2,…,xn) называется монотонной, еслиf(1,2,…,n)f(1,2,…,n) при (1,2,…,n)(1,2,…,n).
Примеры
1. Проверить принадлежность каждому из классовP0,P1,S,L,Mфункцийи .
Решение.Выпишем соответствующие таблицы истинности:
x y |
0 0 | 0 0
0 1 | 1 1
1 0 | 1 1
1 1 | 1 0
P0: Из первой строки видно, что дизъюнкция и сложениесохраняют 0. Следовательно,,P0;
P1: Из последней строки видно, что дизъюнкция сохраняет 1, а сложение– нет. Следовательно,P1, аP1.
S: Для проверки принадлежности к классуSнеобходимо сравнить прямую и двойственную функции.
Способ I. Для дизъюнкции имеемf*=(xy)*= xy. Но
xy xy, следовательноS.
Способ II. Для сложениявоспользуемся таблицей:
xy|*
0 0 | 0 1
0 1 | 1 0
1 0 | 1 0
1 1 | 0 1
Последний столбец для двойственной функции был получен по следующему правилу: столбец функции инвертируется (замены 01), полученные значения записываются в инвертированные строки. Например, строка 0 11 дляпревращается в строку 1 00 для*.
Из полученной таблицы следует, что *, т.е.S.
L: Представим исследуемые функции через 1,и.
Для дизъюнкции имеем:
xy=(x’y’)’=((1x)(1y))’=1((1x)(1y))=
=1(1xyxy)= xyxy.
Здесь мы воспользовались законом де Моргана, тождеством x’=1x, дистрибутивностью сложенияотносительнои ассоциативностью(’’привычные’’ правила раскрытия скобок).
Полученное выражение содержит нелинейное слагаемое xy. Отсюда следует, чтоL.
Для сложения по модулю два имеем: f=xy– линейная функция. Значит,L.
M: Вернемся к таблицам истинности обеих функций (см. пунктP0). Необходимо сравнить значения функции для каждой сравнимой пары аргументов. Мы видим, что дизъюнкция монотонна, а— не монотонна. Следовательно,M,M.
2.Найти линейную булеву функциюf(x,y,z), удовлетворяющую условиям:f(1,0,0)=1,f(0,1,0)=1,f(1,1,1)=0 иf(1,1,0)=0.
Решение.Будем искать линейную функцию в виде
f(x,y,z)=01x2y3z.
Указанные условия приводят к системе линейных булевых уравнений
Воспользуемся методом Гаусса, учитывая, что 11=0:
.
Следовательно, 0=0,1=1,2=1 и3=0, т.е.f(x,y,z)=xy.