Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математическая логика и теория алгоритмов1

.pdf
Скачиваний:
362
Добавлен:
01.05.2014
Размер:
458.23 Кб
Скачать

Упражнение 3.3. Доказать пп. 2 и 3 теоремы 3.4.

Упражнение 3.4. Доказать, что замыкание класса K есть класс всех функций, которые получаются из K и тождественной функции с

помощью суперпозиции и переименования аргументов.

Пусть K = {0, 1, x y, xy}. Тогда класс [K] содержит многочлены (от любого числа переменных). Эти многочлены называются полиномами Же• галкина. Поскольку произведение элементов множества B удовлетворяет тождеству u2 = u, то полином Жегалкина можно записать в виде

XM

ai1,...,ik xi1 . . . xik ,

ai1,...,ik B,

(3.2)

{i1,...,ik } {1,...,n}

и суммирование ведется по всем подмножествам множества {1, . . . , n}.

Пример 3.3. Рассмотрим булеву функцию от двух переменных

f (x1, x2) = 1 · x1x2 0 · x1 1 · x2 1. Это полином Жегалкина от двух переменных x1 и x2, где a12 = 1, a2 = 1, a1 = 0, a0 = 1. Этот полином можно записать и так: f (x1, x2) = x1x2 x2 1.

Обозначим через BF класс всех булевых функций.

Определение 3.9. Класс булевых функций K называется полным, если [K] = BF .

Другими словами, класс K полон, если любую булеву функцию мож• но получить из K и тождественной функции с помощью суперпозиции

и переименования аргументов.

Пример 3.4. Следующие классы функций являются полными

a) K1 = {xy, x y,

 

};

b) K2 = {xy,

 

};

x

x

c) K3 = {x y,

 

};

d) K4 = {xy, x y, 1, 0}.

x

Покажем, что любая функция может быть получена из функций класса K1 с помощью суперпозиции и переименования аргументов. До• казательство проведем на примере функции f (x1, x2, x3), заданной своей

таблицей истинности (табл. 3.1).

Выделим те строки таблицы, где в последнем столбце стоит 1. Это – вторая, шестая и седьмая строки. Каждой строке поставим в соответствие произведение переменных или их отрицаний следующим образом: второй строке поставим в соответствие произведение x1 x2 x3, шестой – x1 x2 x3, седьмой – x1x2 x3, т. е. если переменная x принимает

50

значение 1, то пишем x, если принимает значение 0, то пишем x. Легко

заметить, что функция

g(x1, x2, x3) = x1 x2 x3 x1 x2 x3 x1 x2 x3

задается той же таблицей истинности. Это означает, что функция

f (x1, x2, x3) равна g(x1, x2, x3). Но в за•

 

 

 

Таблица 3.1

писи функции g(x1, x2, x3)

использованы

 

 

 

 

x1

x2

x3

f (x1, x2, x3)

только

функции из

класса

K1. Следова•

0

0

0

0

тельно,

f (x1, x2, x3)

может быть полу•

 

 

 

 

0

0

1

1

чена из

функций класса K1

суперпозици•

 

 

 

 

0

1

0

0

ей и переименованием аргументов, т. е.

 

 

 

 

f (x1, x2, x3) [K]. На основании этого за•

0

1

1

0

 

 

 

 

ключаем, что любая булева функция при•

1

0

0

0

надлежит замыканию [K1]. Следователь•

1

0

1

1

но, K1 – полный класс.

 

 

 

 

 

 

1

1

0

1

Полнота классов K2 и K3 получается

 

 

 

 

1

1

1

0

из полноты класса K1 с помощью следую•

 

 

 

 

 

 

 

 

щего утверждения. Если K – полный класс и любая функция класса K

выражается (с помощью суперпозиции и переименования аргументов) через функции класса L, то L – полный класс.

Действительно, если любая булева функция выражается через функ• ции класса K, то она будет выражаться и через функции класса L. Ранее отмечалось, что xy = x y. Это равенство доказывает полноту класса K3. Далее справедливо равенство x y = x y, из которого следует полнота класса K2. Полнота класса K4 следует из полноты класса K2 и равенства x = x 1.

Замечание 3.4. Легко заметить, что есть прямая аналогия между построением функции g(x1, x2, x3) и алгоритмом приведения формулы к

СДНФ, изложенным в примере на с. 34.

Замечание 3.5. Полнота класса K4 означает, в частности, что

каждая булева функция может быть представлена полиномом Жегал• кина. Например, x1 → x2 = x1x2 x1 1, x1 x2 = x1x2 x1 x2.

Рассмотрим два способа представления булевой функции полиномом Жегалкина.

Первый способ основан на доказательстве полноты класса K1 в прим. 3.4 и использованных при доказательстве полноты классов K2 и K4

равенствах:

x = x 1,

x y =

 

 

 

= (x 1)(y 1) 1 = xy x y.

(3.3)

x

y

51

Замечание 3.6. Если xy = 0, то x y = x y. Кроме того, очевидно, что x x = 0. Последнее соображение позволяет „приводить подобные члены.

Пример 3.5. Пусть функция f (x1, x2, x3) задана табл. 3.1. Тогда,

как было установлено в прим. 3.4,

f (x1, x2, x3) = g(x1, x2, x3) = x1 x2 x3 x1 x2 x3 x1 x2 x3.

Продолжим преобразования функции g(x1, x2, x3), используя (3.3). С уче•

том замеч. 3.6 имеем:

g(x1, x2, x3) = x1 x2 x3 x1 x2 x3 x1 x2 x3

=(x1 1)(x2 1)x3 x1(x2 1)x3 x1x2(x3 1)

=x1x2x3 x1x2 x2x3 x3.

Второй способ можно назвать методом неопределенных коэффициен• тов. Изложим этот способ на функции f (x1, x2, x3) из прим. 3.5.

Пример 3.6. Рассмотрим функцию f (x1, x2, x3), заданную табл. 3.1.

Тогда последовательно находим:

1)a0 = f (0, 0, 0) = 0;

2)a0 a1 = f (1, 0, 0) = 0, a1 = 0;

3)a0 a2 = f (0, 1, 0) = 0, a2 = 0;

4)a0 a3 = f (0, 0, 1) = 1, a3 = 1;

5)a0 a1 a2 a12 = f (1, 1, 0) = 1, a12 = 1;

6)a0 a1 a3 a13 = f (1, 0, 1) = 1, a13 = 0;

7)a0 a2 a3 a23 = f (0, 1, 1) = 0, a23 = 1;

8)a0 a1 a2 a3 a12 a13 a23 a123 = f (1, 1, 1) = 0, a123 = 1.

Подставляя найденные коэффициенты в представление (3.2), получаем

f (x1, x2, x3) = x1x2x3 x1x2 x2x3 x3.

Замечание 3.7. Пусть F (X1, . . . , Xn) и G(X1, . . . , Xn) – формулы ло• гики высказываний. Заменим в формулах большие буквы Xi на маленькие

xi (1 6 i 6 n). Получим булевы функции f (x1, . . . , xn) и g(x1, . . . , xn). То• гда формулы F (X1, . . . , Xn) и G(X1, . . . , Xn) равносильны в том и только в том случае, когда функции f (x1, . . . , xn) и g(x1, . . . , xn) равны. Это за•

мечание позволит при доказательстве равенства функций ссылаться на законы логики высказываний.

52

Упражнение 3.5. Доказать, что

1) [K ∩ L] [K] ∩ [L]; 2) [K] [L] [K L].

Упражнение 3.6. Установить, содержит ли замыкание класса {1, xy, x y} функции 0, x.

3.2.Самодвойственные функции

Данный раздел и два последующих посвящены рассмотрению трех конкретных классов функций: самодвойственных, монотонных и линей• ных.

Определение 3.10. Функция g(x1, . . . , xn) называется двойственной к f (x1, . . . , xn), если выполняется равенство

g(x1, . . . , xn) = f (x1, . . . , xn).

Например, xy двойственна x y, и наоборот. Это следует из ра• венств xy = x y и x y = x y, которые мы уже приводили. Функция x → y двойственна функции x y, поскольку

x → y = x y = x y = xy.

Отметим, что первое равенство выполняется на основании закона 20, второе – 19 и третье – 18 и 19.

Двойственной к функции max(x1, x2, . . . , xn) = x1 x2 . . . xn явля•

ется функция

x1 x2 . . . xn = x1x2 . . . xn = min(x1, x2, . . . , xn).

Задача 3.1. Является ли функция f двойственной к функции g:

a) f = x y, g = x ↔ y;

b) f = x → y, g = y → x;

c) f = (x y)z, g = (x y)(z 1);

d) f = x → y, g =

 

 

 

 

xy;

e) f = xy xz yz, g = xy xz yz;

f) f = x ↔ y, g =

 

 

 

 

xy xy.

Ответ: в случаях a, d – f ответ положительный, в остальных слу• чаях – отрицательный.

Определение 3.11. Функция f (x1, . . . , xn) называется самодвойст-

венной, если выполняется равенство

f (x1, . . . , xn) = f (

 

1, . . . ,

 

n).

(3.4)

x

x

53

Другими словами, функция самодвойственна, если она совпадает со своей двойственной. Заметим, что равенство (3.4) для определения самодвой•

ственности равносильно равенству

f (x1, . . . , xn) = f (

 

1, . . . ,

 

n).

(3.5)

x

x

Пример 3.7. Cамодвойственными функциями являются тождественная функция и x, a xy самодвойственной не является, поскольку двой• ственнa дизъюнкции x y.

Упражнение 3.7. Найдите все самодвойственные функции от двух

переменных.

В качестве еще одного примера самодвойственной функции приведем функцию

f (x1, x2, x3) = x1x2 x1x3 x2x3.

Действительно,

f (x1, x2, x3) = x1 x2 x1 x3 x2 x3 = x1 x2 x1 x3 x2 x3

=(x1 x2)(x1 x3)(x2 x3) = x1x1x2 x1x1x3

x1x3x2 x1x3x3 x2x1x2 x2x1x3 x2x3x2 x2x3x3

=x1x2 x1x3 x1x3x2 x1x3 x1x2 x2x1x3 x3x2 x2x3

=x1x2 x1x3 x1x3x2 x2x3

=x1x2 x1x3 x2x3.

Из последних рассуждений видно, что определять самодвойственность булевой функции на основании определения иногда достаточно сложно. Эта задача легко решается с помощью следующей теоремы.

Теорема 3.5. При лексикографическом упорядочивании строк табли•

цы истинности столбец значений самодвойственной функции антисим• метричен относительно середины таблицы.

Доказательство. Возьмем произвольную строку таблицы истинности самодвойственной булевой функции (c1, c2, . . . , cn), где ci B. Обозначим через N (c) номер этой строки, определенный в (3.1). Тогда очевидно, что 0 6 N (c) 6 2n − 1. Рассмотрим соответствующую двойственную строку (c1, c2, . . . , cn). Номер этой строки обозначим через N (a). Нетрудно видеть, что N (a) = 2n −1−N (a). Последнее равенство и доказывает требуемое.

Следствие 3.1. Самодвойственная функция равна 1 на половине на•

боров таблицы истинности.

54

Следствие 3.2. Самодвойственную функцию определяет первая по•

ловина столбца значений таблицы истинности.

Класс всех самодвойственных функций обозначим буквой S. Справед• лива теорема.

Теорема 3.6. S – замкнутый класс.

Доказательство. Как уже отмечалось, S содержит ε(x). Поскольку равенство (3.4) выполняется для всех значений переменных, то класс S – замкнут относительно переименования аргументов.

Пусть функции f (x1, . . . , xk ), g1(x1, . . . , xn), . . . , gk (x1, . . . , xn) принад• лежат S. Тогда, используя равенство (3.5), получаем, что

f (x1, . . . , xk ) = f (x1, . . . , xk ),

g1(x1, . . . , xn) = g1(x1, . . . , xn),

· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

gk (x1, . . . , xn) = gk (x1, . . . , xn).

Тогда, если h(x1, . . . , xn) = f (g1(x1, . . . , xn), . . . , gk (x1, . . . , xn)), то

h(x1, . . . , xn) = f (g1(x1, . . . , xn), . . . , gk (x1, . . . , xn))

=f (g1(x1, . . . , xn), . . . , gk (x1, . . . , xn))

=f (g1(x1, . . . , xn), . . . , gk (x1, . . . , xn))

=h(x1, . . . , xn).

Всилу равенства (3.5), h(x1, . . . , xn) – самодвойственная функция. Следо•

вательно, класс S замкнут относительно суперпозиции.

Упражнение 3.8. Обозначим через Sn множество всех самодвой• ственных булевых функций от n переменных. Доказать, что

|Sn| = 22n−1 .

Следующее утверждение называется леммой о несамодвойственной

функции.

Лемма 3.1. Пусть f (x1, . . . , xn) – несамодвойственная функция. То• гда замыкание класса K = {f (x1, . . . , xn), x} содержит константы 0, 1.

Доказательство. Так как f (x1, . . . , xn) – несамодвойственная функ• ция, то существуют a1, . . . , an B такие, что

f (a1, . . . , an) =6 f (a1, . . . , an).

55

Множество B содержит только два элемента. Поэтому из этого неравенства следует равенство

f (a1, . . . , an) = f (a1, . . . , an).

Для удобства обозначений (не умаляя общности рассуждений) предполо•

жим, что a1 = . . . = ak = 0, ak+1 = . . . = an = 1. Тогда последнее равенство можно записать так:

f (0, . . . , 0, 1, . . . , 1) = f (1, . . . , 1, 0, . . . , 0),

|

 

{z

 

}

|

 

{z

 

}

 

 

k

 

 

k

Рассмотрим функцию g(x) = f (x, . . . , x, x, . . . , x). Заметим, что g(x) при•

 

 

 

|

 

 

{z

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

надлежит [K]. Имеем равенства

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g(0) = f (0, . . . , 0, 0, . . . , 0) = f (0, . . . , 0, 1, . . . , 1) =

|

 

{z

 

}

 

 

 

|

 

{z

 

}

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

= f (1, . . . , 1, 0, . . . , 0) = f (1, . . . , 1, 1, . . . , 1) = g(1).

|

 

{z

 

}

 

 

 

|

 

{z

 

}

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

Следовательно, g(x) – одна из констант, принадлежащая [K]. Поскольку K содержит отрицание, то и другая константа принадлежит [K].

 

 

Пример 3.8. Является ли функция f (x1, x2) = x2(x2 → x1) само-

 

 

 

 

 

двойственной? Для получения ответа на вопрос со•

 

x1

 

x2

f (x1, x2)

 

 

 

 

 

гласно теореме 3.5 составим ее таблицу истинно•

 

0

 

0

0

 

 

сти. Можно видеть, что столбец значений табли•

 

 

 

 

 

 

0

 

1

0

 

 

цы истинности не является антисимметричным

 

 

 

 

 

 

1

 

0

0

 

 

относительно середины: f (x1, x2) 6= f (

 

1,

 

2), на•

 

 

 

 

 

x

x

 

1

 

1

1

 

 

 

 

 

пример при x1 = 0, x2 = 1. Следовательно, функция

 

 

 

 

 

f (x1, x2) самодвойственной не является.

Задача 3.2. Будут ли следующие функции самодвойственными:

a) (x y)(y z); b) (x y)(x z)(y z).

Ответ: a) нет, b) да.

Упражнение 3.9. Докажите, что булева функция четности

pn(x1, x2, . . . , xn) = x1 x2 · · · xn

является самодвойственной тогда и только тогда, когда n нечетно.

56

3.3.Монотонные функции

Введем отношение частичного нестрогого порядка (6) на множестве Bn – булевых векторов длины n.

Определение 3.12. Будем считать, что (a1, . . . , an) 6 (b1, . . . , bn),

если a1 6 b1, . . . , an 6 bn, где a1, . . . , an, b1, . . . , bn B.

Например, (1, 0, 0, 1) 6 (1, 0, 1, 1), (1, 0, 1, 0) 6 (1, 0, 1, 1). В то же время неверно, что (1, 0, 0, 1) 6 (1, 0, 1, 0).

Определение 3.13. Булева функция f (x1, . . . , xn) называется моно•

тонной, если для любых двух векторов a = (a1, . . . , an), b = (b1, . . . , bn) из условия a 6 b следует, что f (a) 6 f (b).

Пример 3.9. Монотонными функциями являются 1, 0, xy, x y. Функции x, x → y, x y немонотонны.

Обратимся к графическому представлению упорядоченных множеств. Упорядоченное множество M , имеющее конечное число элементов удобно представлять с помощью ориентированного графа H(M ), который называ• ют диаграммой Хассе и строят следующим образом. Вершины H(M ) одно• значно соответствуют элементам M . При этом вершину, соответствующую элементу a, называют просто вершиной a. Если элемент b непосредствен• но следует за элементом a (и только в этом случае), вершину b соединяют ребром с вершиной a, при этом ребро ориентируется от b к a.

Определение 3.14. Говорят, что элемент b непосредственно следу• ет за элементом a, если a 6 b, и не существует элемента c M такого, что a 6 c 6 b.

Обычно в диаграммах Хассе большие элементы помещают над мень• шими.

Теорема 3.7. Диаграмма Хассе обладает следующими очевидными

свойствами:

1)cоотношение a 6 b эквивалентно существованию ориетированно• го пути из вершины b в вершину a на диаграмме Хассе;

2)eсли на диаграмме существует ребро e, идущее из вершины b в вершину a, то никакого другого пути из b в a быть не может;

3)диаграмма Хассе не имеет циклов.

Пример 3.10. Докажем монотонность функции

f (x1, x2, x3) = x1 x2x3.

Для решения этой задачи начертим диаграмму Хассе частично упо• рядоченного множества B3 (рис. 3.3).

57

 

 

0

(1, 1, 1)

 

 

 

В вершинах этой диаграм•

 

 

 

 

 

мы проставим значения функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f , a справа от вершин – соот•

 

(1, 1, 0)

 

 

(1, 0, 1)

 

 

(0, 1, 1)

ветствующие векторы. Монотон•

1

1

1

ность функции означает, что ес•

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ли в какой-то вершине диаграм•

 

 

 

 

 

 

 

 

мы функция принимает значение

1

(1, 0, 0)

0

(0, 1, 0)

0

(0, 0, 1) 1, то и всюду выше она принима•

 

 

 

 

 

 

 

 

ет то же значение. Исследуемая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функция f (x1, x2, x3) = x1 x2x3

 

 

0

(0, 0, 0)

 

 

 

монотонной не является, так как

 

 

 

 

 

в вершине (1, 1, 0) она принимает

 

 

 

 

 

 

 

 

 

 

Рис. 3.3

 

 

 

значение 1, а в вершине (1, 1, 1), ко•

торая выше первой, принимает значение 0.

Задача 3.3. Будут ли следующие функции монотонны: a) yx y; b) xy y x; c) x ↔ y;

d) x → (y → x); e) x → (x → y); f) xy xz yz.

Ответ: монотонными являются функции xy y x, x → (y → x), xy xz yz.

Упражнение 3.10. Докажите монотонность функций: max(x1, . . . , xn) и min(x1, . . . , xn) (см. опред. 3.10).

Класс всех монотонных функций обозначим буквой M .

Теорема 3.8. M – замкнутый класс.

Доказательство. Монотонность тождественной функции очевидна. Пусть f (x1, . . . , xn) M и y1, . . . , yn – новые переменные. Возьмем два набо•

ра значений переменных y1, . . . , yn: a = (a1, . . . , an), b = (b1, . . . , bn) таких, что a 6 b. Но эти векторы будут наборами значений переменных x1, . . . , xn,

и поэтому выполняется неравенство f (a) 6 f (b). Это означает, что класс M замкнут относительно переименования аргументов.

Пусть f (x1, . . . , xk ), g1(x1, . . . , xn), . . . , gn(x1, . . . , xn) – монотонные функции и a = (a1, . . . , an), b = (b1, . . . , bn) – два набора значений пере• менных x1, . . . , xn, таких что a 6 b. Рассмотрим суперпозицию

h(x1, . . . , xn) = f (g1(x1, . . . , xn), . . . , gn(x1, . . . , xn)).

Введем обозначения: c1 = g1(a), . . . , ck = gk (a), d1 = g1(b), . . . , dk = gk (b). В силу монотонности функций g1, . . . , gk имеем, что c1 6 d1, . . . , ck 6 dk .

58

Тогда

h(a1, . . . , an) = f (g1(a1, . . . , an), . . . , gk (a1, . . . , an)) = f (c1, . . . , ck ) 6 f (d1, . . . , dk ) = f (g1(b1, . . . , bn), . . . , gk (b1, . . . , bn)) = h(b1, . . . , bn).

(Знак неравенства поставлен в силу монотонности функции f ). Таким об• разом, доказано, что класс M замкнут относительно суперпозиции.

Упражнение 3.11. Докажите, что функция, двойственная моно•

тонной, сама монотонна.

Упражнение 3.12. Докажите, что монотонными являются те и

только те функции, которые или являются константами, или допуска• ют представление в КНФ или ДНФ, не содержащей отрицаний.

Следующее утверждение называется леммой о немонотонной функции.

Лемма 3.2. Пусть f (x1, . . . , xn) – немонотонная функция. Тогда за• мыкание класса K = {f (x1, . . . , xn), 0, 1} содержит x.

Доказательство. Поскольку f (x1, . . . , xn) немонотонна, то существу• ют наборы значений переменных a = (a1, . . . , an), b = (b1, . . . , bn) такие, что a < b, но f (a) > f (b). Неравенство f (a) > f (b) означает, что f (a) = = 1 и f (b) = 0. Пусть наборы a и b отличаются k компонентами (k > 1). Тогда в a на этих местах стоят нули, а в b – единицы. Заменяя указанные компоненты по одной (по старшинству), получаем цепочку наборов:

a < α1 < α2 < . . . < αk−1 < b,

где соседне наборы отличаются только одной компонентой. Очевидно, что найдутся соседние наборы αj , αj+1 такие, что f (αj ) = 1, f (αj+1) = 0.

Пусть они различаются i-й компонентой. Тогда αij = 0, αij+1 = 1, а осталь• ные компоненты одинаковы. Введем функцию

g(x) = f (α1j , α2j , . . . , αij−1, x, αij+1, αij+2, . . . , αnj ).

По условиям леммы g(x) K. Тогда

g(0) = g(αij ) = f (αj ) = 1, g(1) = g(αij+1) = f (αj+1) = 0,

т. е. g(x) = x.

Пример 3.11. Построим функцию отрицания из немонотонной функции и констант. Пусть функция f (x1, x2, x3) задана своей таблицей

59