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

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

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

=. Например, функции f1, f2 - являются самодвойственными, а функции f3, f4 – не являются.Нетрудно устанавливается следующий факт.

Теорема. Классы функций Т0, Т1, L, M, S замкнуты.

Это утверждение следует непосредственно из определения самих этих классов, а также из определения замкнутости.

В теории булевых функций очень большое значение имеет следующая теорема Поста.

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

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

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

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

втак называемую таблицу Поста (в нашем примере эта таблица составлена для 4-х функций, причем знаком “+” отмечается принадлежность функции соответствующему классу, знак “–” означает, что функция

внего не входит).

f

T0

T1

L

M

S

f1

+

+

f2

+

+

f3

+

f4

+

+

+

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

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

8. Некоторые приложения теории булевых функций

Материал этого раздела не используется в контрольной работе, но используется в тестах, предлагаемых студентам для сдачи зачета. Примеры такого рода приведены в разд. 17 “Дополнительные задачи”.

19

8.1. Функциональные элементы и схемы

Пусть имеется некоторое устройство, внутренняя структура которого нас не интересует, а известно лишь, что оно имеет п упорядоченных входов (занумерованных числами от 1 до п) и один “выход”. На каждый из входов может подаваться один из двух сигналов: 0 или 1 (“отсутствие тока” или “наличие его”) и при каждом наборе сигналов на входе возникает один из двух сигналов 0 или 1 на выходе. Такое устройство называется функциональным элементом (ФЭ). ФЭ, соответствующий функции j от нескольких переменных, может быть изображен следующим образом:

Ясно, что каждому ФЭ соответствует некоторая булева функция f(x1, x2,…, xn). Некоторые входы могут быть фиктивными (т. е. при любом наборе сигналов на остальных входах сигнал на выходе не зависит от сигнала на этом входе, и соответствующая булева функция зависит от меньшего числа переменных). Если имеется несколько ФЭ, то из них можно получать новые сложные ФЭ (например, один из входов ФЭ можно соединить с выходом другого. В этом случае полученное соединение соответствует суперпозиции двух функций. Можно также соединять некоторые входы, что означает отождествление некоторых переменных).

Следующие соединения, очевидно, являются логическими функциями: (x + y) | (y ~ z) и (x | y) ~ (

y).

Более точно: будем называть соединение нескольких ФЭ схемой, если выполнены следующие естественные требования:

а) всякий ФЭ является схемой;

б) если S0 – схема и два ее входа соединены вместе, то получившаяся в результате конструкция S также является схемой;

в) если S1 и S2 – схемы, то схемой будет также конструкция S, полученная соединением какого-либо входа S1 с выходом S2;

20

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

Ясно, что не всякое соединение ФЭ является схемой.

Соединение S конечного числа функциональных элементов является схемой тогда и только тогда, когда выполнены 3 условия:

среди ФЭ есть один и только один свободный выход (т.е. выход, не соединенный ни с каким входом);

каждый вход любого ФЭ может быть соединен не более чем с одним выходом другого ФЭ;

в соединении S нет циклов (т.е. нет такого упорядоченного набора ФЭ, когда вход следующего соединен с выходом предыдущего и вход первого соединен с выходом последнего. Цикл в соединении иначе называют обратной связью).

Теперь посмотрим, как на языке схем перефразируется задача о полноте системы функций. Пусть имеется некоторый набор функциональных элементов j 1, j 2 ,…,j п (точнее, типов ФЭ, т. е. считаем, что имеется неограниченное число элементов, реализующих каждую из функций j k). Спрашивается, при каких условиях любую булеву функцию можно реализовать при помощи схемы, состоящей из данных ФЭ. Из предыдущего ясно что ответ на этот вопрос дается теоремой Поста.

Замечание. Ясно, что при реализации описанных выше устройств необходимо учитывать, что для работы конкретных ФЭ требуется некоторое время, что влияет на фактор полноты ФЭ. Подробнее об этом можно узнать в [3].

Заметим, что на практике часто используются функции “конъюнкция” и “дизъюнкция”. Для них часто схемы изображаются несколько иначе. Дадим более точное определение. Релейно-контактной схемой или РКС будем называть некоторое соединение, состоящее из следующих элементов:

переключателей (это могут быть как механические устройства, так и лампы, электромагнитные реле и т. д.) Каждый переключатель может принимать значение 1 (через него пройдет ток) или 0 (через него ток не проходит). Будем считать, что любой переключатель соответствует либо логической

переменной x, либо ;

проводников, могущих соединять переключатели либо последовательно, либо параллельно (это соответствует замене ФЭ, определяющих конъюнкцию или дизъюнкцию);

входа и выхода из системы (вход и выход называются полюсами системы).

Иначе РКС называют переключательной схемой (П-схемой).

Будем говорить, что конкретная РКС принимает значение 1 при данных значениях переключателей, если через нее проходит ток, в противном случае мы считаем, что она принимает значение 0.

Две РКС считаются равносильными, если они принимают одинаковые значения при одних и тех же значениях переключателей.

Очевидно, что любая суперпозиция функций конъюнкции, дизъюнкции и отрицания может быть изображена в виде РКС. Например, функции соответствует следующая РКС.

21

Следующая РКС соответствует функции (в ней 12 переключателей).

После сокращения СДНФ по правилу Блейка можно получить равносильную формулу: L = xz yz xz , для которой РКС будет иметь 6 переключателей. Если ставить целью уменьшение числа

переключателей, то последнее выражение можно преобразовать к виду L = (x y) z xy (РКС будет иметь 5 переключателей).

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

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

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

Пример 1. Пытаясь вспомнить победителей прошлогоднего турнира, 5 бывших зрителей турнира заявили:

1)Антон был вторым, а Борис пятым.

2)Виктор был вторым, а Денис третьим.

3)Григорий был первым, а Борис третьим.

4)Антон был третьим, а Евгений шестым.

5)Виктор был третьим, а Евгений четвертым.

Впоследствии выяснилось, что каждый мог ошибиться, не более чем в одном высказывании. Каково было истинное распределение мест в турнире?

Решение. Будем обозначать высказывания зрителей Хk , где Х – первая буква имени участника турнира, а k – номер места, которое он занял в турнире. В высказываниях зрителей одно высказывание может быть ложным, поэтому будут истинными дизъюнкции этих высказываний А2 Б5, В2 Д3 , Г1 Б3 , А3Е6 , В3 Е4. Но тогда истинной будет конъюнкция : K= (А2 Б5)(В2 Д3)(Г1 Б3 )(А3 Е6)(В3 Е4 ) = 1.

22