Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / Фарфоровская Ю. Б., Дмитриева О. М., Рабкин Е. Л., Яновская Н. К. Дискретная математика.pdf
Скачиваний:
184
Добавлен:
17.06.2020
Размер:
1.75 Mб
Скачать

поэтому ее сокращенная ДНФ содержит всего 2 простые конъюнкции,

а она имеет вид f = x1 x3 x 2.

Следующий пример показывает использование карт Карно при п = 4:

x3, x4 /x1, x2

0 0

0 1

1 1

1 0

0 0

1

0

1

1

0 1

0

0

0

0

1 1

0

0

0

1

1 0

1

1

1

1

Здесь сокращенная ДНФ содержит 4 слагаемых (СДНФ содержит 8) и

имеет вид f = x2 x4 x3 x4

x1 x4 x1 x2 x3 .

 

 

 

При п = 5 использование карт Карно является несколько более сложным и здесь не приводится.

Обоснование приведенного алгоритма сокращения. Пусть для опреде-

ленности в карте Карно стоят рядом 2 единицы в первой строке и в первом и во втором столбцах. По алгоритму записи ДНФ функции по ее таблице истинности этим единицам в ДНФ соответствуют 2 дизъюнктных слагае-

мых: x1t1 x2t2 x3t3 x4t4 x1t1 x2t2 x3s3 x4s4 . По определению карты Карно (1-е условие)

впарах (t3, t4) и (s3, s4) либо t3 = t4, либо s3 = s4; для определенности, пусть

впервой паре – равенство, а во второй – неравенство. Тогда, вынося общие множители за скобки, получим:

x1t1 x2t2 x3t3 x4t4 x1t1 x2t2 x3s3 x4s4 x1t1 x2t2 x3t3 x4t4 x4s4 x1t1 x2t2 x3t3 1 0 x1t1 x2t2 x3t3 .

Такие же рассуждения применимы и к любому другому прямоугольнику из единиц в карте Карно.

2.6. Полиномы Жегалкина

Полиномом (многочленом) Жегалкина от п переменных называется функция, в которой для получения ее значений (из набора значений аргументов) используется фиксированная цепочка операций 3 видов: конъюнкций, сложений по модулю 2 и констант (т. е. нулей и единиц).

Ясно, что любой полином Жегалкина можно (после преобразований) записать в виде

P 0 1x1 2 x2

n xn n 1x1x2

n C2 xn 1xn

2n 1x1x2 xn. (2.6)

 

 

n

 

Всего здесь 2п слагаемых. Напомним, что + сейчас означает сложение по модулю 2, коэффициенты 0 , 1, , 2n 1 являются константами (рав-

ными нулю или единице).

35

Например, полином Жегалкина от 3 переменных всегда можно привести к виду

P(x, y, z) 0 1x 2 y 3z 4xy 5xz 6 yz 7 xyz. (2.7)

Замечание. При помощи сложения по модулю 2 легко записать отрицание любой логической функции: K K 1 , в частности, х + 1 = x

Теорема. Любая логическая функция может быть представлена полиномом Жегалкина.

Доказательство. Любую функцию можно записать в виде ДНФ. Запишем двойное отрицание этой ДНФ (что не меняет функции). При помощи нижнего отрицания и правила Де Моргана избавимся от дизъюнкций. В оставшейся записи данной функции будут присутствовать только конъюнкции и отрицания. Каждое отрицание заменим на прибавление единицы. В получившейся записи функции на переменные будут действовать только конъюнкции, сложения по модулю 2 и присутствовать константы. Это и значит, что функция записана в виде полинома Жегалкина, и теорема доказана.

Замечания: 1) в доказательстве приведен алгоритм перехода от записи функции в виде ДНФ к ее записи в виде полинома Жегалкина.

Пример:

f(x, y, z) = xy x y y z xy x y y z = (xy + 1)((x + 1)(y + 1) + 1)((y + 1) z + 1) + 1 =

=(xy + 1)(xy + x+ y)(yz + z + 1) + 1 = (x+ y)(yz + z + 1) + 1 =

=xyz + yz + xz + yz + x + y + 1 = xyz + xz + x + y + 1;

2)напоминаем, что при сложении (по модулю 2) 1 + 1 = 0. Поэтому сумма четного числа одинаковых слагаемых всегда равна 0. Например, xyz + xyz + xyz = xyz;

3)надо уметь переходить к полиному Жегалкина не только от ДНФ (по алгоритму, приведенному в доказательстве теоремы), но и от таблицы истинности данной функции. Для такого перехода надо знать 2 алгоритма: метод неопределенных коэффициентов и «метод бабочки».

Метод неопределенных коэффициентов. Запишем сначала нашу функ-

цию в виде полинома Жегалкина с неопределенными коэффициентами, т. е. перепишем формулу (2.6), в частности, для функции 3 переменных – формулу (2.7). Затем в написанную формулу по очереди подставляем всевозможные наборы значений переменных и приравниваем полученные выражения соответствующим значениям функции из ее таблицы истинности.

Из полученных равенств, в которых неизвестными являются коэффициенты полинома Жегалкина, находим эти коэффициенты. Легко видеть, что за каждую подстановку мы находим ровно один коэффициент. Так как

число наборов равно числу коэффициентов (и равно 2п), то мы сможем найти все коэффициенты и, подставляя их в исходную формулу (2.6) (в частности, в формулу (2.7)), получим полином Жегалкина данной функции.

36

Метод бабочки. Пусть дана функция z = f (x1, x2,, xп) от п переменных. В ее таблице истинности записаны 2п ее значений. Алгоритм метода бабочки заключается в последовательном проведении п операций, обычно называемых итерациями. 1-я итерация: рядом со столбцом значений данной функции записывается новый столбец; в верхнюю его половину (т. е. от 1-й строчки до строчки с номером 2п–1) переписываются числа из столбца значений функции, т. е числа f (0, x2,, xп), а в нижнюю его половину (т. е. в строчках с номерами от 2п–1 + 1 до 2п) записываются суммы по модулю 2 соответствующих значений данной функции из верхней и нижней

половины таблицы, т. е. числа f (0, x2,, xп) + f (1, x2,, xп). Во 2-й итерации ту же процедуру проделывают отдельно с верхней и отдельно с ниж-

ней частью столбца, полученного в результате проведения 1-й итерации. В результате проведения второй итерации появляется новый столбец, у которого в верхней четверти записаны числа f (0, 0, x3,, xп), во второй четверти – числа f (0, 0, x3,, xп) + f (0, 1, x3,, xп), в третьей четверти – числа f(0, 0, x3,, xп) + f (1, 0, x3,, xп), а в нижней четверти – числа

f(0, 0, x3,, xп) + f (1, 0, x3,, xп) + f (0, 1, x3,, xп) + f (1, 1, x,, xп).

Эта процедура повторяется п раз. При проведении последней, п-й, итерации в последнем, п-м, столбце в строках с номерами 1, 3, 5, , 2п – 1 переписываются значения из предыдущего, п – 1-го столбца, а в строках с номерами 2, 4, 6,, 2п записывается сумма (по модулю 2) того, что было записано в этой строке в п – 1-м столбце со значением, записанном в этом же п – 1-м столбце в предыдущей строке. По полученному п-му столбцу составляется полином Жегалкина данной функции: каждой единице этого столбца сопоставляется конъюнкция тех переменных, значения которых в строке с рассматриваемой единицей тоже равны единице, а затем эти конъюнкции переменных складываются по модулю 2. Последнее выражение и есть полином Жегалкина данной функции.

Например, f(x)= {01101001}.

x y z

f(x, y, z)

i1

i2

i3

0 0 0

0

0

0

0

0 0 1

1

1

1

1

0 1 0

1

1

1

1

0 1 1

0

0

1

0

1 0 0

1

1

1

1

1 0 1

0

1

1

0

1 1 0

0

1

0

0

1 1 1

1

1

0

0

37

В последнем столбце – 3 единицы, которым соответствуют наборы значений аргументов (0, 0, 1), (0, 1, 0) и (1, 0, 1) соответственно. Значит, в полиноме Жегалкина этой функции складываются три простых конъюнкции, каждая из которых содержит всего по одной переменной – x, y и z соответственно, и поэтому искомый полином имеет вид: f(x, y, z) = x+ y+ z.

Обоснование метода бабочки. Докажем по индукции, что указанный метод действительно приводит к полиному Жегалкина.

База индукции. Для всех 4 функций одной переменной (т. е. для 0, 1, х, x ) это утверждение проверяется непосредственно при помощи одной итерации над их таблицами истинности. Индукционный переход. Пусть это утверждение уже доказано для всех логических функций от п переменных (х1, х2, , хп). Докажем, что тогда оно верно и для функции f от п+1 переменной, т. е. для z = f(х1, х2, , хп, хп +1). Считаем, что таблица истинности этой функции записана стандартным образом, т. е. по возрастанию двоичных чисел, соответствующих наборам значений аргументов. Тогда в п-м столбце, полученном в результате п-й итерации, в строках с номерами 1, 3, 5, , 2п 1 стоят числа, соответствующие значению 0 последнего аргумента: хп+1 = 0. Иными словами, в них стоят значения, соответствующие z = f(х1, х2, , хп, 0), т. е. функции от п переменных. По индукционному предположению, по их значениям можно записать полином Жегалкина для этой функции, поэтому мы записываем этот полином (у которого простые конъюнкции не содержат переменной хп+1), а значения из этих строк переписываем без изменений в последний, (п + 1)-й столбец (т. е. для (п + 1)-й итерации). В том же п-м столбце в строках с номерами 2, 4, 6, , 2п стоят числа, соответствующие тем же наборам значений аргументов, что и

встроках с номерами 1, 3, 5, , 2п–1 (так как наборы значений аргументов

встроках с номерами 2k–1 и 2k отличаются только значениями последнего

аргумента: хп+1 = 0 и хп+1 = 1 соответственно). Поэтому, если мы уже получили для полинома Жегалкина простую конъюнкцию xk1 xk2 ...xkm (km < n + 1),

рассматривая строку с нечетным номером для f(х1, х2, , хп, 0) = 1, то в строке со следующим номером в последнем, (п + 1)-м, столбце должен стоять 0, так как иначе в полиноме Жегалкина нужно будет записать сумму (по модулю 2) 2 простых конъюнкций xk1 xk2 ...xkm + xk1 xk2 ...xkm xn 1, которая

при хп+1 = 1 и при любом наборе значений остальных переменных равна 0 (даже для тех наборов значений переменных, у которых соответствующая простая конъюнкция входит в полином Жегалкина с коэффициентом 1). Иными словами, если в столбце, соответствующем предпоследней итерации, стоят подряд две единицы, то в столбце последней итерации должны стоять 1 и 0. Это достигается сложением двух единиц предпоследнего столбца, что и требуется для доказательства индукционного перехода (так как 1 + 0 = 0 + 1 = 1, а 0 + 0 = 0, то рассуждения в остальных вариантах расположения значений в предпоследнем столбце очевидны).

38