- •Булевы функции Основные понятия
- •Основные эквивалентности:
- •Принцип двойственности
- •Разложение булевых функций по переменным
- •Алгоритм построения с.Д.Н.Ф. По таблице значений функции.
- •Алгоритм построения с.Д.Н.Ф. При помощи равносильных преобразований.
- •Алгоритм построения с.К.Н.Ф. По таблице значений функции.
- •Алгоритм построения с.К.Н.Ф. При помощи равносильных преобразований.
- •Полиномы Жегалкина
- •Полнота.
- •Замкнутость.
- •Если m1m2, то [m1][m2].
- •Класс самодвойственных функций – s.
- •Класс монотонных функций – m.
- •Теорема Поста о полноте
- •Предполные классы. Базисы
Полнота.
Система функций {f1,f2,…,fi,…} из называется полной в , если любая булева функция может быть представлена в виде суперпозиции функций данной системы.
-
Пусть {f1,f2,…,fi,…} – полная в система, а {g1,g2,…,gK,…} – такая система функций, что для любого i fi=Si[g1,g2,…,gK,…]. Тогда система {g1,g2,…,gK,…} – полна.
-
Полными в являются системы:
-
(т.к. каждую функцию можно считать формулой над );
-
{,,} (в силу теоремы 2);
-
{0,1,,} (т.к. система {,,} полна и xy=xyxy).
-
{,} (т.к. система {,,} полна и );
-
{,} (т.к. система {,,} полна и );
-
{|} (т.к. система {,} полна и , ).
Замкнутость.
С понятием полноты тесно связано понятие замыкания. Пусть M. Замыканием [M] множества M называется множество всех булевых функций, представимых формулами над M. Теперь определение полноты можно переформулировать следующим образом. Система функций M полна в, если [M]=.
Множество M называется замкнутым классом, если [M]=M.
-
[]=;
-
[{,,}]=;
-
[{0,1}]=[{0,1}].
Свойства замыкания:
-
M[M].
-
[M]=[[M]].
-
Если m1m2, то [m1][m2].
-
[M1][M2] [M1M2].
Задачи
-
Сведением к заведомо полным системам показать, что множество A является полным в P2:
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
.
Важнейшие замкнутые классы
Класс функций, сохраняющих константу 0 – T0.
T0={f:f(0,0,…,0)=0}.
-
Функции 0, x, x&y, xy, xy T0, а x, x~y T0.
Очевидно, что |T0n|=, т.к. функции из T0 могут принимать любое из двух значений 0 или 1 на любых наборах, кроме первого.
-
[T0]= T0.
Класс функций, сохраняющих константу 1 – T1.
T1={f:f(1,1,…,1)=1}.
-
Функции 1, x, x&y, xy, x~y T1, а x, xy T1.
Очевидно, что |T1n|=, т.к. функции из T1 могут принимать любое из двух значений 0 или 1 на любых наборах, кроме последнего.
Отметим, что классы T0 иT1 двойственны, т.е. T0*=T1 и T1*=T0.
-
[T1]= T1.
Класс линейных функций – L.
Функция f(x1,…,xn) называется линейной, если ее можно представить в виде полинома Жегалкина не выше первой степени, т.е. если существуют такие константы Ai, i=1,…,n, что .
-
Функции 0,1, x, x, xy, x~y L, а x&y, xy L.
-
|Ln|=.
-
[L]= L.
-
Функция является линейной тогда и только тогда, когда она меняет свое значение на любой паре соседних по существенной переменной наборов.
-
(лемма о нелинейной функции) Если fL, то x&y[{f,0,1,x}].
Класс самодвойственных функций – s.
Функция f называется самодвойственной, если f=f*.
.
Функции x, x, xyz, xyyzzx S, а 0, 1, x&y, xy S.
-
[S]= S.
-
|Sn|=.
-
(лемма о несамодвойственной функции) Если fS, то 0,1[{f,x}].
Класс монотонных функций – m.
Функция f(x1,…,xn) называется монотонной, если на любой паре сравнимых наборов и таких, что , выполнено f()f().
-
Функции 0, 1, x, x, x&y, xy, xyyzzx M, xy, x|y, xy M.
-
[M]=M.
-
(лемма о немонотонной функции) Если fM, то x[{f,0,1}].
Задачи
-
Выяснить, являются ли функции f и g самодвойственными:
-
, g=(1001 1011 1011 1001);
-
, g=(1100 0011 1010 0101);
-
, g=(1101 0100 1011 0010);
-
, g=(1100 0011 0011 1100);
-
, g=(1001 0110 1001 0110);
-
, g=(1010 0101 0101 1010);
-
, g=(0101 0110 1000 0101);
-
, g=(0101 0100 1101 1010);
-
, g=(0101 0100 1100 0101);
-
, g=(0010 1000 1110 1011).
-
-
Заменить прочерки символами 0 и 1 так, чтобы получился вектор значений самодвойственной функции:
-
f=(0 1 – 0 – 0 – –);
-
f=(– – 01 – – 1 1);
-
f=(– 1 – 1 – 0 – 1);
-
f=(– 1 0 – 0 – – 1);
-
f=(1 – – 0 – 0 0 –);
-
f=(0 1 – – 0 1 – –);
-
f=(1 – 0 – 0 – 1 – );
-
f=(– 0 1 – 1 – – 0);
-
f=(– – 0 – 1 – 1 0);
-
f=(1 0 – 0 – 1 – – ).
-
Определить, какие переменные функции f следует заменить на x, а какие на с тем. Чтобы получить константу:
-
f=(0110 1000 1110 1011);
-
f=(1010 1110 1100 1010);
-
f=(1011 0100 1111 0010);
-
f=(1110 1000 0110 1000);
-
f=(0000 1111 0010 1111);
-
f=(1010 0101 0101 0011);
-
f=(1101 0001 1011 0100);
-
f=(0101 1101 0100 1111);
-
f=(0110 1001 0101 1101);
-
f=(1101 0000 1101 0000).
-
Представив функцию полиномом, выяснить, является ли она линейной:
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
;
-
.
-
Выяснить, является ли линейной функция:
-
f =(0110 1001 0110 1001);
-
f =(1010 0101 0101 1010);
-
f =(0011 1100 1100 0011);
-
f =(1001 1001 0110 0110);
-
f =(1010 0110 0110 0101);
-
f =(1010 0101 1001 1100);
-
f =(1101 0010 1101 0010);
-
f =(0111 1001 1000 0110);
-
f =(0011 0010 1100 1101);
-
f =(0100 1100 1100 1011).
-
Заменить прочерки символами 0 и 1 так, чтобы получился вектор значений линейной функции:
-
f =(1 – – – – – – – – – – 0 – 1 1 0);
-
f =(– 1 1 – 1 – – – 1 – – – – – – 0);
-
f =(– – – 0 – 0 0 – 1 – 0 – – – – –);
-
f =(– 1 0 0 – – – 1 – 1 – – – – – –);
-
f =(– – – 1 – 1 1 – – 1 1 – 1 – 0 –);
-
f =(0 – 1 – – – – 1 – – – 1 – – – 0);
-
f =( – – – – 1 0 – – – – 0 – 0 1 – –);
-
f =(– 1 – – – – – – 0 0 – 1 – 1 – –);
-
f =(0 1 – – – – – – 1 – 1 – 1 – – –);
-
f =(– – 0 0 – – – – 1 1 – – – 0 – –).
-
Получить из функции f функцию xy:
-
f =(1101 1111 1100 1111);
-
f =(1111 0101 1111 1101);
-
f =(1001 0111 1111 1010);
-
f =(0111 1111 1110 1110);
-
f =(0111 1011 1111 1110);
-
f =(1101 1001 1001 0111);
-
f =(1011 1111 1001 1111);
-
f =(1011 0011 0010 1111);
-
f =(0010 1111 1111 0101);
-
f =(1111 1111 1110 1100).
-
Определить, являются ли функции f и g монотонными. Для немонотонных функций указать два соседних набора :
-
, g=(00010101);
-
, g=(01010111);
-
, g=(00110011);
-
, g=(00010111);
-
, g=(00010110);
-
, g=(00011111);
-
, g=(1001 1011);
-
, g=(1100 0011);
-
, g=(1101 0100);
-
, g=(1010 0101).