Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная математика.doc
Скачиваний:
70
Добавлен:
02.12.2018
Размер:
1.95 Mб
Скачать

§ 3. Переключательные функции

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

Когда переключатель “закрыт” (“включен”), электрический ток может проходить через него, когда он “открыт” (“выключен”), электрический ток через переключатель не проходит. Переключатель – это устройство двух состояний, одно состояние – “включен”, другое – “выключен”. Цепи, которые включают в себя один или несколько переключателей, называются цепями переключателей. Предположим, что цепь имеет переключатель А. Обозначим состояние переключателя переменной x и будем считать, что x=0, если А открыт, и x=1, если А закрыт.

Рассмотрим цепь, содержащую 2 переключателя А1 и А2, которые соединены последовательно (рис. б). Электрический ток проходит через данный участок цепи только в том случае, если оба ключа, А1 и А2, закрыты. Пусть переменные x1 и x2 описывают соответственно состояние А1 и А2. Рассмотрим функцию f(x1,x2), которая принимает значение 1 для значений x1 и x2, при которых электрический ток проходит по участку, и значение 0 когда ток не проходит. Легко видеть, что это 2(x1,x2)  конъюнкция.

Два переключателя могут быть включены параллельно (рисунок в). Чтобы через такую цепь проходил ток, , чтобы, по крайней мере, 1 из переключателей был закрыт. Определяя переменные x1 и x2 и функцию g(x1,x2), как и в предыдущем случае, получим 8(x1,x2)  дизъюнкцию.

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

Для заданных n переключателей А1, А2,…, Аn, состояние которых определяется n переменными x1,x2,...,xn (xi принимает значение 0 или 1 для i=1,2,..., n), переключательная функция f:BnB описывает поведение цепи для всех 2n возможных состояний переключателей. Очевидно, что переключательная функция может быть представлена булевым выражением и, следовательно, является булевой функцией.

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

Пусть переменные x1, x2, x3, x4 характеризуют состояние переключателей А1, А2, А3, А4 соответственно. Тогда искомая функция имеет вид: f(x1,x2,x3,x4) = x1&x4x2 x3.

§ 4. Совершенные нормальные формы

Введем обозначение: x=x&&, где - параметр, равный либо 0, либо 1. Составив таблицу значений для x, убеждаемся, что

а) x равно при = 0 и x при =1; б) x=1 , когда x =.

Теорема 1.1 (о разложении функции по m переменным). Каждую функцию f(x1,...,xn) алгебры логики при любом m (1  m n), можно представить в следующей форме:

f(x1,...,xm,xm+1,...,xn)= f(1,...,m,xm+1,...,xn), (1.1)

где дизъюнкция берется по всевозможным наборам значений переменных x1,...,xm. Это представление называется разложением функции по m переменным x1,...,xm.

f(1,...,m,xm+1,...,xn) =

( принимает 2 значения: 0, и тогда вся конъюнкция обращается в 0, или 1 при xi=i ; поэтому среди 2m конъюнкций имеется только одна, не равная нулю, при x1= 1, x2= 2, ..., xm= m)

f(x1,...,xm,xm+1,...,xn)= f(x1,...,xm,xm+1,...,xn). 

Пример. При n=3, m=2:

f(x1, x2, x3) = x10 x20 f(0,0,x3)  x10 x21 f(0,1,x3)  x11 x20 f(1,0,x3)  x11 x21 f(1,1,x3).

Пусть f(x1,...,xn)0. Разложим эту функцию по всем n переменным:

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

Если значение f(1,..., n) равно нулю, то и вся конъюнкция равна 0. Составим дизъюнкцию только по тем наборам переменных, на которых f(1,..., n)=1:

f(x1,...,xn) . (1.2)

Такое разложение носит название совершенной дизъюнктивной нормальной формы (СДНФ).

Теорема 1.2. Каждая функция алгебры логики может быть выражена в виде формулы через отрицание, конъюнкцию и дизъюнкцию.

 При f(x1,...,xn)0 f(x1,...,xn)=. Иначе представим f в виде СДНФ (ф-ла 1.2). 

Данная теорема позволяет для каждой функции построить формулу, реализующую ее в виде СДНФ: в таблице значений функции f(x1,...,xn) отмечают все строки (1,...,n), в которых f(1,...,n)=1, затем для каждой такой строки образуют логическое произведение: , после чего все полученные конъюнкции соединяют знаком дизъюнкции.

Примеры. 1) Записать СДНФ для функции xy. Решение. Мы имеем два набора (0, 1), (1, 0), на которых эта функция равна 1; поэтому xy= x0&y1x1&y0 =yx.

2) СДНФ для функции xy =

3) Путем ~-х преобразований привести к СДНФ выражение yz.

Решение. ДНФ yz не является совершенной, т.к. входящие в нее конъюнкции содержат не все три переменные, от которых зависит функция. Всякую ДНФ можно привести к СДНФ расщеплением конъюнкций с помощью логической единицы.

yz = 1 y 1  1z = (x)y ( z)  ( y)z =

= xyzxyy z = xyzyz xyy z.

СДНФ это логическая сумма логических произведений. Возникает вопрос: нельзя ли для булевых функций получить разложение в виде логического произведения логических сумм? Покажем, что при f(x1,...,xn)1 это возможно, для чего разложим двойственную к f функцию f* ( очевидно, если f 0, то f *1) в СДНФ:

f*(x1,...,xn) .

Поменяв знаки & и , составим тождество для двойственных формул:

f(x1,...,xn) .

С учетом определения двойственной функции преобразуем правую часть последнего равенства: f(x1,...,xn) .

Обозначив через для 1  i n, окончательно получим

f(x1,...,xn) . (1.3)

Это выражение носит название совершенной конъюнктивной нормальной формы (СКНФ).

Примеры. 1) Запишем СКНФ для функции xy. Эта функция равна 0 на наборах (0,0) и (1,1); поэтому xy = =(х y) ().

2) СКНФ для функции x | y =

3) Путем эквивалентных преобразований привести к СКНФ выражение yz = (y)&(yz). КНФ (y) & (yz) не является совершенной, т.к. входящие в нее дизъюнкции содержат не все три переменные, от которых зависит функция. Всякую КНФ можно привести к СКНФ расщеплением дизъюнкций с помощью логического нуля.

(y) & (yz) = ( y0) & (0yz)= ( yz) & (xyz)=(xyz) & (yz) & (y).

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

Рассмотрим функцию f(x1,...,x20)=x1x2...x20. Формула в правой части насчитывает 39 символов (20 символов переменных и 19 символов дизъюнкции), тогда как таблица для функции f(x1,...,x20) содержит 220 (более миллиона) строк.