Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diskretnaya_matematika.pdf
Скачиваний:
1262
Добавлен:
12.03.2015
Размер:
2.47 Mб
Скачать

81

-в с.к.н.ф. раскрываем скобки, т.е. осуществляем преобразование типа &, ,&;

-в полученном выражении удаляем противоречия, проводим

поглощения: А А~А и А А&В~А.

В результате придем к сокращенной д.н.ф. Так, для примера, рассмотренного в начале данного параграфа, с.к.н.ф. имеет вид: (x y z) &( x y z). Проведем указанные преобразования:

(x y z)&( x y z)~ (x y z)&( x y z) ~

~x& x x&y x&z x& y y& y y&z x& z y& z z& z ~

~x&y x&z x& y y&z x& z y& z.

Таким образом, сокращенная д.н.ф. найдена.

§ 17. Минимальные конъюнктивные нормальные формы

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

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

Как и минимальную д.н.ф., минимальную к.н.ф. находят в следующей последовательности.

Если функция f тождественно равна 1, то ее минимальной к.н.ф., очевидно, будет функция x x.

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

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

(x y)&(x y)~x&(x y)&(x y),

а операция поглощения - x&(x y)~x.

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

состоит в следующем. Имплицентная матрица представляет собой таблицу, в верхнюю строку которой записываются конституенты нуля, содержащиеся в

82

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

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

Пусть требуется найти минимальную к.н.ф. для функции:

(x y z) & ( x y z)&(x y z)&(x y z).

Сокращенной к.н.ф., как легко видеть, будет (y z)&(x z)&(x y). Построим имплицентную матрицу:

 

x y z

x y z

x y z

x y z

y z

*

*

 

 

x z

*

 

*

 

x y

 

 

*

*

Видно, что имплиценты y z и x y покрывают символами * все столбцы имплицентной матрицы, следовательно, (y z)&(x y) является минимальной к.н.ф.

§ 18. Полнота системы функций. Теорема Поста

Среди рассмотренных вопросов важными являлись вопросы о представимости булевых функций с помощью связок , &, , либо , &, либо, , и т.п. Всякий раз фактически речь шла о возможности представить булевы функции с помощью только некоторых функций и суперпозиции последних. Иначе можно сказать, что из всевозможных булевых функций были выделены некоторые функции ϕ1,ϕ2,..., ϕk, а затем выяснялось, можно ли любую булеву функцию представить как суперпозицию функций

ϕ1,ϕ2,...,ϕk .

Система функций Ф={ϕ1,ϕ2,...,ϕk} называется функционально полной, если всякая булева функция представима посредством суперпозиции функций из системы Ф.

Из теоремы 3.14 или 3.15 следует, что любую булеву функцию можно представить с помощью формулы, содержащей только связки , &, . Следовательно, система функций ϕ1(А)= x, ϕ2(x,y)=x&y, ϕ3(x,y)=x y является функционально полной системой функций. Эта полная система состоит из трех функций (одной одноместной и двух двуместных функций).

Из теорем 3.14 и 3.6 следует, что каждая из функций ϕ(x,y)=x y и ψ(x,y)=xy образует полные системы, состоящие только из одной функции.

83

Из теоремы 3.7 следует, что других полных систем функций, состоящих только из одной двуместной функции, нет.

Из теорем 3.14 и 3.4 следует полнота каждой из систем функций:

{ x, x&y} ; { x, x y} ; { x, x y}.

Можно показать, что, кроме перечисленных полных систем функций, существуют различные другие полные системы, например, является полной система функций {x&y, (x≡y), x x}.

Система булевых функций 1, ϕ2,..., ϕn} называется базисом, если она является полной системой функций, но никакая ее собственная часть не образует полную систему функций.

Примерами базиса будут системы { , &}, { }, но { , &, } - не базис, ибо ее подсистема { , &} - полна.

Естественно выяснить, есть ли критерии полноты системы функций, т.е. можно ли выяснить, когда (при каких условиях) та или иная система функций полна. И если есть такие критерии, то в чем они состоят. Ответом является теорема Поста. Но прежде чем ее сформулировать, введем некоторые новые понятия.

1. Функции, сохраняющие нуль (единицу). Булева функция f(x1,x2, ...,xn)

называется сохраняющей нуль (единицу), если f(0,0,...,0)=0 (f(1,1,...,1)=1). Например, функция x&y, очевидно, сохраняет 0, а функция x y z

сохраняет 1. Функция x y не сохраняет 0, а x≡ y не сохраняет единицу. Таким образом, есть функции, сохраняющие 0, функции, сохраняющие 1, а также есть функции, не сохраняющие 0 и функции, не сохраняющие 1.

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

Доказательство. Пусть даны булевы функции, сохраняющие нуль: f(x1,x2, ...,xn), ϕ1(y11,y12,...,y1(m1)), ϕ2(y21,y22,...,y2(m2)),…, ϕn(yn1,yn2, ...,yn(mn)).

Подставляя функции ϕ12,...,ϕn вместо аргументов x1,x2,...,xn, получаем новую функцию

F(y11,y12, ...,y1(m1);...; yn1,yn2, ...,yn(mn))= f(ϕ1, ϕ2,..., ϕn).

Найдем значение функции F на нулевом наборе, полагая все yij=0. Так как каждая из функций ϕi сохраняет нуль и, следовательно, равна нулю при нулевых значениях аргументов уij, а также f(0,0,...,0)=0, то получим, что

F(0,0,...,0;.........;0,0,...,0)=0.

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

Следствие 3.5. В полной системе функций должна содержаться хотя бы одна функция, не сохраняющая нуль, т.е. равная единице на нулевом наборе.

84

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

Следствие 3.6. В полной системе функций должна содержаться хотя бы одна функция, не сохраняющая единицу.

Действительно, в противном случае нельзя получить функцию, не сохраняющую единицу, например, x≡ y.

2. Самодвойственные функции. Булева функция f(x1,x2, ...,xn)

называется самодвойственной, если

f(x1,x2, ...,xn) = f( x1, x2, ..., xn).

Легко убедиться, что функция f(x) = x самодвойственная, а f(x,y) = x&y не является самодвойственной.

Нетрудно доказать следующую теорему.

Теорема 3.21. Суперпозиция самодвойственных функций есть снова самодвойственная функция.

Следствие 3.7. В полной системе функций должна содержаться хотя бы одна не самодвойственная функция.

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

3. Монотонные функции. Рассмотрим различные наборы значений переменных x1,x2,...,xn, когда каждое xi принимает значение 0 либо 1.

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

Например, имеем, что (1,0,1) (1,0,0), так как значения аргументов х1 и х2 совпадают, а значение аргумента х3 на первом наборе больше, чем на втором. Аналогично имеем, что (0,0,1,1,1) (0,0,1,0,1); (1,0,1,1) (1,0,0,0).

Очевидно, что любой набор не меньше набора, состоящего только из нулей. Наборы (1,0) и (0,1) несравнимы, ибо значение аргумента x1 больше на

первом наборе, а аргумента x2 - на втором.

Булева функция f(x1,x2, ...,xn) называется монотонной, если для любых наборов значений ее аргументов (а1,а2, ...,аn) и (b1,b2, ...,bn) таких, что (а1,а2,

...,аn) ≥ (b1,b2, ...,bn), имеет место f(а1,а2, ...,аn) ≥ f(b1,b2, ...,bn).

Например, учитывая, что наборы (0,1), и (1,0) несравнимы, легко установить, что функция x&y x&y монотонна.

85

Функция (x y) не является монотонной, так как на наборе (1,0) равна единице, а на большом наборе (1,1) - нулю.

Нетрудно убедиться, что имеет место приведенная далее теорема и следствие из этой теоремы.

Теорема 3.22. При суперпозиции монотонных функций получается монотонная функция.

Следствие 3.8. В полной системе функций должна содержаться хотя бы одна немонотонная функция.

4. Линейные функции. Функция f(x1,x2, ...,xn) называется линейной, если f(x1,x2, ...,xn) = c0+c1&x1+c2&x2+…+cn&xn,

где ci - константы (единица или нуль), 0≤ i≤ n.

Примеры линейных функций. Линейными являются следующие двухаргументные функции: тождественно равная нулю (f(x,y)=0),

тождественно равная единице (f(x,y)=1), а также f(x,y)=x, f(x,y)=1+x, f(x,y)=y, f(x,y)=1+y, f(x,y)=x+ y, f(x,y)=1+ x+ y. Других двухаргументных линейных функций нет. Например, функция f(x,y)=x&y является нелинейной.

Легко доказать следующую теорему.

Теорема 3.23. Суперпозиция линейных функций является линейной функцией.

Следствие 3.9. В полной системе булевых функций должна содержаться хотя бы одна нелинейная булева функция.

Действительно, в противном случае нельзя получить нелинейную функцию, например, x&y.

Пусть Р0- класс функций, сохраняющих нуль, Р1- класс функций, сохраняющих единицу, S - класс самодвойственных функций,

М - класс монотонных функций, L - класс линейных функций.

Теорема 3.24. (Теорема Поста). Для полноты системы функций Ф={ϕ1, ϕ2,..., ϕn} необходимо и достаточно, чтобы для каждого из классов Р0, Р1, S, М, L в Ф нашлась функция ϕi, ему (классу) не принадлежащая.

Необходимость условий теоремы вытекает из следствий 3.5-3.9. Доказательство достаточности не приводим.

86

Отметим, что полная система функций может содержать всего одну функцию. Например, полна система Ф={ϕ1}, где ϕ1=ϕ1(x,y)=x y. Это означает, что функция ϕ1(x,y)=x y не принадлежит ни одному из классов функций Р0, Р1, S , М и L.

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

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

Доказательство. Пусть G={f1, f2,..., fn} - полная система функций.

Согласно теоремы 3.24 в G найдутся функции fi Р0, fj Р1, fs S , fm М и fl L. Тогда система G1={fi, fj, fm, fs, fl } - полная система. Может быть, что в G1

некоторые функции совпадают, но все равно их не более пяти. Имеем fi Р0, следовательно, fi(0,...,0)=1. Если fi(1,...,1)=0, то fi не монотонная функция и тогда {fi, fj, fs, fl}- полная система. Если fi(1,...,1)=1, то fi( 0,..., 0)=1, аfi(0,...,0)=0, следовательно, fi не самодвойственная функция и тогда {fi, fj, fm, fl} полная система. Таким образом, всегда можно выделить полную подсистему, содержащую не более четырех функций.

§19. Приложение теории булевых функций

канализу и синтезу контактных (переключательных) схем

Рассмотрим приложение теории булевых функций к анализу и синтезу контактных (переключательных) схем.

Контакты (переключатели) можно рассматривать как булевы переменные и обозначать буквами x, y, z,... или теми же буквами с числовыми индексами: x1, x2, ..., y1, y2 ,..., z1, z2,… Каждая из переменных может принимать одно и только одно из двух возможных значений: если контакт x разомкнут, то полагаем x=0, если контакт x замкнут, то x=1.

Под контактной (переключательной) схемой понимается схема,

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

Отрицанием контакта x называется контакт, равный 1, если x=0, и равный 0, если x=1. Отрицание контакта x обозначается через x.

Очевидно, что последовательное соединение двух контактов x и y моделируется конъюнкцией переменных x и y, а параллельное соединение - их дизъюнкцией, см. рис. 3.2.

87

x

xy

y

Рис. 3.2

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

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

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

Решение. В нашем случае имеем три переменные. Обозначим их через x, y и z. По условию свет должен загораться тогда и только тогда, когда большинство этих переменных принимает значение 1, т.е. имеем таблицу:

x

y

z

 

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

1

1

0

0

0

1

0

1

1

1

1

0

1

1

1

1

1

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

x&y&z x& y&z x&y& z x&y&z.

(3.26)

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

Эта схема выполняет поставленную задачу.

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

88

 

 

x

 

y

 

 

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

y

 

 

 

 

z

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

x

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.3

Можно получить, что для булевой функции (3.26) равна: x&y x&z y&z, которую преобразуем к виду: схема будет содержать всего пять контактов см. рис. 3.4.

минимальная д.н.ф. x&y z&(x y). Тогда

x

y

x

z

y

Рис. 3.4

Очевидно, что анализ позволил сильно упростить контактную схему.

§20. Приложение теории булевых функций

канализу и синтезу схем из функциональных элементов

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

 

89

Не касаясь структуры и физических основ этих устройств, называемых

функциональными элементами, обозначим их условно следующим образом:

 

- устройство, реализующее отрицание;

 

&

- устройство, реализующее конъюнкцию;

 

1

- устройство, реализующее дизъюнкцию.

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

Об этих устройствах (функциональных элементах) знаем лишь следующее:

 

- устройство, реализующее отрицание, имеет один

 

вход и один выход. Сигнал появляется на выходе,

 

когда на входе нет сигнала, и не появляется, когда

 

на вход подан сигнал.

&

- устройство, реализующее конъюнкцию, имеет

два и более входов и один выход. Сигнал

 

 

появляется на выходе тогда и только тогда, когда

 

на все входы поданы сигналы.

1

- устройство, реализующее дизъюнкцию, имеет два

и более входов и один выход. Сигнал появляется на

 

 

выходе тогда и только тогда, когда подан сигнал

 

хотя бы на один вход.

Этих свойств элементов достаточно для решения задач синтеза и анализа схем из этих элементов.

Рассмотрим пример построения одноразрядного сумматора двоичных чисел. Заданы двоичные числа а1а2аkаn и b1b2…bk…bn. Требуется построить сумматор для k –го разряда. Задача состоит в конструировании схемы (рис. 3.5) с тремя входами x, y, z и двумя выходами S и Р, чтобы при

S

z

P

x y

Рис. 3.5.

90

подаче на входы x и y сигналов, изображающих двоичные цифры - слагаемые данного разряда, а на вход z - сигнала, изображающего значение переноса из соседнего младшего разряда, получить на выходе S значение суммы в данном разряде, а на выходе Р - значение переноса в соседний старший разряд.

Напомним, что сложение чисел в двоичной системе производится следующим образом: 0+0=0, 0+1=1+0=1, 1+1=10, 1+1+1=11 и т.д.

Воспользовавшись этой таблицей сложения чисел в двоичной системе, получим таблицу:

x

y

z

S

P

0

0

0

0

0

0

0

1

1

0

 

 

 

 

 

0

1

0

1

0

0

1

1

0

1

 

 

 

 

 

1

0

0

1

0

1

0

1

0

1

 

 

 

 

 

1

1

0

0

1

1

1

1

1

1

 

 

 

 

 

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

S= x& y&z x&y& z x& y& z x&y&z,

(3.27)

Р= x&y&z x& y&z x&y& z x&y&z.

 

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

Р x&y x&z y&z, S x&y&z (x y z)& Р.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]