METOD_12
.pdf13
Для упрощения преобразований полезно использовать формулы поглощения и склеивания:
u uv = u, uv uv = u. |
(4.14) |
В приведенных ниже примерах при проведении эквивалентных преобразований над знаком равенства записываются номера используемых формул.
Пример |
1. Для функции f(x, y, z) = (x y) → x|z построим днф |
|||||||
и кнф: |
|
|
|
|
|
|
|
|
(x y) |
→ x| z |
(4:5) |
|
(4:8) |
|
|
(4:6) |
(4:6) |
= x y x| z = x y x |
z = (x ↔ y) x |
z = |
= x y xy x z = xy x z.
Применив второй дистрибутивный закон к последнему выражению, получим кнф для исходной формулы
xy x z = (x x z)(y x |
(4:13) |
z) = x y z. |
Пример 2. Для функции f(x, y, z) = x z ↔ xy построим днф и кнф:
|
(4:6) |
|
|
|
|
|
(4:9;4:12) |
|
(4:13) |
|
|
|
|
|
|
|
|||
x z ↔ xy = x z xy x z |
xy |
= |
x z xy (x z)(x |
y) = |
= (x z)(x y).
Полученное выражение представляет собой конъюнкцию различных элементарных дизъюнкций x y и x z и потому является конъюнктивной нормальной формой рассматриваемой функции.
Заметим, что для каждой булевой функции существует не одна дизъюнктивная и не одна конъюнктивная нормальные формы. Производя разными способами дистрибутивные операции, мы можем прийти к различным нормальным формам. Пусть, например, функция φ(x, y, z) задается формулой x yz . Эта формула представляет собой днф. Однако её можно привести дистрибутивными операциями и к другой нормальной форме. Применив второй дистрибутивный закон, получим кнф
K = (x y)(x z).
Применив к этой формуле первый дистрибутивный закон, получим
D = x yx xz yz.
Эта формула также является днф функции φ(x, y, z) . Конечно, различные нормальные формы различны лишь по виду. Все они реализуют одну и ту же функцию. В случае произвольной булевой функции f(x1, x2, . . . , xn) её нормальные формы на наборе (α1, α2, . . . , αn)
14
принимают одно и то же значение, равное f(α1, α2, . . . , αn) . В следующем параграфе мы выделим среди нормальных форм так называемые совершенные нормальные формы: дизъюнктивную и конъюнктивную.
|
|
Упражнения |
|
|
|
|
4.1. По |
данному |
набору |
(α1, α2, . . . , αn) |
значений |
переменных |
|
x1, x2, . . . , xn построить элементарную |
конъюнкцию, |
истинную |
||||
только для этого набора значений. |
|
|
|
|||
4.2. По |
данному |
набору (α1, α2, . . . , αn) |
значений |
переменных |
||
x1, x2, . . . , xn |
построить |
элементарную |
дизъюнкцию, |
ложную |
||
только для этого набора значений переменных. |
|
|
4.3.С помощью эквивалентных преобразований привести к днф формулы:
1)(x yz)(x z) ;
2)((x1 x2x3x4)(x2 x4) → x1x3x4) (x1 x4) ;
3)(x ↓ z) ↔ (y → z) xy ;
4)(x1x2 → x3x4)|(x1 → x3) ;
5)(x (x ↔ y)) → x y .
4.4.С помощью эквивалентных преобразований привести к кнф формулы:
1)x → yz ;
2)((x1x2 x3) → x4) → x1 ;
3)((x1| x2) → x3) ↔ x1x4 ;
4)((xyz ↔ (y z))y) ↓ x ;
5)¬ (x ↔ yz) → (x (y → z)) .
4.5.Пусть X1, . . . , Xm, U1, . . . , Un – произвольные формулы алгебры ло-
гики. Доказать следующие эквивалентности:
1) |
X1X2 . . . Xm U1U2 . . . Un = i=1;:::;m j=1;:::;n |
(Xi Uj) ; |
2) |
(X1 X2 . . . Xm) (U1 U2 . . . Un) = i=1;:::;m j=1;:::;n XiUj . |
4.6. С помощью второго дистрибутивного закона преобразовать днф в кнф:
1) xy yz xz ;
15
2)xyz xyz xyz ;
3)x1x2 x2x3 x4x3 x2 .
§5. Совершенные нормальные формы
В предыдущем параграфе было показано, что всякая булева функция может быть выражена в виде формулы через отрицание, дизъюнкцию и конъюнкцию; приведенные ниже теоремы ещё раз подтверждают этот факт.
Теорема 1. Для каждой булевой функции, отличной от тождественного нуля, существует и единственно (с точностью до порядка слагаемых) следующее представление в виде дизъюнктивной нормальной формы
f(x1, x2, . . . , xn) = x1 1 x2 2 . . . xnn . (5.1)
f( 1; 2;:::; n)=1
Вдальнейшем для сокращения записи формул знак конъюнкции в (5.1) будем опускать.
Дизъюнктивная нормальная форма (5.1) называется совершенной (сднф). Как следует из (5.1) совершенная нормальная форма отличается от обычной днф тем, что каждое её слагаемое содержит либо переменную xi , либо её отрицание xi для всех i = 1, . . . , n .
На основании представления (5.1) сформулируем следующий алгоритм построения сднф, основанный на применении таблиц истинности:
–построить таблицу истинности функции f ;
–в таблице выделить наборы, на которых функция f принимает значение 1;
–каждому такому набору (α1, α2 . . . , αn) поставить в соответствие элементарную конъюнкцию
x 1 x 2 |
. . . x n , |
(5.2) |
1 2 |
n |
|
которая только на этом наборе принимает значение 1;
–найденные элементарные конъюнкции объединить знаком дизъюнкции, – полученная формула является совершенной дизъюнктивной нормальной формой функции f .
16
Для тех функций, которые заданы в виде формул, сднф можно также построить используя равенства (4.5)-(4.11) предыдущего параграфа. При этом если какая-либо элементарная конъюнкция K в полученной днф не будет содержать переменную xl , её нужно заменить на две элементарные конъюнкции
K = Kxl Kxl. |
(5.3) |
Этот процесс нужно продолжать до тех пор пока все элементарные конъюнкции будут содержать все переменные xi или их отрицания xi . После этого удалить лишние элементарные конъюнкции, оставив из нескольких одинаковых одну:
u u = u. |
(5.4) |
Теорема 2. Для каждой булевой функции отличной от тождественной 1, существует и единственно (с точностью до порядка сомножителей) следующее представление в виде конъюнктивной нормальной формы
f(x1, x2, . . . , xn) = |
|
|
x1 1 x2 2 . . . xnn . |
(5.5) |
;:::; )=0 |
( |
) |
|
|
f( 1; 2 |
n |
|
Конъюнктивная нормальная форма (5.5) называется совершенной (скнф).
На основании сформулированной теоремы предлагается следующий алгоритм построения скнф с использованием таблиц истинности:
–построить таблицу истинности функции f ;
–в таблице выделить наборы, на которых функция f принимает значение 0;
–каждому такому набору (α1, α2, . . . , αn) поставить в соответствие элементарную дизъюнкцию
x1 1 x2 2 . . . xnn , |
(5.6) |
которая только на этом наборе принимает значение 0;
–найденные элементарные дизъюнкции объединить знаком конъюнкции, – полученная формула, согласно теореме 2, является совершенной конъюнктивной нормальной формой функции f .
Совершенная конъюнктивная нормальная форма отличается от обычной кнф тем, что каждый её сомножитель содержит переменную xi или её отрицание xi для всех i = 1, . . . , n . Этот факт дает возможность сформулировать ещё один алгоритм построения скнф (его применяют в случае, когда функция f задана формулой):
17
–построить кнф функции f ;
–если какой либо сомножитель D кнф не содержит переменной xl его нужно заменить двумя:
D = (D xl)(D xl); |
(5.7) |
–этот процесс продолжать до тех пор пока все сомножители не будут содержать все переменные xi или их отрицание xi, i = 1, . . . , n ;
–из нескольких одинаковых сомножителей, полученных в результате реализации предыдущего пункта, оставить один:
u u = u. |
(5.8) |
Полученный кнф будет совершенной.
Рассмотрим пример построения сднф и скнф двумя способами. Пусть f(x, y, z) = (x yz)| (y → zx) .
Построим таблицу истинности.
x |
y |
z |
yz |
x yz |
zx |
y → zx |
x yz)| (y → zx) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
Выделим наборы, на которых f(x, y, z) принимает значение 1: (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,1,0), (1,1,1); этим наборам соответствуют элементарные конъюнкции xyz, xyz, xyz, xyz, xyz, xyz , объединив которые знаком дизъюнкции, получим
xyz xyz xyz xyz xyz xyz − сднф.
Для построения скнф выделим наборы на которых функция f(x, y, z) принимает значение 0: (1,0,0), (1,0,1). Им соответствуют элементарные дизъюнкции, которые только на этих наборах принимают значение 0: x y z, x y z . Объединив их знаком конъюнкции, мы получим скнф, реализующую данную функцию f :
f = (x y z)(x y z).
18
Применим теперь для построения сднф и скнф метод эквивалентных преобразований
(x yz)| (y → zx) = ¬ (x yz) ¬ (y → zx) = (x ↔ yz) ¬ (y zx) = = xyz x yz yzx = xyz x(y z) y(z x) = xyz xy xz yz yx =
мы получили дизъюнктивную нормальную форму; продолжим преобразования, используя (5.3)-(5.4)
= xyz xyz xyz xyz xyz xyz xyz xyz xyz = = xyz xyz xyz xyz xyz xyz − сднф.
Построим скнф
xyz x yz yzx = x yz (xyz yzx) = x(y z) y(xz xz) = x(y z) y =
|
|
|
|
|
|
= (x y)(y z y) = x y − кнф; |
|||||||||||
на основании (5.6) имеем |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
f = x y = (x y z)(x y z) − скнф. |
|||||||||||||
|
Пример |
2. |
Построить |
сднф и |
скнф, |
реализующих функцию |
|||||||||||
(x yz) ↓ (xy → z) . |
|
|
|
|
|
|
|
|
|
|
|||||||
Построим таблицу истинности. |
|
|
|
|
|
|
|
||||||||||
|
x |
y |
z |
y |
z |
yz |
x yz |
xy |
xy → z |
(x yz) ↓ (xy → z) |
|
||||||
|
0 |
0 |
0 |
1 |
|
1 |
|
0 |
|
0 |
|
0 |
|
1 |
|
0 |
|
|
0 |
0 |
1 |
1 |
|
0 |
|
1 |
|
1 |
|
0 |
|
1 |
|
0 |
|
|
0 |
1 |
0 |
0 |
|
1 |
|
0 |
|
0 |
|
0 |
|
1 |
|
0 |
|
|
0 |
1 |
1 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
1 |
|
0 |
|
|
1 |
0 |
0 |
1 |
|
1 |
|
0 |
|
1 |
|
0 |
|
1 |
|
0 |
|
|
1 |
0 |
1 |
1 |
|
0 |
|
1 |
|
1 |
|
0 |
|
1 |
|
0 |
|
|
1 |
1 |
0 |
0 |
|
1 |
|
0 |
|
1 |
|
1 |
|
1 |
|
0 |
|
|
1 |
1 |
1 |
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
0 |
|
0 |
|
Исследуемая функция является противоречием, так как на всех наборах принимает значение 0. Она не имеет реализующей её сднф, а скнф состоит из восьми сомножителей и имеет следующий вид
f = (x y z)(x y z)(x y z)(x y z)(x y z)(x y z)(x y z)(x y z).
Методом эквивалентных преобразований скнф для тождественно ложной функции можно получить используя (5.7) следующем образом:
0 = x x = (x y)(x y)(x y)(x y) =
= (x y z)(x y z)(x y z)(x y z)(x y z)(x y z)(x y z)(x y z).
19
Задачи и упражнения
5.1. Построить сднф и скнф для следующих функций (для функций, заданных формулами, предварительно построить таблицы истинности):
а) (x y) → yz ;
б) f = (01101100) ;
в) ((x → y) ↔ z)| xyz ;
г) f = (0100110000110010) ;
д) (x → y)(x y)(x ↔ y)(y| x) ;
е) (x y) → (z x) ;
ж) (x| z) ↔ (yz) ;
и) (x ↔ z) ↓ (x → y) ;
к) (xy → z) x ;
л) ¬ (xyz) → (x|y) ;
м) (x → z) (x y) ;
н) x ↔ (x yz) .
5.2. Преобразовать заданные днф в совершенные:
а) xy yz xy ;
б) x1 x2x3 x1x2x4 ;
в) x xyz xy ;
г) xy xyz y xy ;
д) x1x2 x2x3 x3x1 .
5.3. Преобразовать заданные кнф в совершенные:
а) (x y)(z y)z ;
б) (u v)(u v w)(u v) ;
в) (x1 x2)(x2 x3)(x3 x4) ;
г) (x y)(x z)y ;
д) (x1 x2)(x1 x3 x4) .
5.4. Построить сднф и скнф следующих функций при помощи эквивалентных преобразований:
а) ((x → y) z) ↔ (x (y → z)) ;
20
б) (x1 x2) → (x3 x4) ;
в) ((x z) → y) ((x| y) y) ;
г) (y ↔ z)(z ↔ x)(x y) ;
д) (x1| x2) → (x3| x4) .
5.5.Построить формулу функции от трех переменных, которая принимает значение 1 в том и только в том случае, когда равно две переменные равны нулю.
5.6.Построить формулу функции от трех переменных, которая принимает такое же значение, как и большинство (или меньшинство) переменных.
5.7.Доказать, что функция от n переменных f(x1, x2, . . . , xn) = 1 тогда
итолько тогда, когда её сднф содержит 2n попарно не эквивалентных элементарных конъюнкций.
5.8.Доказать, что функция от n переменных f(x1, x2, . . . , xn) = 0 тогда
итолько тогда, когда её скнф содержит 2n попарно не эквивалентных элементарных дизъюнкций.
5.9.По скнф формулы U построить
а) сднф двойственной формулы U ;
б) скнф формулы ;
U
в) сднф формулы .
U
5.10. По сднф формулы U и сднф формулы V построить
а) скнф и сднф формулы U V ;
б) скнф и сднф формулы U V ;
в) скнф и сднф формулы U → V .
5.11. Найти длину совершенной днф функции f(x1, x2, . . . , xn) :
а) f(x1, x2, . . . , xn) = x1 x2 . . . xn ;
б) |
f(x1, x2, . . . , xn) = (x1 x2 . . . xn)(x1 x2 . . . xn) ; |
в) |
f(x1, x2, . . . , xn) = (x1 x2 x3)(x1 x2 x3) x4 x5 . . . xn . |
21
§6. Полином Жегалкина
Определение. Пусть x1, x2, . . . , xn – булевы переменные. Монотонной конъюнкцией, составленной из переменных x1, x2, . . . , xn , называется элементарная конъюнкция вида
KM = xi1 xi2 . . . xir , |
(6.1) |
где {i1, i2, . . . , ir} {1, 2, . . . , n}, число r – ранг монотонной конъюнкции.
Из определения следует, что число монотонных конъюнкций, состав-
ленных из переменных x1, x2, . . . , xn , равно числу подмножеств множества {1, 2, . . . , n}, а именно 22n .
При n = 3 мы имеем следующие монотонные конъюнкции, составленные из переменных x, y, z : 1; x; y; z; xy; xz; yz; xyz .
Определение. Полиномом Жегалкина (ПЖ) от переменных x1, x2, . . . , xn называется сумма по модулю 2 различных монотонных конъюнкций, составленных из этих переменных:
P (x1, x2, . . . , xn) = KM1 KM2 . . . KMl , |
(6.2) |
где 0 ≤ l ≤ 22n .
Наибольший из рангов элементарных конъюнкций, входящих в полином Жегалкина, называется его степенью.
В случае 3-х переменных имеем:
P (x, y, z) = a0 a1x a2y a3z a12xy a13xz a23yz a123xyz, (6.3)
здесь a0, a1, a2, a3, a12, a13, a23, a123 – коэффициенты полинома P (x, y, z) , каждый из которых принимает одно из двух значений 0 или 1.
В случае n -переменных x1, x2, . . . , xn полином P (x1, x2, . . . , xn) может быть записан в виде
{ |
∑} |
|
|
P (x1, x2, . . . , xn) = |
|
ai1 i2 ::: is xi1 xi2 . . . xis , |
(6.4) |
i1;i2;:::;is {1;2;:::;n}
где ai1 i2 ::: is {0, 1} – коэффициенты полинома Жегалкина.
Каждый полином Жегалкина однозначно задается набором своих
коэффициентов |
|
(a0, a1, a12, a13, a23, a123, . . . , ai1 i2 ::: is , . . . , a12:::n). |
(6.5) |
Длина этого набора равна 2n , состоит он из нулей и единиц. Отсюда сле-
n 2n
дует, что число полиномов Жегалкина от n переменных равно A2 = 2 и совпадает с числом булевых функций от n переменных.
22
Теорема. Для каждой булевой функции существует и единственно до порядка слагаемых её представление в виде полинома Жегалкина
{ |
∑} |
|
f(x1, x2, . . . , xn) = |
|
ai1 i2 ::: is xi1 xi2 . . . xis . |
i1;i2;:::;is {1;2;:::;n}
Алгоритм построения ПЖ методом неопределенных коэффициентов.
–построить таблицу истинности данной функции f ;
–записать общий вид полинома Жегалкина (см. (6.3));
– исходя из |
того, что данная функция и |
её ПЖ принима- |
|
ют одинаковые значения на всевозможных наборах перемен- |
|||
ных, в них входящих, составим систему уравнений для коэф- |
|||
фициентов |
a0, a1, a2, . . . , a12:::n . В случае трех переменных имеем: |
||
|
a0 |
= f(0, 0, 0) |
|
|
a0 a1 = f(1, 0, 0) |
||
|
a0 a2 = f(0, 1, 0) |
||
|
a0 a3 = f(0, 0, 1) |
||
|
a0 a1 a2 a12 = f(1, 1, 0) |
||
|
a0 a1 a3 a13 |
= f(1, 0, 1) |
|
|
a0 a2 a3 a23 |
= f(0, 1, 1) |
|
a0 a1 a2 a3 a12 a13 a23 a123 |
= |
f(1, 1, 1) |
Решаем |
эту систему "сверху |
вниз"; |
найденные коэффициенты |
||||
a0, a1, a2, . . . , a123 подставляем в |
формулу |
(6.3) и |
получаем |
ПЖ за- |
|||
данной функции f . |
|
|
|
|
|
||
|
Алгоритм построения ПЖ методом эквивалентных преобразований. |
||||||
|
Этот |
метод применяется |
в том |
случае, |
когда |
функция |
|
f(x1, x2, . . . , xn) задана в виде формулы алгебры логики. |
|
|
–предварительно выразим данную функцию через , , ¬ при помощи равносильностей (4.5)-(4.11);
–выразим через и ¬:
x y = x y;
–в полученном выражении проведем преобразования, выразив операцию ¬ через :
u = u 1;
– раскроем скобки в полученном выражении:
w(u v) = wu wv;