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

76

Считают, что два члена x&y и x& y склеиваются по переменной y. Операция поглощения определяется соотношением: x x&y ~ x.

Говорят, что слагаемое x&y поглощается слагаемым x. Операция неполного склеивания определяется соотношением

x&y x& y~x x&y x& y,

которое получается из (3.23), если учесть, что x~x x. Следовательно, при неполном склеивании, кроме слагаемого x, полученного в результате полного склеивания, остаются оба слагаемых, участвующих в склеивании.

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

Теорема 3.18 (теорема Квайна). Если в совершенной д.н.ф. булевой функции провести все операции неполного склеивания и затем все операции поглощения, то в результате получится сокращенная д.н.ф. этой функции.

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

Для заданной функции f(x1, x2, ..., xn) необходимо найти равносильную ей с.д.н.ф., в полученной с.д.н.ф. провести все возможные операции склеивания конституент единицы. В результате этих склеиваний получатся произведения, содержащие n-1 переменных. Склеиваться могут только произведения с одинаковым количеством переменных. В силу этого при дальнейшем склеивании не будут участвовать конституенты единицы, поэтому можно после всех склеиваний конституент единицы провести всевозможные операции поглощения. Затем выполняются всевозможные операции неполного склеивания слагаемых имеющих (n-1) множителей. После этого провести всевозможные операции поглощения и вновь выполнить всевозможные операции склеивания слагаемых содержащих (n-2) множителей и т.д.

§ 15. Тупиковые и минимальные д.н.ф.

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

f(x,y,z)=x&y&z x&y& z x&y& z x& y& z.

Найдем для этой функции сокращенную д.н.ф. Проведя операции склеивания и поглощения, получим

f(x,y,z) x&y y& z x& z.

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

77

 

f(x,y,z) x&y x&y& z x&y& z x& z x&y x& z.

(3.24)

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

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

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

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

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

Отметим, что в определении идет речь о минимальном числе вхождений переменных (с отрицанием или без отрицания), а не различных переменных. Например, д.н.ф. x&y x& z содержит четыре вхождений переменных, но три различные переменные (x,y,z).

Теорема 3.19. Всякая минимальная д.н.ф. булевой функции f является её тупиковой д.н.ф.

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

вид:

f = C1 C2 ... Cn ,

(3.25)

где каждое Ci (1in) - элементарное произведение. Покажем, что каждое Ci является простой импликантой заданной функции.

Если f обращается в 0 при некоторых значениях своих аргументов, то, очевидно, и каждое Ci (1in) принимает значение 0, следовательно, каждое Ci является импликантой функции. Далее покажем, что эта импликанта простая, т.е. никакая собственная часть Ci (1i n) уже не является импликантой.

Допустим, что, например, Ck (1kr) не является простой импликантой. Каждое Ci (1in), в том числе и Ck, по доказанному, является импликантой функции f. Так как по допущению Ck не является простой импликантой (но импликанта для f), то некоторая ее часть будет простой импликантой для f, т.е. Ck может быть представлена в виде Ck = Ck&Ck*, где Ck* - простая импликанта. Заменим правую часть (3.25) на равносильную:

C1 C2 ... Cn Ck*.

78

В выражении (3.25) в качестве дизъюнктивного члена содержатся все простые импликанты, тогда при некотором i: Ci=Ck*, но тогда Ck должна поглощаться членом Ci:

Ci Ck = Ci Ck’&Ck* ~ Ci.

В результате получим, что

f = C1 C2 ... Ck-1 Ck+1 ... Cn.

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

Очевидно, что минимальная д.н.ф. не содержит лишних импликант. Итак, минимальная д.н.ф. содержит только простые импликанты, ни одну из которых исключить нельзя, следовательно, она есть тупиковая д.н.ф. Теорема доказана.

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

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

§ 16. Метод импликантных матриц

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

f(x,y,z)=x&y&z x& y&z x& y&z x&y& z x& y& z x&y& z.

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

Результаты,

 

 

Конституенты единицы

 

п./п

получающиеся

 

 

 

 

 

 

 

при

 

 

 

 

 

 

 

x&y&z

x& y&z

x& y&z

x&y& z

x& y& z

x&y& z

 

склеивании

1

2

3

4

5

6

 

 

1

x&z

*

*

 

 

 

 

2

x&y

*

 

 

 

 

*

3

y&z

 

*

*

 

 

 

4

x& y

 

 

*

 

*

 

5

x& z

 

 

 

*

*

 

6

y& z

 

 

 

*

 

*

79

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

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

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

Слагаемые сокращенной д.н.ф. являются простыми импликантами.

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

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

Для рассматриваемого примера первая построенная таблица является и импликантной матрицей. Из этой матрицы следует, что в минимальную д.н.ф. входят, например, x&z, x& y и y& z, ибо они в совокупности накрывают все столбцы символами «*». Форма x&y x& z y&z тоже является минимальной д.н.ф. рассматриваемой функции. Обе эти д.н.ф., очевидно, являются и тупиковыми д.н.ф. рассматриваемой функции.

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

Для уменьшения выкладок на этапе получения сокращенной д.н.ф. можно применить метод Мак-Класки. Этот метод является некоторой модификацией метода Квайна. В методе Квайна необходимо проводить попарное сравнение всех слагаемых с.д.н.ф. Число таких сравнений с ростом слагаемых быстро растет.

80

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

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

можно рассмотреть наборы

(1 1 0), (1 1 1), (1 0 0), (0 0 0).

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

Рассмотрим метод Мак-Класки на примере. Пусть f(x,y,z,t) равна единице на наборах, записанных в строках с номерами 0, 1, 2, 3, 4, 6, 7, 8, 9, 11 и 15. Найдем для этой функции сокращеннyю д.н.ф. и укажем, как найти минимальную и тупиковые д.н.ф.

Разобьем наборы значений переменных x, y, z, и t, на которых f(x,y,z,t)=1, на группы. В результате получим следующие группы:

-нулевую: (0 0 0 0);

-первую: (0 0 0 1), (0 0 1 0), (0 1 0 0), (1 0 0 0);

-вторую: (0 0 1 1),(0 1 1 0), (1 0 0 1);

-третью: (0 1 1 1), (1 0 1 1);

-четвертую: (1 1 1 1).

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

-нулевую: (0 0 0 -), (0 0 - 0), (0 – 0 0), (- 0 0 0);

-первую: (0 0 - 1), (- 0 1 0), (0 0 1 -), (0 - 1 0), (0 1 - 0), (1 0 0 -);

-вторую: (0 - 1 1),(- 0 0 1), (0 1 1 -), (1 0 - 1);

-третью: (- 1 1 1), (1 - 1 1).

Приведем еще раз сравнение элементов соседних групп и получим группы:

-нулевую: (0 0 - -), (0 - - 0), (- 0 0 -);

-первую: (- 0 - 1), (0 - 1 -);

-вторую: (- - 1 1).

Для полученных групп склеивание не происходит, поэтому получаем результат - сокращенную форму, которая имеет вид:

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

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

Дальнейшее нахождение минимальных и тупиковых д.н.ф. совпадает с описанным ранее. Можно только упростить записи в импликантной матрице, записывая вместо переменной число (символ) 1, а вместо отрицания переменной – число (символ) 0.

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

- для заданной функции строим с.к.н.ф.;

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