Смекни!
smekni.com

Минимальные формы булевых многочленов (стр. 3 из 4)

от wxyz и wxyz к wxy

от wxyz и wxyz к wxz

от wxyz и wxyz к xyz

от wxyz и wxyz к xyz

Здесь использованы, и потому должны быть помечены, все семь слагаемых.

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

В нашем примере второй раунд упрощения осуществляет переход

от wxy и wxy к xy

от xyz и xyz к xy

Четыре выражения - wxy, wxy, xyz, xyz – помечены. Остальные произведения, а именно wxz, wyz, wxz не могут быть упрощен. следовательно, р эквивалентно такой сумме простых импликантов:

р ~wxz’ + wyz’ + wxz + xy.

Как уже было сказано, Мак-Класки улучшил это метод. Чтобы описать улучшенный алгоритм, используем многочлен

d = wxyz’ + wxyz’ + wxyz + wxyz’ + wxyz + wxyz’ + wxyz

Шаг 1. Считая переменные упорядоченными по алфавиту (или по номерам), поставим в соответствие каждому произведению последовательность символов из {0, 1, -}: вместо xi и xiзапишем 0 и 1 соответственно, а вместо опущенных переменных запишем черточку. Например, вместо wxyz запишем 0001, а вместо wxz00-1.

Шаг 2. Произведения, рассматриваемые как троичные n-ки, разбиваются на классы эквивалентности в соответствии с числом единиц. Упорядочим классы по возрастанию этого числа. В нашем примере:

wxyz0 0 0 1

wxyz’0 0 1 0

wxyz0 0 1 1

wxyz’1 0 1 0

wxyz1 0 1 1

wxyz’1 1 1 0

wxyz’1 1 0 0

Шаг 3.Используя правило (*), нужно складывать только произведения из соседних классов, т.е. когда числа единиц в соответствующих последовательностях отличаются лишь на 1. При этом мы должны сравнивать выражения из соседних классов, имеющих черточки в одних и тех же позициях. Если два таких выражения отличаются точно в одной позиции, то они имеют вид р = i1i2irin и q = i1i2ir’…in, где все ik лежат в {0, 1, -}, а irлежит в {0, 1}. Тогда (*) сводит p, q к i1i2ir-1 - ir+1 in, причем p и q должны быть помечены. В рассматриваемом примере это дает такие четверки (метки относятся к следующему раунду, тогда как в предыдущем списке все произведения следовало пометить):

0 0 - 1

0 0 1 --

- 0 1 0-

- 0 1 1-

1 0 1 --

1 - 1 0

1 1 - 0

Помеченные выражения не являются простыми импликантами и во втором раунде этого шага дают единственное выражение

- 0 1 -

Итак, мы нашли все простые импликанты, а именно

0 0 1 - w’x’z

- 0 1 0 wyz’

- 0 1 1 wxz’

1 0 1 - x’y

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

Шаг 4. В силу теоремы сумма всех простых импликантов для р эквивалентна р. поэтому для каждого слагаемого дизъюнктивной нормальной формы d многочлена р должен существовать простой импликант, являющийся произведением этого слагаемого. для выявления возникшего соответствия удобно использовать таблицу простых импликантов. столбцы этой таблицы индексируются дизъюнктами из d, а строки – простыми импликантами, вычисленными в шаге 3. на пересечении i-й строки и j-го столбца ставится крестик -, если простой импликант из i-й строки является подпроизведением произведения из j-го столбца. Говорят, что одно произведение покрывает, если первое является подпроизведением второго. Для того, чтобы найти сумму простых импликантов, которая будет эквивалентна d , мы из множества всех простых импликантов выбираем подмножество таким образом, чтобы каждое слагаемое в d покрывалось по крайней мере одним импликантом из подмножества. Тогда минимальной формой будет сумма простых импликантов с наименьшим числом членов и наименьшим числом букв. Простой импликант называется главным членом, если он покрывает произведение, не покрываемое никаким другим простым импликантом; сумма всех главных членов называется ядром. сначала мы находим ядро, затем обозначаем через q1,…,qk произведения, не покрываемые простыми импликантами из ядра; простые импликанты, не входящие в ядро, обозначим через р1,…,рm. Далее формируем таблицу, столбцы которой индексируются элементами qi, а строки – элементами рi. Крестик - на месте (i, j) указывает, что рi покрывает qj.

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


II.РЕШЕНИЕ МИНИМАЛЬНЫХ ФОРМ БУЛЕВЫХ МНОГОЧЛЕНОВ С ПОМОЩЬЮ МЕТОДА КУАЙНА – МАК-КЛАСКИ

Задача.Определим форму булева многочлена р, заданного в дизъюнктивной нормальной форме

d = vwxyz’ + vwxyz’ + vwxyz’ + vwxyz’ + vwxyz + vwxyz’ + vwxyz + vwxyz’ + vwxyz + vwxyz’ + vwxyz + vwxyz + vwxyz’ + vwxyz’ + vwxyz’ + vwxyz

Решение:

Шаги 1 и 2

0 единиц 0 0 0 0 0 - (1)
1 единица 0 0 0 1 00 0 1 0 01 0 0 0 0 --- (2)(3)(4)
2 единицы 0 0 1 1 00 1 0 0 10 1 0 1 01 0 0 0 1 ---- (5)(6)(7)(8)
3 единицы 0 1 1 0 10 1 1 1 01 0 1 0 11 1 0 1 01 1 1 0 0 ----- (9)(10)(11)(12)(13)
4 единицы 0 1 1 1 11 1 1 1 0 -- (14)(15)
5 единиц 1 1 1 1 1 - (16)

Шаг 3. Комбинация строк (i) и (j) дает сокращение, указанное в строке (i)(j):

(1)(2)(1)(3)(1)(4) 0 0 0 - 00 0 - 0 0- 0 0 0 0 --J
(2)(5)(2)(7)(3)(5)(4)(8) 0 0 - 1 00 - 0 1 00 0 1 - 01 0 0 0 - ---I
(5)(10)(6)(9)(7)(10)(7)(12)(8)(11) 0 - 1 1 00 1 - 0 1 0 1 - 1 0 - 1 0 1 0 1 0 - 0 1 -H--G
(9)(14)(10)(14)(10)(15)(12)(15)(13)(15) 0 1 1 - 10 1 1 1 -- 1 1 1 01 1 -1 01 1 1 - 0 F---Е
(14)(16)(15)(16) - 1 1 1 1 1 1 1 1 - --

Повторение этого шага с новыми строками дает нам

(1)(2)(3)(5) 0 0 - - D
(2)(5)(7)(10) 0 - - 1 0 C
(7)(10)(12)(15) - 1 - 1 0 B
(10)(15)(14)(16) - 1 1 1 - A

Пометки «птичкой»- и буквами сделаны после процесса упрощения. найденные простые импликанты обозначены буквами А, В, …J.

Шаг 4. Формируем таблицу простых импликантов, где индексы столбцов – слагаемые из d – представлены в виде двоичных столбцов.

(1)00000 (2)00010 (3)00100 (4)10000 (5)00110 (6)01001 (7)01010 (8)10001 (9)01101 (10)01110 (11)10101 (12)11010 (13)11100 (14)01111 (15)11110 (16)11111
-111- А - - - -
-1-10 В - - - -
0--10 С - - - -
00--0 D - - - -
111-0 E - -
011-1 F - -
10-01 G - -
01-01 H - -
1000- I - -
-0000 J - -

В наших кратких обозначениях ядро, т.е. сумма главных членов, есть D + H + G + B + E + A. Единственным произведение, не покрываемым ядро, является (4); это и есть q1. Простыми импликантами pi, не входящими в ядро, являются С, F, I, J. Новая таблица имеет вид