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

3. Барашев В.П., Унучек С.А. Дискретная математика

.pdf
Скачиваний:
23
Добавлен:
23.06.2023
Размер:
2.32 Mб
Скачать

Это означает, что существует хотя бы один набор αe = (α1, . . . , αn) та-

кой, что f(α1, . . . , αn) ≠ f(α1, . . . , αn) f(α1, . . . , αn) = f(α1, . . . , αn).

В наборе αe = (α1, . . . , αn), αi {0, 1} заменим все αi = 1 на x1 = x, а все αi = 0 - на x0 = x.

Полученная функция одной переменной φ(x) = f(x 1 , . . . , x n ) является константой.

Проверим это. Так как x = x α 1, то

{0 = 0 α 1 = α 1 = α 1 = 1 α 1 = α 0 = α

φ(0) = f(0 1 , . . . , 0 n ) = f(α1, . . . , αn) = f(α1, . . . , αn) =

= f(1 1 , . . . , 1 n ) = φ(1).

Так как φ(0) = φ(1), то φ(x) ≡ const.

Пример 7.8. Получить из функций

а) fe1 = (0011 0111); б) fe2 = (0110 0110)

константу каким-либо способом .

Решение.

а) Несамодвойственность функции fe1 = (0011 0111) установлена в примере 7.6, п. а) .

Найдем хотя бы одну пару противоположных наборов, на которой нарушается самодвойственность. Так как самодвойственные функции расположены симметрично относительно середины таблицы, просматриваем значения функции, двигаясь от краев таблицы к её середине (либо наоборот), пока не найдем пару одинаковых значений функции (таким образом можно устанавливать самодвойственность функций - см. алгоритм 3).

x1

x2

x3

 

f1

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

 

0

 

 

 

 

 

 

 

 

 

 

 

0

0

1

 

0

 

 

 

 

 

 

 

 

 

 

 

0

1

0

 

1

 

 

 

 

 

 

 

 

 

 

 

0

1

1

 

1

 

 

 

 

 

 

 

 

@

 

 

 

 

 

 

 

 

 

 

1

0

0

 

0

 

 

1

0

1

 

1

 

 

 

 

 

1

1

0

 

1

 

 

 

 

 

1

1

1

 

1

 

 

 

 

 

 

 

 

 

 

 

121

φ(x) = f2(x, x, x) 0, так как

Такой парой наборов являются наборы (010) и (101): f1(0, 1, 0) = f1(1, 0, 1) = 1. Значение функции на этих наборах равно 1, поэтому по лемме S мы можем получить только константу 1.

Из пары противоположных наборов αe1 = (010) и αe2 = (101) выбираем тот, в котором количество единиц больше, то есть набор αe2 = (101). Все единицы в этом наборе заменяем на функцию x, все нули - на x. Получаем набор γ = (x, x, x).

Найденная функция одной переменной - искомая функция "тождественная единица": φ(x) = f1(x, x, x) 1. Докажем это.

Так как φ(0) = f1(0, 0, 0) = f1(0, 1, 0) = 1 , то таблица истинности

φ(1) = f1(1, 1, 1) = f1(1, 0, 1) = 1

x φ(x)

0 1

полученной функции φ(x) совпадает с таблицей

1 1

истинности функции f(x) 1, то есть φ(x) 1.

б) fe2 = (0110 0110) / S - см. пример 7.7, п. а) .

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

fe2 = (0110 0110).

@

Самодвойственность нарушается на паре крайних наборов (000) и (111), так как f2(0, 0, 0) = f2(1, 1, 1) = 0.

Получим функцию "тождественный ноль"на наборе, состоящем из большего количества единиц, то есть на наборе αe2 = (111). Опять заменим все единицы на x, все нули - на x, получим набор γ = (x, x, x).

φ(0) = f2(0, 0, 0) = 0 . φ(1) = f2(1, 1, 1) = 0

Замечание 7.7. Самодвойственность функции f2 нарушается на всех парах противоположных наборов.

Пример 7.9. Выразить из функции fe = (1100 1101 0011 1101) константу всеми возможными способами.

Решение.

122

Проверим, что f / S, применяя второй алгоритм определения самодвойственности функции:

(1 1 0 0 1 1 0 1 | 0 0 1 1 1 1 0 1)

←−−−−−−−−−−

(1 0 1 1 1 1 0 0) (1 0 1 1 1 1 0 0) (0 1 0 0 0 0 1 1)

(1 1 0 0 1 1 0 1) ̸≡(0 1 0 0 0 0 1 1) f / S.

Самодвойственность нарушена, можно применять лемму S. Для удобства изображения отметим на рисунке только те наборы, на которых нарушается самодвойственность.

fe= (1100 1101 0011 1101)

@ @@@

Так как по условию задачи нужно выразить константу всеми возможными способами, то берем все 8 наборов, на которых нарушается самодвойственность:

f(0000) = f(1111) = 1 f(0100) = f(1011) = 1 f(0101) = f(1010) = 1 f(0110) = f(1001) = 0

α1 = (0000)

γ1 = (

 

 

 

 

 

 

 

 

φ1

(x) = f(

 

 

 

 

 

 

 

 

 

1

x,

x,

x,

x

)

x, x, x, x)

α2 = (1111)

γ2 = (x, x, x, x)

φ2

(x) = f(x, x, x, x) 1

α

 

γ

 

 

 

 

 

)

φ

 

x

 

f

 

 

 

 

 

 

) 1

= (0100)

x, x, x, x

3

) =

x, x, x, x

e3

e3

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

α

 

γ x,

 

 

)

φ

 

x

 

f x,

 

 

) 1

= (1011)

x, x, x

4

) =

x, x, x

e4

e4

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

α

 

γ

 

 

 

 

)

φ

 

x

 

f

 

 

 

 

) 1

= (0101)

x, x, x, x

5

) =

x, x, x, x

e5

e5

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

α

 

γ x,

 

 

 

)

φ

 

x

 

f x,

 

 

 

) 1

= (1010)

x, x, x

2

) =

x, x, x

e6

e6

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

e

 

e

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α

= (0110)

γ

x, x, x, x

φ

7

x

) =

f

x, x, x, x

) 0

e7

e7

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

e

 

e

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α

= (1001)

γ x,

x, x, x

φ

8

x

) =

f x,

x, x, x

)

0

e8

e8

= (

 

 

 

 

 

 

 

 

(

(

 

 

 

 

 

 

 

Мы получили 8 различных способов выражения константы из несамодвойственной функции.

123

7.4Класс M монотонных функций

Определение 7.7. Для наборов α = (α1, . . . , αn) и β

= (β1, . . . , βn)

 

 

 

 

e

предшествует

выполнено отношение предшествования (набор e

 

e

 

α

 

 

неравенства

 

набору

β

), если выполнены

 

 

 

e

 

 

 

 

 

α1 6 β1

 

 

 

 

α2 6 β2

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αn 6 βn

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция предшествования обозначается следующим образом:

e 4 e

α β.

 

e

 

 

 

 

= (1010111)

Например, α = (1010001), e

 

 

1 6 1

 

β

.

 

 

 

 

 

 

0 6 0

 

 

 

 

1 6 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

6

1

e

e

 

Так как

 

 

6

0

4 β.

 

 

 

 

 

 

 

 

 

 

1

6

1

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Замечание 7.8. Очевидно, что если

e

4 e

e 4

e

то

e

4

e

α

γ,

α

γ.

 

 

β,

β

 

 

Замечание 7.9. Не любые пары наборов находятся в отношении предшествования.

Например, α = (010), β = (101).

 

 

e

4

e

 

 

 

4

 

 

(так как

Не выполнено ни

отношение предшествования

α

β

e

 

e

 

 

 

 

 

e

 

(так как β1

= 1 > 0 = α1).

α2 = 1 > 0 = βe2), ни отношение β

 

α

Замечание 7.10. Следование в таблице истинности является необходимым, но не достаточным условием предшествования наборов.

Подтверждением этому является пример из замечания 7.9. Набор αe

e e e

расположен в таблице истинности раньше набора β, но α β.

124

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

e

 

6

 

 

e

e

4

e

любых наборов α = (α1

, . . . , αn)

и β = (β1

, . . . , βn) таких, что α

β

 

e

 

e(

e

 

 

 

 

выполнено неравенство f(α)

 

)

.

 

 

 

 

 

 

f

 

β

 

 

 

Замечание 7.11. Очевидно, что функции одной переменной 0, 1, x являются монотонными, а f(x) = x - немонотонная функция, так как

(0) 4 (1), но f(0) = 1 > 0 = f(1).

Множество всех монотонных функций образует класс М.

7.4.1Алгоритм 1 определения монотонности булевой функции

1.Находим носитель функции Nf = e Bn | f(σe) = 1}.

2.Для каждого набора σ из носителя находим соответствующий ему класс монотонности, в который помещаем все наборы длины n, которым предшествует набор σ :

σNf 7→M = e Bn | σe 4 αe}.

3.Проверяем, является ли класс монотонности M подмножеством носителя. Если да, алгоритм продолжаем (переход к пункту 2).

4.Если для всех классов M выполнено условие M Nf , то функция f(xe) монотонна (f(xe) M).

Как только встречается набор αe такой, что σe 4 α,e но f(αe) / Nf , алгоритм прекращает свою работу. Функция f(xe) немонотонна, так как не выполняется определение монотонной функции:

σe 4 α,e

но

f(σe) = 1 > 0 = f(αe) .

| {z } | {z }

т.к.e Nf т.к.e=Nf

Пример 7.10. Являются ли функции

125

а) fe1 = (0011 0111)

б) fe2 = (1010 1010)

в) fe3 = (0101 1011)

монотонными?

Решение.

а) fe1 = (0011 0111)

1. Выпишем наборы, на которых значение функции равно 1:

Nf1 = {(010), (011), (101), (110), (111)}.

2. Рассмотрим набор σe1 = (010) Nf1 .

σe1 7→M 1 = {(010), (011), (110), (111)}.

В класс M 1 поместим все наборы, которым предшествует набор

e

= (010),

 

1e

3

,

 

4

 

 

 

 

0

 

α1

σ

 

то есть все наборы

α

для

которых выполняются

 

1

 

 

B

 

e

1

2

3

1

6

α2

 

 

 

e

= (010)

 

 

 

 

отношения предшествования σ

 

 

α = (α , α , α ).

 

 

Это значит, что должны выполняться неравенства

 

0 6 α3

 

 

 

6 .

Очевидно, что неравенства будут верны для

1

{0, 1}

 

 

α2

 

 

α

 

1 .

 

 

 

 

 

 

 

 

 

 

 

α3

{0,}1

}

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

 

 

Все возможные наборы α,e которые удовлетворяют системе, перечислены в классе M 1 .

3.Так как все наборы из класса M 1 принадлежат носителю, продолжаем работу алгоритма.

4.Возьмем следующий набор носителя σe2 = (011).

σe2 7→M 2 = {(011), (111)}.

Аналогично,

 

 

 

 

 

 

e

 

e

 

 

0 6 β1

 

β1 {0, 1}

σ2

= (011) 4

β = (β1, β2, β3)

 

 

1 6 β2

 

β2 = 1

 

 

 

 

1 6 β3

 

β3 = 1

126

5. M 2 Nf1 , значит, берем следующий набор носителя σe3 = (101). σe3 7→M 3 = {(101), (111)} Nf1 .

6. Аналогично σe4 = (110);

σe4 7→M 4 = {(110), (111)} Nf1 .

7. Последний набор носителя σe5 = (111).

σe5 7→M 5 = {(111)} Nf1 .

8.Так как все классы монотонности M Nf1 , то f1(xe) M (функция f1 монотонна).

б) f

= (1010 1010)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

e2

 

 

 

 

 

Nf2

=

{

(000), (010), (100), (110) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

2. Возьмем

набор

σ

 

=

(000)

 

 

N

 

и

найдем

все наборы

 

 

 

1

 

2

 

3

 

1

 

 

 

 

 

 

f2

 

 

 

 

 

 

 

α = (α

, α

, α

), которым предшествует набор σ :

 

 

 

 

 

 

 

 

 

 

4

 

 

e

 

 

 

 

 

 

 

0

6

α1

1

 

α1

0, 1

 

 

σ

1

 

 

 

 

 

 

 

 

 

 

 

 

0

 

e

α2 {0, 1}

 

 

 

 

 

 

 

e

 

1

2

3

 

1

 

6 α2

 

 

 

e

= (000)

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

e

 

α = (α , α , α )

 

 

0 6 α3

 

α3

{0, 1}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{ }

 

 

то есть в класс монотонности M

 

 

попадают все возможные дво-

 

ичные наборы длины 3:

 

 

 

 

 

 

 

 

 

 

 

 

 

M 1 = B3 = {(000), (001), (010), (011), (100), (101), (110), (111)}.

3.Набор αe1 = (001) M 1 , но αe1 = (001) / Nf2 , значит, функция f2 немонотонна, поскольку σe1 = (000) 4 αe1 = (001),

при этом f2(000) = 1 > 0 = f2(001).

в) fe2 = (0101 1011)

1. Nf3 = {(001), (011), (100), (110), (111)}.

2.σe1 = (001) 7→M 1 = {(001), (011), (101), (111)}.

3.

e

 

 

 

 

 

 

 

1

 

4

1

но

σ1

= (001)

 

Nf3

 

 

 

 

f3(001) = 1,

 

α1

= (101) /

Nf3

 

f3(101)

= 0, определение монотон-

 

 

 

 

 

 

 

 

e

 

e

= (101),

 

 

ной функции не выполнено: σ

 

= (001)

α

 

 

но

f

(001) > f

(101)

 

f

3

/ M.

 

 

 

 

 

e

3

 

3

 

 

 

 

 

 

 

 

 

127

Замечание 7.12. Количество наборов в классе монотонности M равно 2k, где k - количество нулей в наборе σ.

Замечание 7.13. Классу монотонности, соответствующему набору из всех нулей, принадлежат все двоичные наборы σ Bn, то есть σe = (0, 0, . . . , 0) 7→M = Bn (так как набор σe = (0, 0, . . . , 0) предшествует всем булевым наборам длины n).

Вывод 1: Если f(0, 0, . . . , 0) = 1 и в векторе значений функции есть хоть один ноль, то функция f(xe) немонотонна.

Монотонность нарушается, по крайней мере, на паре наборов σe = (0, 0, . . . , 0) и наборе αe таком, что f(αe) = 0.

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

Вывод 2: Если f(1, 1, . . . , 1) = 0 и в векторе значений функции есть хоть одна единица, то функция f(xe) немонотонна.

Монотонность нарушается, по крайней мере, на паре наборов σe = (1, 1, . . . , 1) и наборе αe таком, что f(αe) = 1.

7.4.2Алгоритм 2 определения монотонности булевой функции

1.Делим вектор значений функции f(xe) = (α0α1 . . . α2n1) на две

равные части. Получаем два набора αe0 = (α0α1 . . . α2n−11) и

αe1 = (α2n−1 α2n−1+1 . . . α2n1).

2.Если отношение предшествования αe0 4 αe1 для полученных векторов αe0 и αe1 не выполнено, то функция не является монотонной.

3.В противном случае каждый из векторов αei0 , i0 {0, 1} делим на две равные части; получаем наборы αei0i1 , i0 {0, 1}, i1 {0, 1}, длина которых равна половине длины наборов αei0 , и проверяем, выполнено ли отношение предшествования у полученных пар векторов αei00 4 αei01; i0 {0, 1}.

Если не выполнено хотя бы одно из отношений αei00 4 αei01, то функция не принадлежит классу монотонных функций.

128

4. Иначе опять делим двоичные векторы пополам и

так да-

лее. Алгоритм прекращает свою работу в двух

случаях:

либо для полученных наборов не выполнено отношение

предшествования

(f(x)

/ M), либо длина всех

векторов

e

 

 

 

 

 

 

= 0, . . . , n − 1 равна 1. Если отношение

αi0i1:::in−1 , ik {0, 1}, k

предшествования

выполняется для всех пар наборов

(включая

e

 

 

 

 

наборы единичной длины), функция монотонна.

Пример 7.11. Исследовать функции из примера 7.10 на монотонность

Решение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а)

f1 = (0011 0111)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Делим вектор значений функции пополам:

 

 

 

 

 

 

 

 

 

 

 

α0 = (0011), α1 = (0111).

 

 

 

 

2. Так как

(0011)

4

(0111) (покоординатно выполнено неравенство

 

 

e

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

αi0 6 αi1 ), то делим наборы α0 и α1 пополам.

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

= (00)

 

 

 

 

 

 

 

 

3.

 

 

α0 = (0011)

 

α

 

 

;

(00) 4 (11)

 

 

 

 

e

00

e

 

 

 

 

 

 

 

e

 

 

 

 

7→{ α01 = (11)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

= (01)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α10

 

;

(01) 4 (11)

 

 

 

 

α1 = (0111)

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7→{ α11 = (11)

 

 

 

 

 

 

 

 

 

Так как

для обеих пар векторов α

i0i1

,

i

0

{

0, 1

}

, i

1 {

0, 1 отно-

 

e

 

 

 

 

 

e

 

 

 

 

 

 

}

 

шение предшествования выполняется, делим наборы длины 2 еще

 

раз пополам.

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

4. Получаем 8 наборов длины 1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α00 = (00) 7→{

e

 

=

(0)

 

 

 

 

 

 

 

 

 

 

 

 

α000

;

 

(0) 4 (0)

 

 

 

 

 

α001 =

(0)

 

 

 

 

 

 

e

 

 

 

 

 

e

 

=

(1)

 

 

 

 

 

 

 

 

 

 

 

 

α01

= (11)

 

 

e

 

 

(1)

;

 

(1) 4 (1)

 

 

 

 

 

e

 

 

 

7→{ α011 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

=

(0)

 

 

 

 

 

 

 

 

 

 

 

 

α10

= (01)

 

 

e

 

 

(1)

;

 

(0) 4 (1)

 

 

 

 

 

e

 

 

 

7→{ α101 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

=

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α110

 

 

 

(1) 4 (1)

 

 

 

 

 

e

= (11)

 

 

e

 

 

 

 

;

 

 

 

 

 

 

α11

7→{

e

 

 

(1)

 

 

 

 

 

 

 

 

 

 

α111 =

 

 

 

 

 

 

 

 

 

129

 

Так

 

как

 

 

для

всех

 

 

 

пар

векторов

 

e

 

 

 

 

 

 

 

1

{0, 1} отношение пред-

 

αi0i1i2 ,

i0 {0, 1}, i1 {0, 1}, i2

 

шествования выполнено, функция f

монотонна.

 

 

f

 

1010)

 

 

 

e

 

 

 

 

 

 

б)

1. e2 = (1010 α0 = (1010), α1 = (1010);

 

(1010) 4 (1010)

 

 

 

 

 

 

 

 

e

= (10)

 

 

 

 

 

 

 

 

α

 

 

 

α00

 

 

 

 

 

 

2.

 

e0

= (1010)

e

 

 

 

;

(10) 4 (10)

 

 

 

 

e

 

 

 

7→{ α01 = (10)

 

 

 

 

 

 

 

 

 

 

 

e

= (10)

 

 

 

 

 

 

 

 

 

 

 

α10

;

(10) 4 (10)

 

 

 

 

α1 = (1010)

e

 

 

 

 

 

 

 

e

 

 

 

7→{ α11 = (10)

 

 

 

 

 

 

 

 

 

 

 

α000 = (1)

 

 

 

 

 

 

 

3.

 

e

 

 

 

e

 

 

;

 

(1)

̸4

(0)

 

 

 

α00 = (10)

 

 

 

 

 

 

 

 

 

 

 

7→{ α001 = (0)

 

 

 

 

 

 

Так как отношение

предшествования не выполнено, алгоритм пре-

 

 

 

e

 

 

 

 

 

 

 

 

 

кращает работу; функция fe2 немонотонна.

 

 

 

в)

f3 = (0101 1011)

 

 

e

 

(0101) 4 (1011)

 

 

e

 

α0 = (0101), α1 = (1011);

 

 

 

 

 

 

 

 

 

 

 

 

 

̸

 

 

 

Так как

отношение предшествования не выполнено во второй коорди-

 

e

 

 

 

e

 

 

 

 

 

 

 

 

нате, алгоритм прекращает работу; fe3 / M.

Теорема 7.6. Класс монотонных функций замкнут:

[M] = M.

Доказательство. Для доказательства замкнутости класса М рассмотрим 2 случая (см. замечание 7.3).

1.f(x) = x M (см. замечание 7.11).

2.Любая суперпозиция F = f(f1, . . . , fm) монотонных функций f, f1, . . . , fm также является монотонной функцией. Докажем,

что, из f, f1, . . . , fm M F = f(f1, . . . , fm) M.

По определению монотонной функции

f1, . . . , fm M

e

 

 

e

 

e

 

 

e

β

β

 

f β , . . . f

f β

.

 

α

f α

α

α, e :

 

4 e

1

( ) 6

1(e)

m( ) 6

m(e)

 

130