discr_math
.pdf30
3 х1, |
12 x1 , |
||||||||
(переменная x1 ) |
(отрицание переменной x1 ) |
||||||||
4 |
|
, |
|
11 x2 x1, |
|||||
x2 x1 |
|||||||||
(отрицание импликации ) |
(импликация) |
||||||||
5 x2 , |
10 |
|
, |
|
|||||
x2 |
|||||||||
(переменная x2 ) |
(отрицание переменной x2 ) |
||||||||
6 |
|
, |
9 x1 x2 , |
||||||
(x1 x2 ) |
|||||||||
(отрицание эквиваленции, |
(эквиваленция) |
||||||||
неравнозначность |
|
|
|
|
|
||||
или сложение по модулю 2 x1 x2 ) |
|
|
|
|
|
||||
7 x1 x2 , |
8 |
|
. |
||||||
x1 x2 |
|||||||||
(дизъюнкция) |
(отрицание дизъюнкции, |
||||||||
|
|
|
|
|
“не «или»” (not or)), |
||||
|
|
|
|
|
или стрелка Пирса x1 x2 ) |
Нетрудно заметить, что все «горизонтальные» пары функций —
0 и 15 , 1 и 14 , …, 7 и 8 связаны между собой операцией
отрицания. Например, 2 13 , 7 8 .
Дизъюнктивные и конъюнктивные нормальные формы
В этом разделе мы покажем, что любую логическую функ-
цию можно представить в виде суперпозиции трех операций – конъюнкции, дизъюнкции и отрицания.
Сначала докажем простую лемму.
31
Лемма. Для любой логической функции f (x1, ,xn) справедливо
следующее представление3:
f (x1,...,xi ,...,xn ) xi f (x1,...,xi 1,1,xi 1,...,xn )
|
xi f (x1,...,xi 1,0,xi 1,...,xn) . |
(3.1) |
|
|
► Доказательство леммы достаточно тривиально. Перемен- |
||
ная xi |
может принимать только два значения: |
0 или 1. |
|
1. |
Если xi 0, то подстановка этого значения в (3.1) приводит |
||
|
к равенству: |
|
|
|
f (x1,...,0,...,xn) 0 f (x1,...,1,...,xn) 1 f (x1,...,0,...,xn), |
||
которое, в силу соотношений 0 f 0, |
1 f f , 0 f |
f , |
|
можно записать в виде: |
|
|
f(x1,...,0,...,xn) 0 f (x1,...,0,...,xn) f (x1,...,0,...,xn).
Врезультате мы пришли к тождеству, справедливому для лю-
бых наборов значений переменных x1, xi 1,xi 1, ,xn .
2. Если же xi 1, то из (3.1) получим:
f (x1,...,1,...,xn) 1 f (x1,...,1,...,xn) 0 f (x1,...,0,...,xn)
f (x1,...,1,...,xn) 0 f (x1,...,1,...,xn).◄
Пусть f (x1,...,xn) – произвольная логическая функция. При-
меним лемму, полагая xi x1 . Тогда
3 Равенство двух логических функций обозначается символом и понимается как равенство двух отображений. Символ в логике высказываний соответствует тавтологичности эквиваленции.
32
f (x1,...,xn) x1 f (1,...,xn) x1 f (0,...,xn). |
(3.2) |
Как мы уже отмечали, запись правой части можно немного упро-
стить, опуская символы конъюнкции:
f (x1,...,xn) x1 f (1,...,xn) x1 f (0,...,xn ) . |
(3.3) |
||||
На следующем шаге применим лемму по переменной x2 |
к функци- |
||||
ям f (1,x2,...,xn) и f (0,x2,...,xn) : |
|
||||
f (1,x2,...,xn) x2 f (1,1,...,xn) |
|
f (1,0,...,xn ), |
|
||
x2 |
|
||||
f (0,x2,...,xn ) x2 f (0,1,...,xn) |
|
f (0,0,...,xn ). |
(3.4) |
||
x2 |
Подставляя (3.4) в (3.3), получим (для сокращения формы записи вместо f (1,1, ,xn ) используем обозначение f (1,1)):
f (x1,...,xn) x1(x2 f (1,1) x2 f (1,0)) x1(x2 f (0,1) x2 f (0,0)).
Раскрывая здесь скобки, в силу дистрибутивности операций и ,
получим:
f (x1,...,xn) x1x2 f (1,1,...,xn) x1 x2 f (1,0,...,xn)
x1 x2 f (0,1,...,xn) x1 x2 f (0,0,...,xn) . (3.5)
Теперь введем следующие обозначения:
|
|
x |
i |
, |
если |
|
i |
1, |
|
|
i |
|
|
|
|
i 1,2. |
|
||||
xi |
|
|
|
|
|
|
|
(3.6) |
||
|
|
|
, |
если |
i |
|||||
|
|
xi |
0; |
|
||||||
|
|
|
|
|
|
|
|
|
|
В этих обозначениях равенство (3.5) можно записать в компактной форме:
f (x1,x2,...,xn) |
|
x1 1 x2 2 |
f ( 1, 2,x3,...,xn). |
(3.7) |
|
( 1 , 2 ) B2 |
|
|
|
33
Здесь В2 В В {(0,0), (0,1), (1,0), (1,1)}, и правая часть в (3.7)
представляет собой дизъюнкцию («сумму») некоторых конъюнкций
(т.е. выражений вида |
x 1 x |
2 |
f ( |
, |
2 |
,x ,...,x |
n |
) ) по всевозможным |
|
1 |
2 |
1 |
|
3 |
|
||
упорядоченным парам |
( 1, 2) B |
2 . |
|
|
|
|
||
Равенство (3.7) |
называют дизъюнктивной нормальной фор- |
мой (сокращенно – ДНФ) или дизъюнктивным разложением логи-
ческой функции f (x1,x2 ,...,xn ) по переменным x1 и x2 . Если мы последовательно продолжим вышеописанную процедуру для пере-
менных x3,x4 ,...,xn , то после конечного числа шагов получим ра-
венство, в котором все аргументы функции f в правой части будут заменены символами 1 или 0:
f (x1,x2,...,xn) |
|
x1 1 x2 2 xn n f ( 1, 2,..., n). |
(3.8) |
|||||
|
|
|
|
|
( 1, 2 , , n ) Bn |
|
||
В (3.8) выражения |
x i задают формулой (3.6), где i 1,2,...,n , и |
|||||||
|
|
|
|
|
|
i |
|
|
дизъюнкция |
ведется по |
всевозможным упорядоченным |
наборам |
|||||
( , |
2 |
,..., |
n |
) |
из Bn |
B ... B (n раз). Таким образом, мы прихо- |
||
1 |
|
|
|
|
|
|
дим к следующей теореме.
Теорема 3.4. Любая логическая функция f (x1,...,xn) может быть представлена в виде (3.8).
Определение 3.13. Равенство (3.8) называется совершенной дизъ-
юнктивной нормальной формой (СДНФ) логической функции
f (x1,...,xn).
34
СДНФ логической функции позволяет записать любую функцию в виде дизъюнкций некоторых элементарных конъюнкций.
Исходные данные для построения СДНФ содержатся в таблице зна-
чений истинности функции.
Пример 3.22. Построить СДНФ логической функции, заданной таблицей 3.19.
x1 |
x2 |
x3 |
f (x1,x2,x3) |
|
0 |
0 |
0 |
1 |
|
0 |
0 |
1 |
0 |
|
0 |
1 |
0 |
0 |
|
0 |
1 |
1 |
1 |
|
1 |
0 |
0 |
0 |
|
1 |
0 |
1 |
1 |
|
1 |
1 |
0 |
0 |
|
1 |
1 |
1 |
0 |
Табл. 3.19 |
|
|
|
|
Используя последний столбец таблицы, составим элементарные конъюнкции:
значению f (0,0,0) 1 в первой строке таблицы соответству-
ет конъюнкция x1 x2 x3 f (0,0,0) x1 x2 x3 1 x1 x2 x3 ;
значению f (0,0,1) 0 |
соответствует конъюнкция x1 x2 x3 0 , |
которая является противоречивой x1 x2 x3 0 0. Поэтому при составлении СДНФ мы можем каждый раз пропускать все строки таблицы, где значение f 0 ;
35
четвертая и шестая строки таблицы порождают элементар-
ные конъюнкции x1 x2 x3 и x1 x2 x3 соответственно.
В итоге СДНФ логической функции, заданной таблицей 3.19,
имеет вид
f (x1,x2,x3) x1 x2 x3 x1 x2 x3 x1 x2 x3 .
Пример 3.23. Логическую функцию |
f (x1,x2) (x1 x2) |
предста- |
||||||||||||||
вить в виде СДНФ. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Составим таблицу 3.20 значений функции f (x1,x2) |
|
|||||||||||||||
|
x1 |
|
x2 |
|
|
x1 x2 |
|
|
|
|
|
|
|
|||
|
|
|
|
x1 x2 |
|
|
|
|||||||||
|
0 |
|
0 |
|
|
1 |
|
0 |
|
|
|
|||||
|
0 |
|
1 |
|
|
0 |
|
1 |
|
|
|
|||||
|
1 |
|
0 |
|
|
0 |
|
1 |
|
|
|
|||||
|
1 |
|
1 |
|
|
1 |
|
0 |
|
Табл. 3.20 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
СДНФ логической функции имеет следующий вид: |
|
|||||||||||||||
|
|
|
|
|
x2 x1 |
|
. |
|
|
(3.9) |
||||||
|
|
x1 x2 |
x1 |
x2 |
|
|
Наряду с СДНФ для логической функции существует «сим-
метричное» представление в вид конъюнкции элементарных дизъ-
юнкций – равенство, называемое совершенной конъюнктивной нор-
мальной формой (СКНФ).
Теорема 3.5. Для любой логической функции f (x1,...,xn) справедли-
во представление вида:
36
f (x1,...,xn)
|
|
(x11 1 x12 2 x1n n f ( 1, 2, , n)), (3.10) |
|
( 1 , 2 , , n ) Bn |
|
в котором конъюнкция проводится по всевозможным упорядочен-
ным наборам из Bn , а выражения xi1 i задаются равенствами, ана-
логичными соотношениям (3.6):
1 |
|
|
|
,если |
|
|
1, |
|
|
x |
i |
i |
,n. |
||||
xi |
i |
|
,если |
|
i 1, |
|||
|
|
x |
i |
i |
0, |
|
||
|
|
|
|
|
|
|
Пример 3.24. Представить функцию неравнозначности
f(x1,x2) (x1 x2) (табл.3.20) в виде СКНФ:
строке f (0,0) 0 таблицы соответствует элементарная дизъюнкция x11 0 x21 0 0 x1 x2 ;
строке f (1,1) 0 соответствует дизъюнкция
x1 1x |
1 1 |
0 |
x |
|
x |
; |
|
|
1 |
2 |
1 |
2 |
|
|
|
||
строки, в которых значение |
f (x1,x2) 1, можно не учиты- |
|||||||
вать, поскольку для любых функций и |
1 1 и |
|||||||
1 . |
|
|
|
|
|
В целом СКНФ неравнозначности имеет вид: |
|
(x1 x2) (x1 x2)(x1 x2). |
(3.11) |
При построении совершенных нормальных форм часто ис-
пользуют следующий прием. Если таблица истинности функции f
содержит больше единиц, чем нулей, то для получения формулы,
37
представляющей логическую функцию, можно сначала записать СДНФ функции f , а затем с помощью операции отрицания вер-
нуться к исходной функции.
Пример 3.25. Составить логическую формулу, реализующую функ-
цию f (x1,x2,x3) , заданную табл. 3.21.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
|
x2 |
x3 |
f (x1,x2,x3) |
|
f (x1,x2,x3) |
|
||||
|
0 |
|
|
0 |
0 |
1 |
0 |
|
||||
|
0 |
|
|
0 |
1 |
1 |
0 |
|
||||
|
0 |
|
|
1 |
0 |
1 |
0 |
|
||||
|
0 |
|
|
1 |
1 |
1 |
0 |
|
||||
|
1 |
|
|
0 |
0 |
1 |
0 |
|
||||
|
1 |
|
|
0 |
1 |
1 |
0 |
|
||||
|
1 |
|
|
1 |
0 |
1 |
0 |
|
||||
|
1 |
|
|
1 |
1 |
0 |
1 |
Табл. 3.21 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
СДНФ для функции |
|
имеет вид |
|
x1 x2 x3 . Тогда, с учетом зако- |
||||||||
f |
f |
|||||||||||
нов e Моргана, получим: |
|
|
|
|
|
|
|
f ( f ) x1 x2 x3 x1 x2 x3 x1 x2 x3 .
Упрощение формы записи логических функций
Формулы 3.9 и 3.11 показывают, что одна и та же логическая функция может быть представлена различными по виду формулами.
При этом для последующего анализа свойств логической функции лучше использовать формулы, которые содержат меньшее количе-
38
ство символов. Поскольку любая формула (с большим или меньшим количеством символов) отражает структуру одной и той же таблицы истинности (соответствует одной и той же функции), мы можем на-
звать эти формулы эквивалентными. Такое понятие эквивалентности целиком согласовано с определением 3.11 и представляет собой от-
ношение эквивалентности на множестве логических формул.
Перечислим основные приемы (преобразования), которые
позволяют получать новые формулы, эквивалентные данным.
1. Пусть |
функция f представлена двумя формулами |
f F1 и |
f F2 |
. Тогда, очевидно, F1 F2 и для перехода от |
F1 к F2 |
прежде всего будут использовать все эквивалентности, свя-
занные с основными законами логики.
2.Если правая часть равенства f F содержит в качестве подформулы некоторую формулу F1, то замена F1 на фор-
мулу F2 F1 не изменит логической функции f .
3.Использование операций (законов):
элементарного поглощения:
x xy x y ; |
(3.12) |
||
поглощения: |
|
||
x xy x; |
(3.13) |
||
x(x y) x; |
(3.14) |
||
склеивания: |
|
||
|
|
x; |
(3.15) |
xy xy |
|
|
|
|
|
39 |
обобщенного склеивания: |
|
||||
|
|
|
|
|
(3.16) |
xz yz |
xy xz yz . |
Мы уже доказывали законы (3.13), (3.15). Теперь проверим справед-
ливость формул (3.12) и (3.16).
Доказательство эквивалентности (3.12).
►x xy
(воспользуемся дистрибутивностью дизъюнкции относительно конъюнкции)
(x x) (x y) 1 (x y) x y.◄
Доказательство эквивалентности (3.16).
►xz yz xy
(для выражения xy применим формулу (3.15) xy xyz xyz)
xz yz xyz xyz
(в силу коммутативности дизъюнкции и конъюнкции перегруппиру-
ем «слагаемые»)
xz xzy yz yzx
(воспользуемся дистрибутивностью и «вынесем за скобки» выраже-
ния xz и yz )
zx(1 y) yz(1 x) xz1 yz1 xz yz .◄
Пример 3.26. Упростить СДНФ функции
f xyz xyz xyz xyz xyz .