
Шпоры по дискретной математике1
.doc
19.
Элементарные функции алгебры логики
Обозначения: E2={0,1};
Е=
E2E2...E2
– прямое произведение n
сомножителей; (x
,..,xn)
E2, | E2| – мощность
E2, |E2|=2, тогда |Е
|=2n.
Определение 1. Функцией алгебры
логики называется закон, осуществляющий
отображение Е
E2, причем отображение всюду
определено и функционально. Так как
множество Е
конечно, то задать отображение Е
E2, означает задать множество
наборов из Е
и для каждого набора указать его образ
в Е 2. Определение 2.
Таблица, задающая функцию f(x1,x2,...,xn),
называется таблицей истинности для
этой функции. функция записывается
f3(x)
1
и называется константой 1. Если
стандартным расположением переменной
x считать 0 в первой строке и 1 во
второй, то функции f0, f1,
f2, f3 определяются
однозначно наборами значений: f0=(0,0),
f1=(0,1), f2=(1,0) и f3=(1,1).
Наборы значений функций составляют
множество E2Е2,
поэтому количество функций одной
переменной равно |E2
E2|=4.
Для удобства функции пронумерованы
так, что двоичный код номера совпадает
с набором значений функции.
Рассмотрим
функции двух переменных f(x1,x2).
Функции двух переменных определены на
множестве Е={(0
0),(0 1),(1 0),(1 1)}, эти наборы переменных из
Е
можно тоже рассматривать как двоичные
коды чисел 0,1,2,3, именно такой порядок
расположения наборов (x1,x2)
будем считать стандартным. Тогда функции
f(x1,x2) определяются
однозначно наборами значений ,
34),
где каждое iE2,
поэтому
3, 4Е
.
Следовательно, число функций двух
переменных равно 24=16.
Cимволы
,
участвующие в обозначениях
элементарных функций, называются
логическими связками или просто связками.
Переменные 0 и 1 называются логическими
или булевыми переменными, причем 0
соответствует «лжи» , а 1 – «истине», а
функции алгебры логики называются еще
и блевыми функциями.
Рассмотрим
функции f(x1...xn),
где (x1...xn)
Е,
тогда число наборов (x1...xn),где
функция f(x1...xn)
должна быть задана, равно |Е
|=2n.
Обозначим множество всех функций
двузначной алгебры логики Р2.
Обозначим через Р2(n) число
функций, зависящих от n переменных.
Очевидно, Р2(n)=22 n.
С ростом n число Р2(n) быстро растет: P2(1)=4, P2(2)=16, P2(3)=256, P2(4)=65536 . При больших n табличный способ задания функций становится неприемлемым, используется формульное задание функций. Но прежде чем ввести понятие формулы, дадим определение существенной переменной.
Определение 3. Функция f(x1,...,xi–1,xi,xi+1,...,xn) существенно зависит от хi, если существуют такие значения nпеременных x1, ...xi–1, xi+1, ...xn, что f(1, ...i–1 i+1nf1...i–1 i+1n) . Тогда переменная хi называется существенной переменной. В противном случае хi называется фиктивной переменной.
1. Законы склеивания:
xyx=x(y
)=x
1=x
(дистрибутивность & относительно
);
(xy)&(x)=x
y =x 0=x
(дистрибутивность
относительно &).
2. Законы поглощения:
xxy=x(1y)=x1=x;
x&(xy)=xxy=x.
Свойства элементарных функций и теорема о замене подформул на эквивалентные позволяют упрощать формулы.
x |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |

Посмотрим, чему равно x при разных значениях x и .
Из таблицы следует: x=1 тогда и только тогда, когда x=.
Теорема
о разложении функции по переменным
П
усть
f(x1, ..., xn) P2.
Тогда для любого m: 1 ≤ m ≤ n допустимо
представление: f(x1,
..., xm,
xm+1,
..., xn)
=
,
где
дизъюнкция берется по всем наборам из
0 и 1, которое называется разложением
функции f по переменным x1, ..., xn.
Прежде чем доказать утверждение,
рассмотрим примеры. Пример 1. m = 1,
запишем разложение по переменным х:
f(x1, ..., xn) =
=
f(0, x2 , …,xnx1f(1,
x2, ..., xn). (1)
Пример
2. m=2, запишем разложение по переменным
х и
:
f(x1,x2,…xn)
=
=
.
Если f(x, x
= xx,
то последняя формула дает xx=
xx
.
Доказательство.
Для доказательства возьмем произвольный
набор ,,n)
и покажем, что левая и правая части
формулы (1) принимают на этом наборе
одинаковые значения. Слева имеем
fn.
Cправа :
.
Дизъюнкция берется по всевозможным
наборам ().
Если в этих наборах хотя бы одно i
(1≤i≤m), то
=
0 и
,
следовательно, ненулевой член будет
только на наборе )
= ),
тогда c3
fn.
Следствие
1. Любую функцию f(x1, ...,
xn) не равную
тождественно нулю можно представить
в виде:
,
причём единственным образом. Этот вид
называется совершенной дизъюнктивной
нормальной формой функции f(x1,
..., xn) и
записывается СДНФ.
Доказательство.
Существование СДНФ для функции не
равной тождественно нулю вытекает из
предыдущей теоремы. Покажем, что эта
СДНФ единственная. В самом деле, имеется
n-местных
функций, не равных нулю тождественно.
Подсчитаем число различных СДНФ от n
переменных. Путь
означает число сочетаний из n
элементов по k. Тогда число
одночленных СДНФ
равно
.
Число k-членных СДНФ равно
.
Число n-членных СДНФ равно
.
Число всех различных СДНФ
Итак,
функций реализуются посредством
СДНФ, т.е. каждой функции соответствует
единственная СДНФ.
Замечание.
–
элементарная конъюнкция ранга n по числу
входящих переменных, предполагается,
что при i j , хi
хj.
СДНФ для f(x1, ..., xn)
–дизъюнкция элементарных конъюнкций
ранга n. Если функция представлена в
виде дизъюнкций элементарных конъюнкций,
где ранг хотя бы одной элементарной
конъюнкции меньше n, то такая форма
называется дизъюнктивной нормальной
формой (ДНФ).
Cледствие
2. Любая функция алгебры логики может
быть представлена в виде формулы через
отрицание, & и
а) Если f ≡ 0, то f(x1, ..., xn) =
&
.
б)
Если f(x1, ..., xn)
0 тождественно, тогда ее можно представить
в виде СДНФ, где используются только
связки
,
&, СДНФ дает
алгоритм представления функции в виде
формулы через &,
.
С
ледствие
3. Мы умеем представлять функцию в виде
.
Нельзя ли представить ее в виде
.
Пусть функция f(x1, ..., xn)
1 тождественно. Тогда функция f* 0
тождественно, и ее можно представить в
виде СДНФ:
.
По принципу двойственности заменим &
на и наоборот, получим
(2)
называется элементарной дизъюнкцией
ранга n. Представление функции в виде
(2) называется совершенной конъюнктивной
нормальной формой или в краткой записи
– СКНФ. СКНФ для f(x1, ..., xn)
– конъюнкция элементарных дизъюнкций
ранга n. КНФ для f(x1, ..., xn) –
конъюнкция элементарных дизъюнкций,
где ранг хотя бы одной элементарной
дизъюнкции меньше n. Пример 4. Пусть
f(x1, x2, x3) = x1
(x2
(x3
~ x1)). Представим ее в виде СКНФ,
для этого получим таблицу истинности.
x1 |
x2 |
x3 |
x3~x1 |
x |
f |
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
1 0 1 0 0 1 0 1 |
1 1 1 0 1 1 0 1 |
1 1 1 1 1 1 0 1 |
Функция равна нулю только на наборе (1, 1, 0), поэтому
f(x1
x2 x3)=x1x2
x3
=xx2x31=
x3.
26.
Полином Жегалкина. f(x1,
..., xn) P2,
представим ее в виде формулы через
конъюнкцию и сумму по модулю два,
используя числа 0 и 1. Это можно сделать,
так как {x1&x2, x1x2,
0, 1} полна в Р2. В силу свойства
x & (yz)
= xy xz можно
раскрыть все скобки, привести подобные
члены, и получится полином от n
переменных, состоящий из членов вида
хх
...х
,
соединенных знаком . Такой полином
называется полиномом Жегалкина.
Общий
вид полинома Жегалкина:где
,
s = 0, 1, ..., n, причем при s = 0
получаем свободный член а0.
Представление функции в виде полинома Жегалкина
1.
Представим любую функцию формулой над
{x1&x2,}
и сделаем замену
=x1.
Этот способ удобен, если функция задана
формулой.
Пример
2. (x1(x2
x3))(x1
x2) x3 = (x1
x2 x3)(x1
x2) x3 = (x1x2
x1x3 x1x2
x2 x2x3)x3
= (x1x3
x2)x3 = x1x3x2
x3 = ((x1x31)x21)x3
= x1x2x3x2x3x3.
Надо помнить, что четное число одинаковых слагаемых в сумме по mod2 дает 0.
2. Метод неопределенных коэффициентов. Он удобен, если функция задана таблицей.
Пример 3. Запишем с неопределенными коэффициентами полином Жегалкина для функции трех переменных f(x1, x2, x3) = (01101001) = а0 а1х1 а2х2 а3х3 b1x1x2 b2x2x3 b3x1x3 cx1x2x3. Затем находим коэффициенты, используя значения функции на всех наборах. На наборе (0, 0, 0) f(0, 0, 0) = 0, с другой стороны, подставив этот набор в полином, получим f(0, 0, 0) = а0, отсюда а0 = 0. f(0, 0, 1) = 1, подставив набор (0, 0, 1) в полином, получим: f(0, 0, 1) = а0 а3, т.к. а0 = 0, отсюда а3 = 1. Аналогично, f(0, 1, 0) = 1 = а2, f(0, 1, 1) = 0 = а2 а3 b2 = b2 = 0; а1 = 1; 0 = а1 а3 b3 = b3 = 0; 0 = а1 а2 b1 = b1 = 0; 1 = 1 1 1 c; c = 0; f(x1, x2, x3) = x1 x2 x3.
3. Многочлен Жегалкина можно получить также с помощью треугольника Паскаля по единицам его левой стороны по таблице следующим образом. Построим многочлен Жегалкина для функции f = (10011110). Верхняя сторона треугольника есть функция f. Любой другой элемент треугольника есть сумма по модулю для двух соседних элементов предыдущей строки. Левая сторона треугольника для функции f содержит шесть единиц. Многочлен Жегалкина будет содержать шесть слагаемых. Первая единица треугольника соответствует набору (000). Первое слагаемое многочлена есть 1. Третья снизу единица в левой стороне треугольника соответсвует набору (101). В качестве слагаемого многочлена берем x1x3. Аналогично для других единиц треугольника. Слева от наборов показаны слагаемые многочлена Жегалкина.
N |
x1x2x3 |
f |
Треугольник Паскаля |
1 x3 x2 x2x3 x1 x1x3 x1x2 x1x2x3 |
000 001 010 011 100 101 110 111 |
1 0 0 1 1 1 1 0 |
1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 |
Тогда
Теорема Жегалкина
Каждая
функция из
может быть представлена в виде полинома
Жегалкина единственным образом.
Здесь единственность понимается с точностью до порядка слагаемых в сумме и порядка сомножителей в конъюнкциях:
,
s = 0, 1, ..., n. Доказательство.
Любая функция из Р2 может быть
представлена формулой над {x1
& x2, x1x2,
0, 1}, а эта формула после раскрытия всех
скобок и приведения подобных членов
дает полином Жегалкина. Докажем
единственность представления. Рассмотрим
функции f(x1, ..., xn)
от n переменных. Мы знаем, что всего
таких функций, т.е. их таблиц истинности
, 2n. Подсчитаем
число различных полиномов Жегалкина
от n переменных, т.е. число вариаций
вида:
.
Число наборов
равно числу всех подмножеств множества
{ x1, ..., xn }, сюда
входит и пустое множество (если s =
0). Число подмножеств множества из n
элементов равно 2n
, а так как каждый набор входит с
коэффициентом
,
принимающим два значения: 0 или 1, то
число всевозможных полиномов будет
.
Так как каждому полиному соответствует
единственная функция, число функций от
n переменных равно числу полиномов,
то каждой функции будет соответствовать
единственный полином.
Определение. Функция f(x1, ..., xn), полином Жегалкина для которой имеет следующий линейный относительно переменных вид: f = а0 а1х1 а2х2 ... аnхn, называется линейной.
Лемма о нелинейной функции. Суперпозицией нелинейной функции, отрицания и константы 1 можно получить конъюнкцию.
Доказательство.
Пусть f(x1, ..., xn)
– нелинейная функция. Тогда полином
Жегалкина содержит для нее слагаемое,
в котором присутствует произведение
xixj.
Будем считать для простоты, что x1x2
в многочлене Жегалкина является этим
произведением. Произведя группировку
слагаемых, функцию f
представим в виде
Функция
h0 не есть
тождественный нуль, иначе в полиноме
Жегалкина отсутствует слагаемое с
произведением x1x2.
Тогда существует набор (3,
…, n)
из 0 и 1, для которого h0(3,
…, n)
= 1. Пусть h1(3,
…, n)
= a,
h2(3,
…, n)
= b,
h3(3,
…, n)
= c. Тогда
Построим функцию:
где
d = ab
c.
Если d = 0, то h(x1,
x2) = x1x2.
Если d = 1, то h(x1,
x2) = x1x2
1 и тогда
Лемма доказана.
Функция f(x1, ..., xn) сохраняет константу a {0, 1}, если f(a, …, a) = a.
Пример 4. Функция xy сохраняет 0, сохраняет 1. Функция xy сохраняет 1 и не сохраняет 0