Способ минимизации дизъюнктивных нормальных форм булевых функций

Автор: Песков Роман Николаевич, Щенников Владимир Николаевич

Журнал: Инженерные технологии и системы @vestnik-mrsu

Рубрика: Алгебра и геометрия

Статья в выпуске: 4, 2010 года.

Бесплатный доступ

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

Короткий адрес: https://sciup.org/14719576

IDR: 14719576

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



СПОСОБ МИНИМИЗАЦИИДИЗЪЮНКТИВНЫХ НОРМАЛЬНЫХ ФОРМ БУЛЕВЫХ ФУНКЦИЙ

Р. Н, Песков, В. Н. Щенников

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

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

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

Определение 1. Булева функция д = s(ti, ...дЖп) называется импликантой булевой функции / = Дш,..., тД, если па любом наборе значений переменных xi,..., хп, на котором значение функции д равно единице, значение функции / также равно единице.

Определение 2. Простой импликантой функции / называется всякое элементарное произведениед ~ х^х^.-.хц, являющееся им-пликаптой булевой функции /, и такое, что никакая его собственная часть (т. е. произведение, получающееся из произведения д вы брасыванием одного или нескольких сомножителей iij) уже не является импликантой функции /.

Для поиска простых импликант в работе [2] предлагается использовать алгоритм Куайна-Мак-Класки, который является наиболее распространенным. В настоящее время существует способ разложения булевой функции в виде декомпозиционного дерева [4}, который имеет меньшую временную сложность, чем алгоритм Куайна-Мак-Класки.

Декомпозиция есть разбиение функции / на две функции Д и ft, которые определяются положительным и отрицательным значениями входной переменной т,:

= /(^-1з ■ ■ - з т,—1, 0, Жг-^1, - - - , Zfc)

D1' ■ W

/1 f^$h • ■ ■ ,Xi-l, I,Xt+l, - . - , Тй).

Декомпозиция DtDj - это комбинация Dt-й и Dj-й декомпозиции:

/оО    /(^-11 * * ■ ; Xi — 11 б, Xj-^. 1, . . . , Tj —1,0, X j + 1, - ■ ■ , Zfc )

Zpi    / (^11 ■ ■ ■ > -®i — li6,Z^i,...,X,'— 1,1, 21j+i, . . . , Zk)

DiDj :                                                                          (2)

/10      J (*^11 ■ ■ ■ з Ti —1, 1, Zj-|-1, . . , , Xj— 1,0, Zj-|-1, . , . , Xfc)

/11      J ("^ 1, ■ • ■ f Xi — 1, 1, Zj-f-1, . . . , Tj — 1, 1, Tja 1 r ■ ■ ■ з Xk )-

Полное описание алгоритма приводится в [4]. Здесь используем его только для опреде ления всех простых импликант в описываемом примере.

Пусть функция / четырех переменных задана последовательностью нулей и единиц своих значений: 1101010110001100. Будем также получать функции у,, = /о A f{,i = 1,4. Первый уровень дерева будут составлять декомпозиции Di, D2, Ds, D4.

11010101

11011000

11011011

10001010

Di :      Л1О0О1100; О2

:     Л01011100; j

Оз :      Л01010000;

04 :     ЛИ 110010.

gi = 10000100

92 = 01011000

дз = 01010000

94 = 10000010

Второй уровень:

1000

1001

1000

D12 :

Л0100; /Да :

Л0000; П14 :

лоощ

#12 -

= 0000        913

= 0000       914

= 0000

оно

0010

0000

^23 :

Л0100; Ю24 :

Л1100; Р34 :

л иоо.

#23 :

= 0100       924

= 0000        9з4

= 0000

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

По лемме 3.1 из [4]: если д^а^, ...^а^ = 1, то р = х^Т^-'-Х^ импликанта функции /, где

* х Xi, at = 0.

Тогда, учитывая, что часть импликант первого уровня будет поглощена импликан-тами второго уровня, для примера, описанного выше, получим 6 простых импликант: Х2Ж3Х4, Х2Х3Х4,11X3X4, Х1Х4,Х1Т2Хз, X1X2X3.

После того как все простые импликанты были определены, необходимо построить им пликантную таблицу. Импликаптная таблица функции / представляет собой прямоугольную таблицу, строки которой обозначаются различными простыми импликантами функции f, а столбцы - наборами значений переменных, па которых функция обращается в едшЕицу (копституентами единицы). Правило заполнения импликантной таблицы следующее: на пересечении р-й строки и А'-т столбца импликантной таблицы тогда и только тогда ставится метка, когда импликанта р составляет некоторую часть копституенты К (возможно совпадающую со всей конституеп-той).

Для примера, описанного выше, импли-кантная матрица имеет вид:

=1=2Т374

i1^2i:3z:4

х^^з *з®4

2,12=3=4

Т,Т2тЗ=4

Ti=2=3x4

ZL^З^З®^

T I ЕЕ 2 т 3^4

= 1=4

*

*

*

*

=1=2=’з

*

+

=1=3®4

*

*

=2=»=4

*

*

T2S3X4

*

*

Ti^^a

*

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

$ 1 з^2 ^3^4

ElE2i:gT4

Щ£ Я12Я!5ЯГ4

я^З^з

*

*

^1^3 ^4

*

*

112^3*4

* -

^2 ^3^4

*

*

$1$2$3

*

На втором этапе необходимо из простых импликант выбрать минимальное их количество так, чтобы покрывались все конституен-ты. Из таблицы получим систему ограничений

У^ ари, 5 Д J — 1? 2,..., t, (3) »=1

где коэффициент а^ равен 1 или 0 в зависимости от того, стоит ли метка в j-м столбце г-й строке импликантной таблицы, а и, соответствуют простым импликантам ре Для получения кратчайшей ДНФ минимизируется линейная форма

при условии системы ограничений (3) и что щ равно 1 или 0.

Для рассматриваемого примера система (3) и форма L будут следующие:

' U4 + Us > 1, U2 + U4 > 1, Ul + U2 5 Ij

, щ 4- из > 1.

L = ui + иг + из + ii4 + us-

Таким образом, получается задача целочисленного линейного программирования. В математическом пакете Mathematica с помощью функции LinearProgramming находим решение: ui — 1, иг = 0, из = 0, «4 = 1, us = 0. Отсюда следует, что в кратчайшую ДНФ будут входить первая и четвертая им-пликанты. Добавив их к существенной им-пликаите, определенной ранее, можно получить минимальную ДНФ:

271^2^3 V Я2Т3Т4 V Т1Т4.

В комментариях к [2] указано, что импли-кантная таблица будет иметь размеры поряд-ка т х t - 2" х 2" - ^1^(1-^ 0еlf

£ —> 0 при п -> оо [4]. Поэтому для функций большого количества переменных может потребоваться огромное количество вычислений. В таких случаях предлагается воспользоваться расчленением ограничений.

Пусть дана система ограничений (1): Ли > 1. Представим матрицу коэффициентов в виде

Л12

Л 22

Л32

Л1з

Л23

Лзз

Введем в рассмотрение матрицы Ai и Аг, т. е.

/ Ац А12 Y л _ / Л 22 Азз \ У А21 А22 / 2 \ ^32 А33 у

Матрица Ло = А22 ■

Получим две задачи линейного программирования:

Li = У^ u^ -> min i=l

Aiu(1) > 1

0 < ж(1) < 1

L2 = у^ ^F^ ~*m™

Аги^ > 1

0 <  xW < 1.

Решив их, найдем L — Li + L^.

Переставляя строки в импликантной таблице таким образом, чтобы в матрицах А13 и Л31 было больше нулевых элементов, можно добиться, чтобы коэффициент оптимальности 5 — 7 был ближе к 1.

Список литературы Способ минимизации дизъюнктивных нормальных форм булевых функций

  • Глушков В. М. Синтез цифровых автоматов/В. М. Глушков. -М. Физматгиз, 1962. -С. 264-267.
  • Майстрова Т. Л. Линейное программирование и задача минимизации нормальных форм булевых функций/Т. Л. Майстрова//Проблемы передачи информации: Сб. -М.: АН СССР, 1962. -Вып. 12. -С. 5-15.
  • Сапоженко А. А. Минимизация булевых функций в классе дизъюнктивных нормальных форм/А. А. Сапоженко, И. П. Чухров//Итоги науки и техники: Сб. -М.: ВИНИТИ, 1987. -Т. 25. -С. 68-116.
  • Friedel М. The Decomposition Tree for analyses of Boolean functions/M. Friedel, S. Nikolajewa, T. Wilhelm//Math. Struct, in Comp. Science. -2008. -Vol. 18. -P. 411-426.
Статья научная