Симметричные таблицы обеспечивают наглядность процедуры минимизации булевых функций с числом переменных . Громоздкость таблицы, неизбежная при увеличении местности функций, компенсируется регулярностью и наглядностью таблиц. Изложение этого метода можно найти в [2]. Симметричные таблицы позволяют:
- быстро и легко заполнять таблицу значениями минимизируемой функции благодаря восьмеричной нумерации клеток;
- легко находить максимальные интервалы функции благодаря свойству симметрии в структуре таблицы;
- автоматизировать процесс минимизации, используя большую степень формализации алгоритма склеивания клеток.
При использовании этого метода значения минимизируемой функции нумеруются восьмеричными числами. Восьмеричный номер значения функции есть восьмеричное представление его двоичного набора xn,...,x1.Двоичный набор разбивается справа налево на группы по три разряда в каждой, и каждая группа заменяется соответствующей восьмеричной цифрой. При этом х1 имеет минимальный двоичный вес, равный 20, а xn - максимальный, равный 2 n-1.
Базовой структурой при использовании этого метода является таблица для минимизации функций, имеющих местность 2 £ n £ 6. Таблица, соответствующая максимальному числу переменных, содержит 26=64 клеток. Каждая клетка нумеруется двумя восьмеричными цифрами. Двоичный код этой последовательности при нумерации переменных справа налево(!) определяет значения шести двоичных переменных и имеет вид (x6x5x4x3x2x1). Для получения восьмеричного кода эта последовательность разбивается на тройки справа налево, и каждая тройка замещается соответствующей восьмеричной цифрой. Восьмеричный код клетки обозначим (y2y1). В отмеченной симметричной таблице указываются группы по 2n-1 клетке, в которых указанная при отметке переменная принимает единичные значения. Определение зон прямого и инверсного значений переменных осуществляется следующим образом. Снизу всю горизонтальную строку клеток делят вертикальной линией пополам. Полученные половины также делят вертикальными линиями пополам. Далее, полученные части снова делят пополам до тех пор, пока в каждой части слева и справа от вертикальной линии не останется по одной клетке. Тогда для переменной х1 первая клетка слева представляет инверсное значение х1, следующие две клетки (удвоенное число)-прямое значение х1, затем чередуются по две клетки с прямым и инверсным значениями х1. В конце строки будет одна клетка, которой приписывается инверсное значение х1. Для переменной х2 инверсное значение, как и для остальных переменных, начинается слева, но для двух клеток, следующее прямое значение - для четырех клеток (удвоенное число) и т.д. до конца. Затем для переменной х3 - области инверсного и прямого вхождений удвоенной длины по сравнению с предшествующей переменной. Для трех старших переменных используется та же процедура справа от таблицы в направлении сверху вниз.
Три младшие двоичные переменные указываются снизу таблицы с возрастанием индекса в направлении сверху вниз, а три старшие переменные - справа от таблицы в направлении слева направо в порядке возрастания индекса переменной. Пример симметричной таблицы для n=6 приведен на Рис.6. Каждая клетка таблицы имеет свой восьмеричный номер (адрес) и в нее записывается значение функции из строки таблицы с тем же номером.
(Стрелками указаны группы клеток с единичными значениями отмеченных переменных)
Склеивание единиц в таблице осуществляют следующим образом. Любая единица может склеиваться по горизонтали: в группе из двух клеток с другой единицей или незаданным набором, образуя интервал с одной свободной переменной; в группе из четырех клеток, образуя интервал с двумя свободными переменными; в группе из 2к клеток, образуя интервалы с к свободными переменными, где к£2£n. Аналогично можно склеивать и клетки по вертикали. Склеиванию помогает визуальная симметрия возможных для склеивания клеток.
Рис. 9. Отмеченная симметричная таблица для минимизации булевых функций при n=6
На рис.6 звездочками и подсветкой отмечены клетки, которые можно склеивать. Номер клетки образуют две восьмеричные цифры-(у2у1), где у2 соответствует номеру строки таблицы, а у1 - номеру столбца. Клетки с номерами 23 и 33 образуют интервал (01-011) с одной свободной переменной х4. Клетки с номерами (25,27,65,67) - интервал (-101-1) с двумя свободными переменными х2 и х6. Клетки с номерами (10, 12, 14, 16, 30, 32,34,36) - интервал (0-1--0) с тремя свободными переменными х2, х3, х5. Интервалы, соответствующие группам склеиваемых клеток, отмечены выносками .
Основные оси симметрии таблицы выделены жирными линиями. Склеивание 2к клеток возможно только при условии их симметричного расположения относительно основных или дополнительных осей симметрии таблицы. Например, нельзя склеить четыре рядом расположенные клетки с номерами 62, 65, 66, 67.
| | | |
| | |
|
| Рисунок 7 Пример минимизации частично определенной булевой функции
| |
Пусть, например, 6-местная частично определенная функция задана следующим образом:
N1=(-000-1)È(01--10), N0=(11---1) È(-00-00). Соответствующая симметричная таблица и процедура отыскания максимальных интервалов показаны на Рис. 7.
Исходные интервалы функции помечены заливкой: единичные - более светлой, нулевые –
темнее. Для получения МДНФ склеивают клетки, в которых находятся 1 и *. Результаты склеивания отмечены контурами и выносками. Для данной функции МДНФ=`x1 x4`x6 Ú`x1 x2 .
При увеличении местности функций таблица строится из базовой таблицы из 64 клеток. При числе переменных 6<n£12 каждая часть из 26 клеток считается одной клеткой и нумеруется той же последовательностью чисел-0,1,3,2,6,7,5,4 по горизонтали и по вертикали, но каждая цифра в последовательности означает восьмеричную цифру третьего и четвертого разрядов соответственно восьмеричного кода клетки.
| | | |
| | |
|
| Рисунок 8 Пример минимизации булевой функции 7 переменных
| |
Для 12 <n£ 18 симметричная таблица строится аналогично предыдущей, но теперь базовой клеткой является таблица из 212 клеток, а их нумерация той же последовательностью восьмеричных цифр теперь соответствует пятому и шестому разрядам восьмеричного кода клетки.
Прямые и инверсные вхождения переменных в таблице записывают тройками: младшие три переменные записывают снизу, следующие три - справа, следующие три - снизу, следующие три -справа, и так далее. Для обеспечения «склеиваемости» соседних клеток "больших" таблиц нумерация в каждой следующей "большой " клетке должна быть зеркальной по отношению к предыдущей.
Составление карты для n=7 показано на Рис. 8. Каждая клетка нумеруется тремя восьмеричными цифрами, обозначаемыми (y3y2y1). В таблице обозначены основные оси симметрии и два интервала, полученные в результате склеивания 1 и *. Им соответствует МДНФ= x2 x3 Ú x1`x3.
Минимизация булевых функций большего числа переменных производится с использованием изложенных принципов.
Метод таблиц различий
Метод таблиц различий применяется для минимизации слабо определенных функций произвольной арности, заданных множествами N1 и N0. В отличие от метода симметричных таблиц этот метод является алгоритмизируемым, т.е. можно построить программу минимизации булевых функций. Как и в случае метода Квайна, результатом работы рассматриваемого метода является множество максимальных интервалов функции. Для построения МДНФ потребуется построение импликантной таблицы.
Число строк таблицы различий равно числу единичных интервалов минимизируемой функции. Число столбцов таблицы равно числу нулевых интервалов функции. В ячейках левого столбца таблицы различий, начиная со второй строки, записывают транспонированный вектор, обозначающий один из единичных интервалов функции. В ячейках верхней строки таблицы различий записывают (начиная со второго столбца слева) значения разрядов нулевых интервалов функции.
Векторы, обозначающие интервалы N1 и N0, определяют значения вершин единичного n-мерного куба кортежами вида (xn, xn-1,…,x2,x1), где переменные xi принимают значения в множестве {0,1,-}. Каждая из строк таблицы различий содержит n подстрок, соответствующих индексам переменных в обозначении интервала, Таблица 2. На пересечении i-й строки и j-го столбца записывают вектор, значения разрядов которого определяются применением к одноименным разрядам единичного и нулевого интервалов модифицированной операции суммы по модулю 2, представленной Табл. 1.
Таблица 1 Модифицированная сумма mod2
x0
x1
| 0
| 1
| -
|
0
| 0
| 1
| 0
|
1
| 1
| 0
| 0
|
-
| 0
| 0
| 0
|
Единица в столбце таблицы различий означает, что значение соответствующей переменной в нулевом и единичном интервалах различны. Следовательно, данная переменная может войти в максимальный интервал данной функции с тем значением, которое эта переменная принимает в множестве N1. Если какой-либо столбец таблицы содержит более одной единицы, это означает, что в обозначение максимального интервала может войти любая из переменных, соответствующих этим единицам, со значением, равным значению этой переменной в единичном интервале.
Таблица 2 Применение метода таблиц различий
| Интервалы нулевой области
| Допустимые импликанты
|
Имена переменных
| Интервалы единичной области
|
1-10-
|
1-001
|
0-100
|
|
x5
x4
x3
x2
x1
| -
0
-
1
0
| 0
0
0
1
0
| 0
0
0
1
1
| 0
0
0
1
0
|
|
x5
x4
x3
x2
x1
| 1
0
-
1
1
| 0
0
0
1
0
| 0
0
0
1
0
| 1
0
0
1
1
|
|
x5
x4
x3
x2
x1
| 0
-
1
0
1
| 1
0
0
0
0
| 1
0
1
0
0
| 0
0
0
0
1
|
|
В последнем (правом) столбце таблицы различий записывают формулу вида КНФ, длина которой равна числу нулевых интервалов, и каждый дизъюнкт в которой определяется множеством переменных, отмеченных единицами в каждом столбце данной строки таблицы. Полученную КНФ затем преобразуют к ДНФ. Каждая элементарная конъюнкция, полученная при этом, определяет один из допустимых простых импликантов функции.
Когда все строки таблицы обработаны и получены все допустимые простые импликанты функции, с помощью импликантной таблицы определяют все неприводимые покрытия данной функции с последующим выбором среди них тех, которые имеют минимальный суммарный ранг.
Если среди полученных неприводимых покрытий имеется более одного покрытия с минимальным суммарным рангом, это означает, что данная функция имеет такое же число МДНФ.
Рассмотрим пример минимизации частично определенной функции методом таблиц различий. Пусть 5-местная частично определенная функция задана указанием множеств единичных и нулевых вершин:
В последнем столбце Табл.2 перечислены все претенденты на роль простых импликант. Им соответствуют максимальные интервалы функции.
Для определения МДНФ построим импликантную таблицу, в которой столбцы будут именоваться именами единичных интервалов, которыми задана функция, а строки – именами максимальных интервалов, соответствующих простым импликантам, полученным в Табл. 2. На пересечении i-й строки и j-го столбца импликантной таблицы записывают 1, если j-й единичный интервал является подмножеством i-го максимального интервала, и прочерк в противном случае, Табл 3.
Таблица 3 Импликантная таблица
N1
Imax
| (-0-10)
| (10-11)
| (0-101)
|
(---1-)
| 1
| 1
| -
|
(0---1)
| -
| -
| 1
|
Каждый столбец Табл. 3 содержит по одной единице. Следовательно, найденное множество максимальных интервалов образует покрытие множества N1. Все интервалы являются обязательными. Следовательно, оба импликанта, соответствующие этим максимальным интервалам, должны войти в единственную МДНФ. Таким образом, решением данной задачи является
МДНФ= .