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

разбор некоторых задач курса

.pdf
Скачиваний:
214
Добавлен:
10.02.2015
Размер:
210.63 Кб
Скачать

Напомним, что через SR(α˜) обозначается сфера радиуса R с центром α˜. По определению это множество всех наборов, удаленных от набора α˜ на одинаковое расстояние R.

˜

Задача 1. В кубе размерности n даны две сферы S1 = SR1 (α˜) и S2 = SR2 (β). Известны их радиусы

˜

R1, R2 и расстояние между центрами d = d(α,˜ β). Найти количество наборов в пересечении сфер.

˜

Решение. Пусть α˜ = (α1, . . . , αn) и β = (β1, . . . , βn). Естественным образом разряды во всех наборах (занумерованные от 1 до n) распадаются на два непересекающихся множества: в первое

множество входят номера тех и только тех разрядов, в которых наборы и ˜ различаются; во

α˜ β

второе номера всех остальных. Обозначим эти множества A и B:

A = {i : αi 6= βi}, B = {i : αi = βi}.

 

˜

˜

Например, если α˜ = (10010), β = (11000), то A = {2, 4}, B = {1, 3, 5}. Если наборы α˜

и β

противоположные, то B = ; если они совпадают, то A = . Из условия задачи следует, что

|A| = d, |B| = n − d.

Рассмотрим произвольный набор γ˜ = (γ1, . . . , γn) из пересечения сфер S1 ∩ S2. Он может

отличаться от наборов , ˜ как в разрядах из множества , так и в разрядах из множества .

α˜ β A B

Пусть среди разрядов множества A есть ровно x штук, а среди разрядов множества B ровно y штук разрядов, в которых различаются наборы α˜ и γ˜. Расстояние d(α,˜ γ˜) между наборами α˜ и γ˜ по определению равно числу пар отличающихся разрядов в этих наборах. Тогда d(α,˜ γ˜) = x + y. С другой стороны, так как γ˜ SR1 (α˜), то d(α,˜ γ˜) = R1.

˜

Теперь выразим расстояние между центром второй сферы β и набором γ˜ через x и y. Наборы

и ˜ различны во всех разрядах множества . Набор отличается от набора в разрядах

α˜ β A γ˜ α˜ x

из A и совпадает с ним в остальных d − x разрядах. Следовательно, набор γ˜ отличается от

˜

ровно в d −x разрядах множества A. Аналогично, раз α˜

˜

набора β

и β совпадают во всех разрядах

множества , то и ˜ различаются ровно в разрядах из этого множества. Всякий разряд набора

B γ˜ β y

γ˜ принадлежит либо множеству A, либо множеству B. Поэтому число пар разрядов, которыми

˜

 

различаются γ˜ и β, равно сумме числа пар разрядов, которыми они различаются на множестве

 

˜

A и числа пар разрядов, которыми они различаются на множестве B. Значит, расстояние d(β, γ˜)

˜

˜

между наборами β

и γ˜ равно (d − x) + y. С другой стороны, так как по условию γ˜ SR2 (β), то

˜

d(β, γ˜) = R2.

Итак, воспользовавшись тем, что набор γ˜ принадлежит и одной, и другой сфере, мы получили

систему линейных уравнений

=

R2

.

(1)

d − x + y

x + y

=

R1

,

 

Иначе говоря, такой набор γ˜ существует в том и только в том случае, когда эта система имеет целочисленные решения x и y, удовлетворяющие к тому же условиям

 

0 6 x 6 d,

0 6 y 6 n − d.

Решая систему (1), находим

 

 

 

 

 

 

x =

d + R1 − R2

,

y = R

1

x =

R1 + R2 − d

.

2

 

 

2

 

Отсюда можно заключить, что если d + R1 + R2 нечетное число1), то сферы не пересекаются, хотя при некоторых таких d, R1, R2 это может противоречить нашей геометрической интуиции.

Найдём теперь в предположении, что x и y ¾подходящие¿ натуральные числа, количество наборов γ˜ в пересечении сфер. Как мы только что установили, по заданному центру, скажем, первой сферы α˜ можно построить любой набор γ˜ из пересечения сфер, инвертировав x + y разрядов α˜: x разрядов из множества A и y разрядов из множества B. Выбрать x разрядов среди

1)Числа R1 − R2 и R1 + R2 имеют одинаковую четность при любых целых R1 и R2.

1

d элементов множества A можно Cdx способами, оставшиеся R1

x разрядов выбираются CR1−x

x

 

d!

 

n−d

способами из множества B (здесь Cd

=

 

 

число сочетаний из d по x). По комбинаторному

x!(d−x)!

 

 

 

 

 

правилу произведения (выбор из множеств A и B происходит независимо) получим Cdx · CnR1dx

способов выбрать набор γ˜.

 

Ответ: Число наборов в пересечении сфер равно CxCR1−x, где x = d+R1−R2 .

d n−d

2

 

˜

Задача 2. В кубе размерности n даны две сферы S1 = SR1 (α˜) и S2 = SR2 (β). Известны их центры

˜

α˜, β и радиусы R1, R2. Определить, сколько наборов лежат в пересечении сфер и имеют вес k.

Решение. Как и в предыдущей задаче, заметим, что n разрядов делятся на непересекающиеся

 

˜

множества в зависимости от α˜ = (α1, . . . , αn) и β = (β1, . . . , βn). Однако теперь нас вдобавок

интересует количество единиц kγ˜k в наборе γ˜ и множеств будет больше:

A11 = {i : αi = 1, βi = 1},

A10 = {i : αi = 1, βi = 0},

A01 = {i : αi = 0, βi = 1},

A00 = {i : αi = 0, βi = 0}.

Пусть nij = |Aij|, i, j {0, 1}. Обозначим также вес набора α˜ через a, тогда a = kα˜k = n11 + n10.

˜

+ n01. Все эти величины однозначно

Расстояние d между центрами сфер равно d = d(α,˜ β) = n10

˜

 

определяются по заданным α˜, β.

 

Пусть γ˜ = (γ1, . . . , γn) произвольный набор из пересечения сфер S1 ∩ S2 и kγ˜k = k. Пусть во множестве A11 ровно x разрядов в которых различаются α˜ и γ˜, во множествах A10 и A01 таких разрядов y и z соответственно. Расстояние между α˜ и γ˜ равно R1, значит во множестве A00 таких разрядов ровно R1 − (x + y + z) штук.

Рассуждая аналогично решению задачи 1, из того, что расстояние между наборами ˜ и

β γ˜

равно R2, получим условие

x + (n10 − y) + (n01 − z) + R1 − (x + y + z) = d + R1 − 2(y + z) = R2.

Вес k набора γ˜ складывается из входящих в множества Aij разрядов:

k = (n11 − x) + (n2 − y) + z + (R1 − x − y − z) = a + R1 − 2(x + y).

Мы использовали все условия задачи (принадлежность пересечению и вес) и получили систему

из двух уравнений с тремя неизвестными x, y, z:

 

 

 

 

 

 

 

 

 

 

 

y + z = d+R1−R2 ,

 

 

 

 

x + y =

a+ 21

.

 

 

 

 

 

 

 

2

k

 

 

(2)

 

 

 

 

 

 

R

 

 

 

Примем, например, x свободной переменной и выразим через неё все остальные:

 

y =

a + R1

− k

x,

z =

d − a − R2 + k

+ x.

(3)

 

2

 

 

 

 

 

 

 

2

 

 

Теперь для всякого x из области определения 0 6 x 6 n11 найдём соответствующие y = y(x) и z = z(x). Количество наборов веса k в пересечении сфер вычисляется по комбинаторным правилам суммы и произведения. Оно равно

|S1 ∩ S2 ∩ {0, 1}kn| =

6X

Cnx11 · Cny10 · Cnz 01 · CnR001−x−y−z.

0

x6n11

Отметим, что мы получили ответ, предположив, что все величины x, y, z целые и не выходят за области определения 0 6 x 6 n11, 0 6 y 6 n10, 0 6 z 6 n01, 0 6 R1 − x − y − z 6 n00. Лишние неравенства при записи ответа можно опустить, если принять соглашение, что Cmn = 0, если n / N

или m / {0, 1, . . . , n}.

2

Ответ: Искомое число наборов равно Px Cxn11 Cyn10 Czn01 CRn001−x−y−z, где y и z вычисляются по формулам (3).

˜

Задача 3. В кубе размерности n даны две сферы S1 = SR1 (α˜) и S2 = SR2 (β). Известны их

˜

центры α˜, β и радиусы R1, R2. Определить число наборов веса k в объединении сфер.

Решение. Мощность объединения нескольких множеств позволяет находить формула включений и исключений, при условии что известны мощности самих множеств и их всевозможных пересечений. Для двух множеств A и B она имеет вид |A B| = |A|+|B|−|A∩B|. В качестве множества A возьмем все наборы веса k из первой сферы, а множества B все наборы веса k из второй:

n

˜

n

. Так как в объединении сфер каждый набор веса k

A = SR1 (α˜) ∩ {0, 1}k

, B = SR2 (β) ∩ {0, 1}k

принадлежит хотя бы одной из сфер, то ответом будет мощность множества A B. Осталось найти |A|, |B| и |A ∩ B|.

Аналогично решению задачи 1 нетрудно установить, что количество наборов веса k в сфере радиуса R с центром веса a равно Cwa · CRn−aw, где w = (a + R − k)/2 (докажите!). Зна-

чит, |A|

(a+R1

−k)/2

(R1+k−a)/2

и |B|

(b+R2−k)/2

(R2+k−b)/2

, где

a =

˜

= Ca

 

Cn−a

 

= Cb

 

Cn−b

 

kα˜k, b = kβk ве-

са центров сфер. Воспользовавшись ответом задачи 2 и её обозначениями, найдём |A ∩ B| =

x Cnx11 Cny10 Cnz 01 CnR001−x−y−z.

 

 

 

 

 

 

 

 

 

Ответ:P

Число наборов в объединении сфер равно

 

 

 

 

 

 

 

 

(a+R1−k)/2

(R1+k−a)/2

(b+R2−k)/2

 

(R2+k−b)/2

 

 

 

 

Ca

 

Cn−a

 

+ Cb

Cn−b

 

 

X

Cxn11 Cyn10 Czn01 CRn001−x−y−z,

где

 

 

06x6n11

 

− k

 

 

d − a − R2 + k

 

y = y(x) =

a + R1

x, z = z(x) =

+ x,

 

2

 

2

 

a и b веса центров сфер.

Задача 4. В кубе размерности n найти число всех наборов чётного веса.

Решение. В кубе всего 2n наборов. Все наборы веса k образуют k-й слой и их всего Ckn. Значит, число всех наборов чётного веса равно сумме всех биномиальных коэффициентов с чётными верхними индексами и нижним индексом n:

 

k=0X

 

 

 

Cnk .

 

 

06k6n

 

 

 

mod 2

 

 

Вспомним, что

k=0X

 

X

X

 

(1 + x)n =

Cnk xk =

Cnk xk +

Cnk xk.

06k6n

06k6n

 

06k6n

 

mod 2

 

k=1 mod 2

Подставив сюда x = 1 и x = −1, с учётом того, что (−1)k = 1 при чётных k, и (−1)k = −1 при нечётных k, получим

k=0P

Cnk +

P

Cnk

= 2n

 

 

 

 

 

 

 

 

C

k

 

 

C

k

= 0.

 

06k6n

 

 

06k6n

 

 

 

 

 

 

 

 

 

 

n

06k6n

 

n

 

06k6n

 

 

 

 

 

 

mod 2

 

 

 

k=1 mod 2

 

 

 

 

k=0P

 

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mod 2

 

 

 

k=1 mod 2

 

 

 

 

 

 

 

 

 

 

Из второго уравнения вытекает, что

XX

Cnk =

Cnk ,

06k6n

06k6n

k=0 mod 2

k=1 mod 2

3

то есть число наборов с чётным весом равно числу наборов с нечётным, а из первого, учитывая это, получаем

k=0X

2

2n

 

 

= 2n−1.

 

Ck

=

 

 

n

2

 

06k6n

 

 

 

 

 

 

mod

Ответ: 2n−1.

Задача 5. В кубе {0, 1}n дан набор α˜. Найти число наборов, сравнимых с ним. Известны размерность n и вес набора a = kα˜k.

Решение.

˜

˜

˜

Если набор β

сравним с набором α˜, то либо β

6 α˜, либо β > α˜. Рассмотрим эти случаи

по отдельности.

1) Пусть ˜ . Тогда из определения сравнимых наборов следует, что если у некоторый

β 6 α˜ α˜

разряд равен нулю, то у набора ˜ он также нулевой. По условию, в наборе всего −k k −

β α˜ n α˜ = n a

нулевых разрядов, остальные разрядов равны единице. Значит, в наборе ˜ нулевых разрядов a β

 

˜

 

 

 

 

 

 

 

 

также n−a. Остальные a разрядов набора β могут быть выбраны произвольно, при этом он будет

 

 

 

 

 

 

˜

˜

 

 

не превышать набор α˜. Таким образом, количество таких наборов β, что

β сравним с набором α˜

˜

 

 

 

 

 

 

a

 

 

и β 6 α˜, равно числу всевозможных двоичных наборов длины a, то есть равно 2 .

 

 

˜

 

 

 

 

 

˜

 

 

 

2) Пусть β > α˜. Тогда если у α˜ некоторый разряд равен единице, то у β он также равен единице.

 

 

 

 

 

 

 

˜

 

 

В наборе α˜ всего a единичных разрядов, поэтому ровно a из n разрядов в наборе β фиксированы

 

 

 

˜

 

 

 

 

 

и также равны единице. Остальные n − a разрядов в β могут быть любыми. Таким образом,

˜

˜

 

α˜ и

˜

 

 

 

количество таких наборов β, что β сравним с набором

β 6 α˜, равно числу всевозможных

двоичных наборов длины n − a, то есть равно 2n−a.

 

n

˜

˜

˜

n

˜

 

˜

˜

 

 

 

Итак, мы показали, что множества {β :

β {0, 1}

 

, β

6 α˜} и {β

: β {0, 1}

 

, β > α˜}

представляют собой соответственно a-мерную и (n − a)-мерную грани. Заметим, что эти грани пересекаются, причём в единственной точке α˜. Тогда число всех сравнимых с α˜ наборов будет равно (формула включений исключений)

˜ ˜

˜ ˜

˜ ˜

˜ ˜

a

+ 2

n−a

− 1.

|{β : β

6 α˜}| + |{β : β

> α˜}| − |{β : β

6 α˜} ∩ {β : β > α˜}| = 2

 

 

Здесь среди прочих сосчитан и набор α˜, сравнимый сам с собой. Число наборов, сравнимых с α˜ и отличных от него, равно 2a + 2n−a − 2. Число наборов, несравнимых с α˜, равно разности числа всех наборов и числа сравнимых (набор может быть либо сравним с α˜, либо несравним с ним), то есть равно 2n − 2a − 2n−a + 1.

Ответ: 2a + 2n−a − 1.

Задача 6. Записать какую-нибудь формулу, реализующую функцию f , не находя вектора её значений, если f = (x1x2 x3)(x2 (x1 | x3)).

Решение. Первый способ. По определению двойственной функции f (x1, x2, . . . , xn) = f(x1, x2, . . . , xn),

поэтому в данном случае

f = (x1x2 x3)(x2 (x1 | x3)) = (x1x2 x3)(x2 (x1 | x3)).

Второй способ. Воспользуемся принципом двойственности, утверждающим, что если формула F , при построении которой используются функции g1, . . . , gm, реализует функцию f, то формула F , которая получается из формулы F заменой каждой функции gi на gi , реализует двойственную к f функцию f . Принцип двойственности вытекает из очевидного тождества

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

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

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

4

Так как 0 = 1, 1 = 0, x = x, x = x, (x y) = x & y, (x & y) = x y, (x y) = x y,

(x y) = x y, (x ↓ y) = x | y, (x | y) = x ↓ y, то двойственная к f = (x1x2 x3)(x2 (x1 | x3))

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

f = ((x1 x2)x3) (x2 (x1 ↓ x3)).

Задача 7. Доказать, что переменная является существенной для булевой функции тогда и только тогда, когда она входит в её полином Жегалкина.

Доказательство. По теореме Жегалкина соответствие между функциями и полиномами взаимно однозначно. Иначе говоря, можно не различать функцию и реализующий её (приведённый) полином. В дальнейшем так и будем делать, если это ясно из контекста.

Необходимость условия очевидна: если переменная не входит в полином, то функция, реализуемая полиномом, от этой переменной не зависит, то есть эта переменая для неё фиктивна.

Достаточность. Пусть переменная xi входит в полином Жегалкина для функции f(x1, . . . , xn). Покажем, что xi существенна для f.

Так как переменная xi есть в полиноме f, то вынесением xi за скобки полином приводится к виду f = xi · g h, где полиномы g и h не зависят от переменной xi, причём g 6= 0. Отметим, что такое представление f однозначно, то есть по xi и f полиномы g и h определяются единственным образом. Так как g 6= 0, то найдётся такой набор α˜ = (α1, . . . , αi−1, αi+1, . . . , αn) значений всех остальных переменных, кроме xi, что g(α˜) = 1. Следовательно, f(α1, . . . , αi−1, xi, αi+1, . . . , αn) = xi · 1 h(α˜) = xi c, где c {0, 1} не зависит от xi, и поэтому

f(α1, . . . , αi−1, 0, αi+1, . . . , αn) 6= f(α1, . . . , αi−1, 1, αi+1, . . . , αn),

то есть переменная xi существенная для f по определению.

Задача 8. Доказать, что всякая линейная функция, не являющаяся константой, равновесна.

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

Возьмем произвольную функцию f = f(x1, . . . , xn), такую, что f L и f 6= const. Так как f не константа, то у неё найдется существенная переменная xi, а так как f ещё и линейна, то её полином Жегалкина имеет вид

f = xi g.

(4)

Здесь g = g(x1, . . . , xi−1, xi+1, . . . , xn) некоторая линейная функция с n − 1 переменными, возможно постоянная.

Рассмотрим множество A0, состоящее из всех двоичных наборов длины n, у которых i-ый разряд равен нулю, и множество A1, состоящее из всех двоичных наборов длины n, у которых i-ый разряд равен единице. Очевидно, что A0 A1 = {0, 1}n и |A0| = |A1| = 2n−1. Заметим, что в силу (4) выполняются равенства

f(α1, . . . , αi−1, 0, αi+1, . . . , αn) = g(α1, . . . , αi−1, αi+1, . . . , αn),

f(α1, . . . , αi−1, 1, αi+1, . . . , αn) = g(α1, . . . , αi−1, αi+1, . . . , αn),

то есть на каждой паре соседних наборов из A0 и A1 функция f принимает противоположные значения. Это означает, что значение 0 на наборах множества A1 функция f принимает столько же раз, сколко раз она принимает значение 1 на наборах множества A0. Иначе говоря, пусть kfkAiколичество наборов из множества Ai, на которых функция f принимает единичное значение, тогда, используя вышесказанное, можно заметить, что

kfk = kfkA0 + kfkA1 = kgk + |A1| − kgk = |A1| = 2n−1.

Утверждение доказано. Отметим, что мы доказали даже несколько более общий факт: равновесной является всякая функция, у которой полином Жегалкина представим в виде x g, где полином g не зависит существенно от переменной x.

5

Задача 9. Доказать, что если f S(n), то kfk = 2n−1, т. е. всякая самодвойственная функция равновесна.

Доказательство. Следует из доказательства задачи 8 и свойства вектора значений самодвойственной функции.

Задача 10. Доказать, что T0 ∩ S = T1 ∩ S = T0 ∩ T1 ∩ S.

˜ ˜

Доказательство. Так как наборы 0 и 1 противоположны, то самодвойственная функция, сохраняющая ноль, сохраняет и единицу (и обратно).

Задача 11. Пусть A множество наборов длины 2n, являющихся векторами значений всевозможных линейных булевых функций от n аргументов. Доказать, что расстояние между двумя различными наборами из множества A не менее 2n−1.

Доказательство. Возьмем два различных набора α˜

˜

и β из множества A. Легко убедиться, что

 

˜

˜

расстояние между ними равно весу набора α˜ β, где набор α˜ β представляет собой поразрядную

сумму разрядов наборов α˜

˜

 

и β по модулю 2. Также нетрудно видеть, что если α˜ вектор значений

˜

 

˜

некоторой функции f, а β

вектор значений некоторой функции g, то α˜ β вектор значений

функции f g. Осталось воспользоваться результатом задачи 8, заметив, что из того, что f, g L и f 6= g следует f g L и f g 6= 0.

Множество A из задачи 11 известно в дискретной математике как код Рида Маллера первого порядка, исправляющий 2n−2 −1 ошибок. Действительно, представим себе, что наборы множества A, называемые кодовыми словами, передаются по некоторому каналу. При передаче возможны ошибки определенного типа: из разрядов кодового слова выбираются несколько (как правило, равновероятно) и заменяются на противоположные. Предположим, канал таков, что в каждом кодовом слове при передаче может возникнуть не более t ошибок. Вопрос: при каких t по принятому искаженному слову можно однозначно восстановить слово, которое передавалось?

 

˜

Пусть передавался набор α˜ A, а принят искажённый набор β. Из того, что произошло не

˜

˜

более t ошибок, следует d(α,˜ β) 6 t, то есть β принадлежит шару радиуса t с центром α˜. Значит,

для восстановления по ˜ достаточно, чтобы все шары радиуса с центрами в кодовых словах

α˜ β t

попарно не пересекались: в этом случае достаточно определить, какому шару принадлежит ˜,

β

ответом будет его центр. Нетрудно убедиться, что если центры двух шаров лежат на расстоянии d друг от друга, то шары одинакового радиуса t не пересекаются тогда и только тогда, когда d 6 2t + 1. В нашем случае d > 2n−1, и из этих неравенств следует t > 2n−2 −1, то есть код исправляет не менее 2n−2 −1 ошибок. При больших n можно исправить ошибки в примерно четверти разрядов всякого кодового слова (и всего слов 2n+1). Это означает, что такой способ кодирования годен к использованию в канале передачи данных с вероятностью ошибки, не превосходящей 14 .

Задача 12. Доказать, что булева функция является линейной и монотонной в том и только в том случае, когда в её полином Жегалкина входит ровно одно слагаемое.

Доказательство. Линейная функция f по определению имеет вид

f(x1, . . . , xn) = a0 a1x1 a2x2 . . . anxn.

Докажем, что f монотонна тогда и только тогда, когда вес набора α˜ = (a0, a1, a2, . . . , an) не превосходит единицы.

Пусть kα˜k 6 1. Тогда либо f ≡ 0, либо f ≡ 1, либо f = xi для некоторого i, 1 6 i 6 n. Во

всех этих случаях функция f монотонна.

Пусть kα˜k > 1. Тогда в АНФ(f) найдутся два одночлена с ненулевыми коэффициентами. Среди этих двух одночленов хотя бы один не является свободным членом, и поэтому f = xi g, где g = g(x1, . . . , xn) некоторая линейная функция, не зависящая от переменной xi, 1 6 i 6 n.

 

 

˜

˜

Так как g 6= 0, то найдётся такой входной набор β = (β1, . . . , βn), что g(β) = 1. Более того, так

как переменная xi фиктивная для функции g, то на каждом из наборов

˜0

= (β1, . . . , βi−1, 0, βi+1, . . . , βn)

˜00

= (β1, . . . , βi−1, 1, βi+1, . . . , βn),

β

и β

6

соседних по переменной i, функция также равна единице. Но, очевидно, что ˜0 ˜0

x g f(β ) = g(β ) = 1 >

˜00 ˜00 , хотя ˜0 ˜00. Значит, функция не монотонна. Утверждение доказано.

0 = f(β ) = 1 g(β ) β 6 β f

Задача 13. Найти число линейных монотонных функций от n переменных.

Решение. По задаче 12 линейная монотонная функция либо константа, либо тождественная. Констант две штуки, тождественных функций n штук, итого существует n + 2 линейных и одновременно монотонных функции.

Ответ: |L ∩ M(n)| = n + 2.

Задача 14. Доказать, что линейная функция самодвойственна тогда и только тогда, когда число входящих в её АНФ одночленов первой степени нечётно.

Доказательство. Рассмотрим произвольную линейную функцию f(x1, . . . , xn) = a0 a1x1 a2x2

. . . anxn. Для двойственной функции имеем:

f (x1, . . . , xn) = a0 a1x1 a2x2 . . . anxn =

= 1 a0 a1(x1 1) a2(x2 1) . . . an(xn 1) =

= (1 a0 a1 a2 . . . an) a1x1 a2x2 . . . anxn.

Следовательно, f = f тогда и только тогда, когда

 

a0 = 1 a0 a1 a2 . . . an,

 

откуда

 

a1 a2 . . . an = 1.

(5)

Значит, функция f самодвойственна тогда и только тогда, когда в наборе её старших коэффициентов a1, a2, . . . , an нечётное число единиц, то есть число одночленов вида xi в её АНФ нечётно. Утверждение доказано.

Задача 15. Найти число линейных самодвойственных функций от n переменных.

Решение. Воспользуемся задачей 14. Из равенства (5) следует, что функция f(x1, . . . , xn) = a0 a1x1 a2x2 . . . anxn самодвойственна тогда и только тогда, когда вес её вектора старших коэффициентов (a1, a2, . . . , an) нечётен. Свободный член a0 при этом может быть любым.

В задаче 4 было показано, что число векторов длины n с нечётным весом совпадает с числом векторов длины n с чётным весом и равно 2n−1. Свободный член a0 выбирается двумя способами (0 или 1) независимо от a1, . . . , an. По теореме Жегалкина различные вектора (a0, a1, a2, . . . , an) задают различные функции, поэтому число линейных самодвойственных функций от n переменных будет равно числу различных двоичных наборов (a0, a1, a2, . . . , an), где вес (a1, a2, . . . , an) нечётен, а это число, в свою очередь, равно 2 · 2n−1 = 2n.

Ответ: |L ∩ S(n)| = 2n.

Задача 14 помогает быстро определять, является линейная функция самодвойственной или нет. Например, функции f(x1, . . . , x10) = x1 x3 x4 x8 x9 и g(x1, . . . , x10) = 1 x1 x5 x10

самодвойственны, а функция h(x1, . . . , x1000) = x1 x3 x5 . . . x997 x999 нет. Установить это по вектору значений было бы весьма непросто.

Задача 16. Доказать, что M T0 T1.

˜

Доказательство. Если монотонная функция f не сохряняет ноль, то f(0) = 1. Значит, в силу

монотонности, для всех ˜. Но всякий двоичный набор сравним с нулевым набором f(α˜) = 1 α˜ > 0

и превосходит его, поэтому f ≡ 1 и, следовательно, f T1. Аналогично можно получить, что f M, f / T1 f T0. Таким образом, единственная монотонная функция, не сохраняющая ноль, это тождественная единица, а единственная монотонная функция, не сохраняющая единицу, это тождественный ноль. Наконец, среди функций из T0 T1 есть немонотонные (такова, например, функция x → y). Поэтому M 6= T0 T1. Утверждение доказано.

7

Задача 17. Доказать, что L T0 T1 S.

Доказательство. Пусть линейная функция

f(x1, . . . , xn) = a0 a1x1 a2x2 . . . anxn

не сохраняет ноль, то есть ˜ . Тогда 0 . Если вдобавок не сохраняет и единицу, то f(0) = 1 a = 1 f

˜

f(1) = a0 a1 a2 . . . an = 1 a1 a2 . . . an = 0,

откуда

a1 a2 . . . an = 1,

то есть в АНФ(f) входит нечётное число линейных одночленов. Тогда f S по задаче 14. Получили, что всякая не сохраняющая ноль и единицу линейная функция самодвойственна. Наконец, во множестве T0 T1 S есть нелинейные функции (и таких большинство), например x y. Что и требовалось доказать.

Напомним, что функция f называется шефферовой во множестве A P2, если [f] = A, то есть если из f операцией суперпозиции можно получить любую функцию из A. Из этого определения и свойства операции замыкания A : [[A]] = [A] сразу следует, что шефферовыми функциями могут обладать только замкнутые классы алгебры логики. Шефферова в P2 функция часто называется просто шефферовой (иначе говоря, функция f шефферова, если она одна составляет полную в P2 систему). Примерами шефферовых функций являются x ↓ y, x | y, xyz.

Задача 18. Доказать, что функция f шефферова тогда и только тогда, когда f / T0 T1 S.

Доказательство. По теореме Поста функция f будет шефферовой тогда и только тогда, когда она не содержится ни в одном из пяти основных замкнутых классов, т. е. когда f / T0 T1 S L M. Однако из задач 16 и 17 мы знаем, что два из этих классов входят в объединение трёх остальных: M T0 T1 и L T0 T1 S. Следовательно, T0 T1 S L M = T0 T1 S, что и доказывает утверждение.

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

Возникает вопрос, нельзя ли ещё уменьшить число членов в объединении T0 T1 S так, чтобы его дополнение до P2 всё ещё оставалось множеством шефферовых функций? Правильный ответ: нельзя. Это следует из того, что никакое из множеств T0, T1, S не содержится целиком в объединении двух остальных. Действительно, среди функций, сохраняющих ноль, есть несамодвойственные функции, не сохраняющие единицу (например, x y); среди функций, сохраняющих единицу, есть несамодвойственные функции, не сохраняющие ноль (например, x y); а среди самодвойственных функций есть функции, не сохраняющие обе константы (например, x).

Задача 19. Найти в P2 число шефферовых функций от n переменных.

Решение. Первый способ. Обозначим sn = |{f P2(n) : [f] = P2}| число шефферовых функций от n переменных. Тогда по теореме Поста, задаче 18 и формуле включений исключений

sn = |P2 \ (T0 T1 S L M)(n)| = |P2 \ (T0 T1 S)(n)| =

=|P2(n)| − |T0 T1 S(n)| =

=22n − (|T0(n)| + |T1(n)| + |S(n)| − |T0 ∩ T1(n)|−

|T0 ∩ S(n)| − |T1 ∩ S(n)| + |T0 ∩ T1 ∩ S(n)|) =

=22n − (|T0(n)| + |T1(n)| + |S(n)| − |T0 ∩ T1(n)| − |T0 ∩ S(n)|) =

=22n − (22n−1 + 22n−1 + 22n−1 − 22n−2 − 22n−1−1) =

=22n−2 − 22n−1−1.

8

Здесь мы воспользовались тождеством |T1 ∩S(n)| = |T0 ∩T1 ∩S(n)|, которое следует из задачи 10, и очевидными равенствами для мощностей множеств T0(n), T1(n), S(n) и их пересечений:

|T0(n)| = 22n−1, так как всякая функция из T0(n) однозначно задаётся двоичным вектором длины 2n, начинающимся с нуля, и каждый такой вектор с 2n − 1 произвольными разрядами (всеми, кроме первого) является вектором значений некоторой функции из T0(n);

|T1(n)| = 22n−1 по аналогичной причине;

|S(n)| = 22n−1 , так как всякая самодвойственная функция однозначно задаётся первой половиной своего вектора значений (вторая половина вектора значений самодвойственной функции получается записыванием инвертированных разрядов первой половины в обратном порядке), а длина половины вектора значений равна 2n/2 = 2n−1;

|T0 ∩ T1(n)| = 22n−2, так как вектор значений всякой функции, сохраняющей обе константы, имеет вид 0 . . . 1 (2n − 2 звёздочек), а число таких векторов равно 22n−2;

|T0 ∩ S(n)| = 22n−1−1, так как сохраняющая константу 0 самодвойственная функция однозначно задаётся всеми разрядами первой половины своего вектора значений, кроме самого первого разряда (который равен 0), а число таких разрядов равно 2n−1 − 1.

Второй способ. Можно завуалировать применение формулы включений и исключений так. По задаче 18 вектор значений шефферовой функции f от n переменных должен выглядеть следующим образом:

 

 

 

 

f = (1a1a2 . . . a2n−1−1a2n−1 . . . a2n−20),

 

 

 

(6)

˜

a2

n

−1

˜

 

 

 

 

 

 

f не была самодвойственной,

где a0 = f(0) = 1,

 

= f(1) = 0; при этом, чтобы функция

 

 

 

 

 

6

2, либо a2

6

3, . . . , либо a2n−1

 

6

. Значит, число шеф-

необходимо, чтобы либо a1 = a2n

 

= a2n

 

 

 

1

= a2n−1

феровых функций будет равно разности числа всех функций с векторами значений вида (6) (оно равно 22n−2) и числа самодвойственных функций с такими векторами. Число самодвойственных

функций вида (6) равно числу различных наборов вида (a1a2 . . . a2n−1−1), длины 2n−1 − 1, то есть равно 22n−1−1. Следовательно, sn = 22n−2 − 22n−1−1.

Ответ: Число различных шефферовых функций от n переменных равно 22n−2 − 22n−1−1.

Напомним пару определений. Множество B, B A P2 называется (функционально) полным во множестве A в том и только в том случае, когда [B] = A. Множество B называется базисом во множестве A, если [B] = A и для всякого собственного подмножества B0 ( B выполнено [B0] 6= A.

Важнейшим вопросом, изучающимся в этом семестре, является следующий: ¾Даны множество булевых функций A P2 и функция f P2. Верно ли, что f [A]? Иными словами, можно ли функцию f получить суперпозицией функций из A?¿. Эта же задача, сформулированная для множеств A и B (пусть B A, верно ли, что [B] = A?) носит название проблемы полноты.

Разберём несколько задач.

9