Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / Фарфоровская Ю. Б., Дмитриева О. М., Рабкин Е. Л., Яновская Н. К. Дискретная математика.pdf
Скачиваний:
224
Добавлен:
17.06.2020
Размер:
1.75 Mб
Скачать

2.7. Суперпозиция функций. Замыкание набора функций. Замкнутые классы функций. Полные наборы. Базисы

Основные понятия. Пусть имеется некоторый набор К (или, как иногда говорят, класс), состоящий из конечного числа булевых функций.

1.Суперпозицией функций из этого набора называются новые функции, полученные с помощью конечного числа применения двух операций:

а) переименование любой переменной, входящей в любую функцию из К (или в любую уже построенную суперпозицию);

б) подстановка любой функции из набора К (или любой построенной ранее суперпозиции) вместо любой переменной в любую функцию из К (или в любую ранее построенную суперпозицию).

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

Например, если дана одна функция х|x (штрих Шефера) то ее суперпозициями, в частности, будут следующие функции x| y, x| (x| y), x| (y| z) и т. д.

2.Замыканием набора функций из К называется множество всех суперпозиций из этого класса.

3.Класс функций К называется замкнутым, если его замыкание совпадает с ним самим.

4.Набор функций называется полным, если его замыкание совпадает со множеством всех логических функций. Иначе говоря, полный набор – это множество таких функций, через которые можно выразить все остальные булевы функции.

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

(Слово «неизбыточный» означает что если какую-то функцию удалить из набора, то этот набор перестанет быть полным).

6) Функция называются шефферовской, если она (одна) является базисом.

Примеры. 1. Набор функций ( , , ), т. е. конъюнкция, дизъюнкция и отрицание являются полным набором (так как их суперпозициями являются ДНФ и КНФ, которыми можно представить любую логическую функцию), но он не является базисом, так как это набор избыточен, поскольку с помощъю правил де Моргана можно удалить конъюнкцию или дизъюнкцию, ибо x y x y , x y x y . Наборы же ( , ) и ( , ), очевидно,

являются базисами.

2. Так как любую функцию можно представить в виде полинома Жегалкина (п. 6), то ясно что функции конъюнкция, сложение по модулю 2 и константы «0» и «1» являются полным набором, но эти четыре функции также не являются базисом, поскольку 1 + 1 = 0, и поэтому константу «0» можно исключить из полного набора (однако для построения полиномов

39

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

3. Докажем, что функция «штрих Шеффера» х|y = xy (т. е. отрицание конъюнкции, или функция «не и») является базисом, и, следовательно, шефферовской функцией. Действительно, x | x = xx x откуда

(x|y)|(x|y)= x | y xy xy .

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

Ясно, что класс, состоящий всего из одной функции, всегда является неизбыточным. Таким образом, штрих Шеффера является базисом, а значит, шефферовской функецией.

4. Аналогично, стрелка Пирса (т. е. отрицание дизъюнкции, «не или»)

 

 

 

 

 

 

 

 

 

 

тоже является

шефферовской. Действительно, x y x y , а потому

 

 

 

 

 

 

 

 

x x x x x ,

откуда (x y) (x y) x y x y x y . Рассуждая как и

выше, убеждаемся, что стрелка Пирса – шефферовская функция.

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

Заметим, что вычислительное устройство чаще всего базируется на полном наборе функций (часто на базисах). Если в основе устройства лежат конъюнкция, дизъюнкция и отрицание, то для этих устройств важна проблема минимизации ДНФ, если в основе устройства лежат другие функции, то полезно уметь алгоритмически минимизировать выражения через эти функции.

Пять наиболее важных классов логических функций.

1. Класс Т0 – это набор всех тех логических функций, которые на нулевом наборе принимают значение 0. Говорят, что класс Т0 – это класс функций, сохраняющих 0: f T0 означает, что f(0, 0, , 0) = 0 (в таблице истинности такой функции первое значение равно нулю).

2. Класс Т1 – это набор всех логических функций которые на единичном наборе принимают значение 1 (это класс функций, сохраняюших единицу): f(1, 1, , 1) = 1 (в таблице истинности такой функции последнее значение равно единице).

40

Заметим, что число функций от п переменных, принадлежащих клас-

сам Т0 и Т1 равно половине числа всех функций, т. е. равно 22n 1, так как у функции первое значение – либо 0, и она T0, либо 1, и тогда она не T0, аналогичные рассуждения верны и для Т1; так же выясняется что одновременно входят и в Т0, и в Т1 четверть всех функций, а не входят ни в тот, ни в другой класс тоже четверть и т. д.

3. Класс L – класс линейных функций т. е. функций, для которых по- ли-ном Жегалкина не содержит конъюнкций. Иными словами, функция f(x1, x2,, xп) является линейной, если ее полином Жегалкина имеет вид:

f(x1, x2,,xп) = 0 + 1x1 + 2x2 +…+ пxп.

Заметим, что число линейных функций от п переменных равно 2п+1, так как каждый из (п + 1)-го коэффициентов линейной функции может принимать одно из 2 значений.

Лемма (необходимый признак линейности функции). В таблице истин-

ности непостоянной линейной функции содержится одинаковое число нулей и единиц.

Доказательство по индукции по числу переменных. База индукции:

для непостоянных линейных функций от одной переменной х и x = х + 1 это очевидно. Индукционный переход: если для f(x1, x2,, xп) = x1+ x2+…+ xп утверждение уже доказано, то оно верно и для

F(x1, x2,, xп, xn+1) = x1 + x2 +…+ xп + xn+1.

Действительно, добавление новой переменной удваивает таблицу истинности; в той части таблицы, где новая переменная равна нулю (т. е. в которой к сумме переменных добавляется 0), число нулей и единиц как было, так и осталось одинаковым; в той части таблицы, где хп+1 = 1, нули становятся единицами, а единицы нулями, но так как их было одинаковое количество, то такое же соотношение и осталось. Если в линейной функции есть слагаемые с переменными, перед которыми стоит коэффициент 0, то такие переменные являются фиктивными и не влияют на соотношение нулей и единиц в таблице истинности. Индукционный переход совершен, и лемма доказана.

Следствие (достаточный признак нелинейности функции). Если в таб-

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

Замечания: 1) разумеется, нелинейная функция может иметь в таблице истинности одинаковое число нулей и единиц; 2) в таблице истинности непостоянной линейной функции от п переменных содержится по 2п нулей и единиц.

41

4. Класс М – класс монотонных функций. Опишем класс этих функций более подробно. Пусть имеются 2 набора из п переменных:

1 = (х1, х2,, хп) и 2 = (y1, y2,, yп).

Будем говорить, что набор 1 предшествует (или меньше) набора 2 (и будем записывать это так: 1 2), если для всех i = 1, 2, , n выполняются неравенства хi yi. Если же среди указанных неравенств есть неравенства противоположного смысла (т. е. если при некотором i xi <yi, а при некотором j xj > yj), то такие наборы называются несравнимыми. Например, при п = 2 наборы (0, 1) и (1, 0) не сравнимы между собой. Функция от п переменных называется монотонной, если для любых двух сравнимых наборов на меньшем наборе она принимает меньшее или равное значение (понятно, что несравнимые наборы – это те, в которых есть некоторые координаты типа (0, 1) в одном наборе и (1, 0) в другом на тех же местах. Заметим также, что в дискретной математике монотонные функции это только как бы « монотонно возрастающие функции», «монотонно убывающие» функций здесь не рассматриваются). Важно помнить, что набор (0, 0, , 0) сравним с любым другим набором той же длины и предшествует ему, а набор (1, 1, , 1) тоже сравним с любым другим набором и следует за ним. Поэтому если в верхней строчке таблицы истинности стоит значение функции, равное 1, или в последней строчке стоит значение функции, равное 0, то такая функция заведомо не монотонна. Так как при стандартной записи таблицы истинности для любых двух сравнимых наборов значений аргументов предшествующий набор расположен выше последующего, то если хотя бы для одной пары сравнимых наборов значений аргументов соответствующие значения функции таковы, что ноль расположен ниже единицы, то такая функция также заведомо не монотонна. Например, в нижеследующей таблице функции f1, f2 являются монотонными функциями, а функции f3, f4 нет:

x y

f1

f2

f3

f4

0 0

0

0

0

1

0 1

1

0

1

0

1 0

0

1

1

0

1 1

1

1

0

1

Легко проверить также, что функция (00010101) является монотонной. Очевидно также, что если в таблице истинности (при естественном порядке набора переменных) вверху стоят нули, а затем единицы, то эта функция точно является монотонной.

5. Класс S – класс самодвойственных функций. Функция п переменных f(x1, x2,…, xп) называется самодвойственной, если для любых наборов

42

значений аргументов выполняется равенство: f (x1 , x2 ,..., xn ) f (x1 , x2 ,..., xn ) , т. е. если на противоположных наборах значений аргументов она принимает противоположные значения. Например, функции f1, f2 являются самодвойственными, а функции f3, f4 – не являются.

Лемма. В таблице истинности противоположные наборы значений аргументов расположены симметрично относительно середины таблицы.

Доказательство. Так как наборы значений аргументов в таблице истинности являются наборами двоичных цифр чисел 0, 1, 2,, 2п 1, то, если в строке с номером k расположен набор k – 1 = (x1, x2,…, xп) в симмет-

ричной относительно середины строке, т. е. в строке с номером 2п – k,

расположен набор 2п – k = (2п 1) (k – 1) = (1, 1, , 1) (x1, x2,…, xп) =

= (1 – х1, 1 – х2, , 1 – хп) = ( x1 , x2 ,..., xn ), что и требовалось доказать. Следствия: 1) для выяснения, входит ли данная функция в S, надо

сравнить все пары значений функции, расположенных симметрично относительно середины таблицы. Если значения функции во всех парах противоположны (т. е. при сложении в сумме дают единицу), то рассматриваемая функция – самодвойственная; 2) таким образом, чтобы построить самодвойственную функцию, мы можем первую половину ее значений выбрать произвольно, а вторая определяется однозначно условием симметрии. Поэтому всех самодвойственных функций от п переменных существу-

ет столько же, сколько всех функций от (п – 1) переменных, т. е. 22n 1 . Утверждения: 1) каждый из классов функций Т0, Т1, L, M, S замкнут. Это утверждение следует непосредственно из определения самих этих

классов, а также из определения замкнутости (например, суперпозиция функции, сохраняющей 0, с функцией, сохраняющей 0, является тоже функцией, сохраняющей 0; суперпозиция линейной функции с линейной функцией является тоже линейной функцией, и т. д.); 2) каждый из классов функций Т0, Т1, L, M, S не является полным. Действительно, замыкание каждого из этих классов совпадает с ним самим, а не с множеством всех логических функций, покольку существуют функции, не входящие в эти классы (существуют функции, не сохраняющие ноль или единицу, нелинейные, немонотонные, несамодвойственные).

Теорема Поста. Для того чтобы некоторый набор функций К был полным необходимо и достаточно чтобы в него входили функции не принадлежащие каждому из классов T0, T1, L, M, S.

Заметим, что необходимость этого утверждения очевидна, так как если бы все функции из набора К входили в один из перечисленных классов, то и все суперпозиции, а значит, и замыкание набора входило бы в этот класс, и класс К не мог быть полным.

Достаточность этого утверждения доказывается довольно сложно, и мы не будем его здесь приводить.

43

Из этой теоремы следует довольно простой способ выяснения полноты некоторого набора функций. Для каждой из этих функций выясняется принадлежность ее к перечисленным выше классам. Результаты заносятся в так называемую таблицу Поста, которая имеет вид (в нашем примере эта таблица составлена для четырех функций, причем знаком «+» мы отмечаем принадлежность функции соответствующему классу, знак «–» означает, что функция в него не входит):

f

T0

T1

L

M

S

f1

+

+

f2

+

+

f3

+

f4

+

+

+

Замечание. Нелинейность функций f2, f3, f4 очевидна из того, что их таблицы истинности содержат разное число 0 и 1. Полином Жегалкина можно, разумеется, найти методом бабочки.

Всоответствии с теоремой Поста набор функций будет полным тогда

итолько тогда, когда в каждом столбце таблицы Поста имеется хотя бы один минус. Таким образом, из приведенной таблицы следует, что данные четыре функции образуют полный набор, но эти функции не являются ба-

зисом. Из этих функций можно образовать 2 базиса: {f3, f1} и {f3, f2}. Полными наборами будут любые наборы содержащие какой-либо базис.

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

Замечание. Находить базисы из данного набора функций можно чисто вычислительно по таблице Поста, а именно: составим КНФ из пяти простых дизъюнкций

F( f1, f2 , , fm )

( fk

fk

2

...)( fi

fi

...)( f j

f j

...)( fr

fr

...)( fs fs

...),

1

 

1

2

1

2

1

2

1

2

где в i-й простой дизъюнкции (i = 1, 2, 3, 4, 5) записаны те функции, против которых стоит знак « – » в таблице Поста в столбце c номером i. Очевидно, что если в этой КНФ раскрыть скобки и перейти к ДНФ, то в каждой из получившихся простых конъюнкций окажутся записанными все фунции некоторого базиса, причем в этой ДНФ окажутся записанными все базисы из данного набора функций. Например, для приведенной выше таблицы Поста

F f3( f1 f2 )( f2 f3 f4 )( f1 f2 f3)( f1 f3 f4 )( f1 f2 ) f3 f1 f3 f2 f3

получили те же базисы, что и раньше.

44