Математическая логика и теория алгоритмов. Учебное пособие-1
.pdf
Булевы функции
две переменные, входящие в выбранное слагаемое, оставляем без изменения, например xi1 и xi2;
остальные переменные (при k > 2), входящие в это слагаемое, заменяем на 1:
xi3 = … = xik = 1;
переменные, не входящие в выбранное слагаемое, заменяем на 0: xj = 0.
Таким образом, из полинома Pf (x1, x2, …, xn) получим полином вида
Pf' (xi1 , xi2 ) xi1 xi2 xi1 xi2 ,
где α, β, γ {0, 1}.
В следующей таблице представим все восемь полиномов Pf' (x, y) ,
получающихся при различных α, β, γ (здесь для простоты переобозначили xi1 = x, xi2 = y):
i |
α |
β |
γ |
Pfi |
|
|
|
fi |
||||||
1 |
0 |
0 |
0 |
xy |
|
|
|
xy |
||||||
2 |
0 |
0 |
1 |
xy 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
xy |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
0 |
1 |
0 |
xy y |
|
|
|
|
|
y |
||||
|
|
|
x |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
4 |
0 |
1 |
1 |
xy y 1 |
|
x |
|
|
|
|
||||
|
y |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||
5 |
1 |
0 |
0 |
xy x |
|
|
x |
|
|
|
|
|||
y |
||||||||||||||
|
|
|
|
|
|
|
|
|
||||||
6 |
1 |
0 |
1 |
xy x 1 |
|
|
y |
|||||||
|
x |
|||||||||||||
|
|
|
|
|
|
|
|
|||||||
7 |
1 |
1 |
0 |
xy x y |
|
x y |
||||||||
8 |
1 |
1 |
1 |
xy x y 1 |
|
|
|
|
|
|
|
|
|
|
|
x y |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Доказательство леммы завершим примером получения дизъюнкции и конъюнкции из функций f1 – f3:
1) xy f1(x, y), x y x y f1(x, y);
2)xy xy f2 (x, y), x y f2 (x, y);
3)xy xy f3 (x, y), x y f3 (x, y).
Из остальных функций f4 – f8 конъюнкция и дизъюнкция с помощью отрицания получаются аналогично. Лемма доказана.
31
Глава 2
2.7. Класс монотонных функций (M)
На множестве {0, 1}n введем отношение частичного порядка « ≤ » следующим образом.
Определение. 0 ≤ 0,0 ≤ 1,1 ≤ 1
((α1, α2, …, αn) ≤ (β1, β2, …, βn)) ↔ (αi ≤ βi для всех i = 1, 2, …, n).
Определение. Булевафункцияf (x1, x2, …, xn) называетсямонотонной,
если из (α1, α2, …, αn) ≤ (β1, β2, …, βn) следует неравенство f (α1, α2, …, αn) ≤ f (β1, β2, …, βn)
Из определения функций 0,1, xy, x ˅ y, x, y следует, что они монотонны.
На практике полезна следующая теорема.
Теорема. Если функция f (x1, x2, …, xn) не равна постоянной 1 и f (0, 0, …, 0) = 1, то она не является монотонной.
Так же как и для рассмотренных ранее классов функций, для монотонных функций имеет место теорема.
Теорема. Класс монотонных функций является замкнутым.
Доказательство: Пусть
g (x1, x2, …, xn), f1 (x1, x2, …, xm), …, fn (x1, x2, …, xm) M.
Построим суперпозицию этих функций
F (x1, x2, …, xm) = g (x1, x2, …, xm), …, fn (x1, x2, …, xm) и рассмотрим F (α1, α2, …, αm), если (α1, α2, …, αn) ≤ (β1, β2, …, βn),
F(α1, α2, …, αm) = g (f1 (α1, α2, …, αm), …, fn (α1, α2, …, αm)) ≤
≤g (f1 (β1, β2, …, βm), …, fn (β1, β2, …, βm)) = F (β1, β2, …, βm).
Таким образом, функция F (x1, x2, …, xm) монотонна и теорема дока-
зана.
Лемма (о немонотонных функциях). Из всякой немонотонной функции с помощью подстановок функций 0 и 1 вместо некоторых переменных можно получить функцию отрицания, то есть
f M → ( x [{f, 0,1}]).
Доказательство: Пусть f M, тогда существуют такие u и v, что u ≤ v, но 1 = f (u) f (v) = 0. Построим последовательность {wi}, облада-
ющую свойствами:
1) соседние wi и wi+1 отличаются только одной компонентой;
32
Булевы функции
2) u = w1 ≤ w2 ≤ … ≤ wk = v.
В этой последовательности найдутся wj и wj+1, для которых f (wj) = 1, f (wj+1) = 0.
Пусть wj и wj+1 отличаются i-й компонентой, тогда w j (w1j , , wij 1,0, wij 1, , wnj ),
w j 1 (w1j , , wij 1,1, wij 1, , wnj ).
Построим функцию g(xi ) f (w1j , , wij 1, xi , wij 1, , wnj ) . Для нее имеем:
g(0) f (w1j , , wij 1,0, wij 1, , wnj ) 1; g(1) f (w1j , , wij 1,1, wij 1, , wnj ) 0.
Таким образом, g (xi) = xi и лемма доказана.
Пример. Дана немонотонная функция f (x, y, z) = (x ˅ y ˅ z) (x y z ).
С помощью данной функции построить отрицание. Решение. Приведем таблицу значений данной функции:
x |
y |
z |
f (x, y, z) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
В качестве u можем взять (0,0,1), в качестве v возьмем (1,1,1). Построим последовательность wj:
u = (0,0,1) ≤ (1,0,1) ≤ (1,1,1) = v
f (0,0,1) = 1, f (1,0,1) = 1, f (1,1,1) = 0,
поэтому в качестве wj возьмем (1,0,1), а в качестве wj+1 – (1,1,1). Тогда g( y) f (1, y,1) 1 y 1 1 y 1 1y y.
33
Глава 2
2.8. Полнота систем булевых функций
Определение. Система Σ булевых функций называется полной, если любую булеву функцию можно получить с помощью суперпозиций функций системы Σ, то есть когда имеет место равенство
P2 (n) = [Σ].
Примеры полных систем:
1)Σ1 = { , , } – полна на основании теорем о существовании СДНФ
иСКНФ;
2)Σ2 = { , } – полна, так как дизъюнкцию можно выразить через конъюнкцию и отрицание:
xy x y x y;
3)Σ3 = { , } – полна, так как конъюнкцию можно выразить через дизъюнкцию и отрицание:
xy x y x y;
4)Σ4 = { , } – полна, так как конъюнкцию и дизъюнкцию можно выразить через импликацию и отрицание:
xy x y x y,
x˅ y = x → y.
5)Σ5 = { , , } – полна;
6)Σ6 = {↓} – полна;
7)Σ7 = {|} – полна.
Упражнение. Докажите полноту систем Σ5 – Σ7.
Теорема (Поста). Для того чтобы система булевых функций была полна, необходимоидостаточно, чтобывнеёвходилиследующиефункции: несохраняющая ноль, несохраняющая единицу, несамодвойственная, нелинейная и немонотонная.
Доказательство: Необходимость. ПустьсистемаΣбулевыхфункций полна. Докажем, что в неё входит несохраняющая ноль функция.
Предположим, что такой функции в системе нет. Значит Σ P0. Так как система Σ полна, то (по определению) любая булева функция есть суперпозиция функций системы Σ и сохраняет ноль, так как класс P0 замкнут.
34
Булевы функции
Но, например, функция x не сохраняет ноль. Полученное противоречие означает, что наше предположение неверно и в Σ входит несохраняющая ноль функция.
Аналогично, опираясь на замкнутость классов P0, S, L, M, доказывается существование в системе перечисленных в теореме функций.
Достаточность.
Пусть в систему Σ входят функции f0, f1, fS, fL, fM, обладающие свойствами:
f0 P0, f1 P1, fS S, fL L, fM M.
Докажем, что конъюнкцию, дизъюнкцию и отрицание можно выразить с помощью суперпозиций функций системы Σ. Это и будет означать полноту системы Σ. Доказательство проведем по плану:
1.Выразим постоянные 0 и 1 через функции f0, f1, fS.
2.Выразим отрицание через функции fM, 0,1.
3.Выразим конъюнкцию и дизъюнкцию через функции fL, 0,1 x . По условию f0 (0, …, 0) = 1, f1 (1, …, 1) = 0. Возможны четыреварианта:
|
1 |
2 |
3 |
|
4 |
|
|
|
f0 (1, …, 1) = 0 |
f0 (1, …, 1) = 0 |
f0 (1, …, 1) = 1 |
|
f0 (1, …, 1) = 1 |
|
|
|
f1 (0, …, 0) = 0 |
f1 (0, …, 0) = 1 |
f1 (0, …, 0) = 0 |
|
f1 (0, …, 0) = 1 |
|
|
Обозначим g (x) = f0 (x, …, x), h (x) = f1 (x, …, x). |
следовательно, |
||||||
Рассмотрим вариант 1. Для него g (0) = 1, |
g (1) = 0, |
||||||
g (x) = x ; h (0) = 0, h (1) = 0, следовательно, h (x) = 0. |
|
|
|||||
Имеем: 0 = h (x) = f1 (x, …, x), 1 = g (h (x)) = f0 (f1 (x, …, x), …, f1 (x, …, x)) |
|||||||
Рассмотрим вариант 2. Для него: g (0) = 1, |
g (1) = 0, |
следовательно, |
|||||
g (x) = x . Так как функция fS несамодвойственная, то существует набор (α1, …, αn), для которого
fS ( 1, , n ) fS ( 1, , n ).
Обозначим y(x) fS (x 1 , , x n ) , тогда
y(0) fS (0 1 , ,0 n ) fS ( 1, , n )fS ( 1, , n ) fS (1 1 , ,1 n ) y(1).
Полученное равенство означает, что y (x) постоянная и если y (x) = 0, то 1 = g (y (x)); если y (x) = 1, то 0 = g (y (x)). Таким образом, и в этом случае постоянные 0 и 1 получены.
Рассмотрим вариант 3. Для него g (x) = 1, h (x) = 0. Рассмотрим вариант 4. Для него g (x) = 1, h (x) = x .
35
Глава 2
Таким образом, доказали, что постоянные 0 и 1 выражаются через
функции f0, f1, fS.
Заметим далее, что в случаях 1, 2, 4 отрицание также получено как суперпозицияфункций системы Σ. В случае3 его можно получить по лемме о немонотонных функциях с помощью немонотонной функции fM и постоянных 0 и 1.
По лемме о нелинейных функциях с помощью нелинейной функции fL, постоянных 0, 1 и отрицания можно получить конъюнкцию и дизъюнкцию.
Из полноты системы Σ1 = { , , } следует полнота нашей системы Σ.
Теорема доказана.
Напрактикедлярешениявопросаополнотесистемыфункцийудобно строить так называемую таблицу Поста. В этой таблице знаками «+» и «–» отражается принадлежность или непринадлежность рассматриваемых функций классам P0, P1, S, L, M. Вывод делается на основании теоремы Поста: если в каждой строке таблицы Поста есть хотя бы один минус, то система функций полна; если в некоторой строке таблицы все плюсы, то система не полна.
Пример. Полна ли система функций Σ = {x y, 1, f (x, y, z)}? Функция f (x, y, z) задана таблицей значений:
x |
y |
z |
f |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
Решение.
Исследуем свойства функции f (x, y, z).
Так как f (0,0,0) = 0, значит функция сохраняет ноль (f P0) и в соответствующей ячейки таблицы ставим «+».
Так как f (1,1,1) = 0, значит функция не сохраняет единицу (f P1) и в соответствующей ячейке ставим «–».
Функция не является самодвойственной, так как таблица её значений не антисимметрична относительно линии центрального разреза: например,
f (0,1,1) = 0, но f *(0,1,1) f (1,0,0) 0 1. В соответствующей ячейке ставим знак «–».
36
Булевы функции
Для выяснения вопроса о линейности данной функции сначала по таблице ее значений восстановим f (x, y, z), а затем построим полином Жегалкина Pf этой функции:
Pf x y z y z x y z y z x y z y z
x y z y z (x 1)( y 1)z y(z 1)
=xyz xz yz z yz y = xyz xz z y.
Функция не является линейной и в соответствующей ячейке ставим знак «–».
Анализируя таблицу значений функции, делаем вывод, что она не является монотонной, так как, например, (0,1,0) ≤ (0,1,1), но f (0,1,0) = 1 0 =
= f (0,1,1). В соответствующей ячейке ставим знак «–».
Такимобразом, заполнилипервыйстолбецтаблицыПостадляданной системы функций. Второй и третий столбцы, соответствующие свойствам функций x y и 1, заполняем аналогично первому, исходя из таблиц значений данных функций:
x |
y |
x y |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
В результате исследования получим следующую таблицу Поста:
Класс |
f (x, y, z) |
x y |
1 |
P0 |
|
|
|
|
|
|
|
P1 |
|
|
|
|
|
|
|
S |
|
|
|
L |
|
|
|
M |
|
|
|
Вывод: система данных функций полна, так как в каждой строке таблицы есть хотя бы один знак «–».
Определение. Система функций Σ = {f1, …, fk} называется базисом множества P2 (n) всех булевых функций n переменных, если:
1)Σ – полна;
2)Σ \ {fi} не является полной i (i 1, …, k).
37
Глава 2
Возвращаясь к ра смотренному вы ше примеру и анализируя таблицу Поста для системы Σ = {x y, 1, f (x, y, z)}, видим, что система Σ \ { x y}
тоже |
вляется полной. Следовательно, система Σ = {x y, 1, f (x, y, z)} яв- |
ляется |
полной но не является базисом, система {1, f (x, y, z)} является |
полной и является базисом.
2.9. Булевы функции и релейно-контактные схемы
Релейноконтактная схема (РКС) – это устройство, состоящее из проводников, реле и контактов – замыкающих и размыкающих. При вкл ючении РКС в электрическую цепь ток ерез нее проходит или не проходит. Осознани связи Р С и булевых функций произошло в30-е годы XX века.
Замыкающие кон акты в РКС будем обозначать x, y, z, …, размыкающие связанные с теми же реле, – x, y, z , . При прохождении тока через
контакт x будем полагать x = 1, x = 0. Всей РКС также сопоставляется 1, если через нее проходит ток, и 0, если не проходит. Но 0 и 1 – значения булевых функций. В эт м и была усмотрена связь между РКС и булевыми функциями.
Определение. Функцией проводимости РКС (x1, x2, …, xn) c контак-
тами x 1, …, xn |
называется булева функция π(x1, …, xn), равная 1, если РКС |
проводит ток, |
равная , если Р КС не проводит ток. |
Определимфункции проводимостиРКС, изображенных нарис. 2.1, 2.2:
Рис. 2.1
Рис. 2.2
1. C одной сторо ы, левая РКС(x, y) на рис.2.1 проводит ток тогда и толькотогда, когдаx = 1 и y = 1. Сдругойсторон ы, x ˄y = 1 тогдаитолько
тогда, когда x 1 и y = 1. Следовательно, π1 (x, y) = x ˄ y. В этом случае говорят, что конъюнкция реализуется последовательным соединением кон-
тактов.
38
Булевы функции
2. C одной стороны, правая РКС(x, y) на рис. 2.1 проводит ток тогда
итолько тогда когда x = 1 или y = 1. С другой стороны, x ˅ y = 1 тогда
итолько тогда, когда x 1 или y = 1. Следовательно, π2 (x, y) = x ˅ y. В этом
случа говорят, что ди ъюнкция реализуется параллельным соединением контактов.
3. C одной стороны, РКС(x, y) на рис. 2.2 проводит ток тогда и только тогда, когда x = 0. С другой стороны, x = 1 тогда и только тогда, когда x = 0. Следовательно, π3 (x) = x . Отрицаниереализуетсяразмыкающимконтактом.
Теорема. Каждой РКС соответствует некоторая булева функция проводимости и, наоборот, каждая булева функция реализуется некоторой РКС.
Пример. Дана РКС (x, y, z), рис. 2.3.
Рис. 2. 3
Определ ть функ ию проводимости данной РКС.
Решение.
Так как РКС представляет собой параллельное соединение трех проводников, то ее функци й проводимости будет функция вида
π(x, y, z) = f1 (x, y , z) ˅ f2 (x, y, z) ˅ f3 (x, y, z).
Так как параллельные ветви представляют собой последовательное соединение ко тактов, то
f1 ( x, y, z) = x ˄ y , f2 (x, y, z) = y ˄ z, f3 (x, y, z) = x ˄z .
Таким образом, функция проводимости данной РКС имеет вид
π(x, y, z) = (x ˄ y ) ˅ (y ˄ z) ˅ ( x ˄z ).
Пример. Дана булева функция f (x, y, z) = (x → y)(y z). Построить РКС, реализующую данную функцию.
Решение. Для построения РКС сначала нужно привести данную функцию к ДНФ или К Ф (если функция не имееттакой формы):
f (x, y, z) = (x → y)(y z) = (x y)(y z)
(x y)(( y z)(z y)) (x y)(( y z) ((z y))) (x y)( yz zy) .
39
Глава 2
Данная ф ункция представ ляет собой конъюнкцию дизъюнкций, поэтому реализуется РКС с последовательным соединением двух частей, в каж ой из которых параллельное соединение двух частей. Искомая РКС изображена на рис. 2.4.
Рис. 2.4
В теори и РКС рассматриваютcя две основные задачи – синтеза
ианализа. Они формулируются следующ им образом:
построить РКС, соответствующу ю определенным условиям;
упростить име щуюся РКС, то есть построить равносильную ей РКС с меньши м числом контактов.
Обе эти задачи решаются с помощью теориибулевых функций. Пример. Каждый из трех членов ко митета, голосуя «за», нажи мает на
свою кнопку. остроить, по воз можности, более простую схему, через которую ток проходил бы тогда и только тогда, когда не менее двух членов комитета голосуют «за».
Решение. Обозначим через x, y, z – контакты, соответствующие трем членам комитета. Функцию проводимости π(x, y, z) зададим таблично, учтя, что о а должна быть равна 1, если не менее двух из переменных x, y, z равны 1.
x |
y |
|
z |
π |
0 |
0 |
|
0 |
0 |
0 |
0 |
|
1 |
0 |
0 |
1 |
|
0 |
0 |
0 |
1 |
|
1 |
1 |
1 |
0 |
|
0 |
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
|
0 |
1 |
1 |
1 |
|
1 |
1 |
Использовав таблицу значений функции проводимости, построим СДНФ этой функции:
π(x, y, z) = x yz ˅ x y z ˅ xy z ˅xyz.
40
