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

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

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

Рубрика: Вопросы прикладной математики

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

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

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

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

IDR: 14719893

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

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

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

Рассмотрим, например функцию, заданную следующей последовательностью

01x111x011x010x0, где «х» означает, что функция на данном наборе значений не определена.

Доопределим данную функцию нулями [2]. Найдем минимальную дизъюнктивную нормальную форму (ДНФ). Сначала необходимо определить импликанты заданной булевой функции. Функция h = h ( Х р ..., хп ) является импликантой функции f = f ( X p ..., хп ) , если h принимает значение единицы лишь в тех точках (не обязательно во всех), в кото

рых значения f равны единице или не определены. Иначе говорят, что h заключает в себе f и записывают: h f .

Будем проводить минимизацию с помощью дерева декомпозиций [3]. Метод заключается в построении дерева всех 2к возможных декомпозиций функции f от к переменных и применении оператора л в каждом узле дерева. Нулевой уровень дерева — де композиция Dq = f. Первый уровень дерева будут составлять декомпозиции D4, D2, D3,

D 4 .

04044400

01011100

D 4

:      v 44004000 ; D2 :

v 11001000 ;

д4 = 04004000

01111110

д2 = 01001000

00101010

D 3

:     v 01000000; D 4

:     v 11101000

д3 = 01000000

д4 = 00101000

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

0400

0440

D42 :       v 4000 ; D13 :       v

0000 :

g 42   = 0000         g 43 =

0000

0040

0110

D44 :       v 4000 ; D23 :       v

0000

g 44 = 0000        g 23 =

0000

0010

0110

D24 :       V 1000; D 34 :       v

0000

g 24 = 00 00        g 34 =

0000

При последующем разложении все функции д будут равны QQ, поэтому нет необходимости построения третьего уровня. Получим 7 простых импликант: Х 2 Х 3 Х 4 , х 2 х 3 х 4 , Х 4 Х 3 Х 4 > ^ 4 X 3 X 4 , Х 4 Х 2 Х 4 , Х 2 Х 3 Х 4 , Х 2 Х 3 Х 4 .

Построим имплицентную таблицу:

0001

0011

0100

0101

1000

1001

1100

x 2 X 3 X 4

*

*

x 2 X 3 X 4

*

*

Х 4 Х 3 Х 4

*

*

Х 4 Х 3 Х 4

*

*

Х 4 Х 2 Х 4

*

*

X 2 X 3 X 4

*

*

Х 2 Х 3 Х 4

*

*

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

0100

0101

1000

1001

1100

X 2 X 3 X 4

*

X 2 X 3 X 4

*

*

Х 4 Х 3 Х 4

*

Х 4 Х 3 Х 4

*

*

Х 2 Х 3 Х 4

*

*

Х 2 Х 3 Х 4

*

*

Из таблицы получим систему ограничений:

2 + 5 1

3 + 5 1.

^ 4 + g 1

1 + g 1,

2 + 4 1>

L и + и 2 + U 3 + U 4 + U g + U g .

Решив соответствующую задачу целочисленного программирования, определим, что в минимальную КНФ войдут 4-я, 5-я и g-я им-пликанты. Добавим исключенную ранее существенную импликанту и в итоге минимальная ДНФ будет иметь вид:

^ 1 ^ 3 ^ 4 V 5 2 X 3 X 4 V 5 2 X 3 X 4 V Х 1 Х 2 Х 4 .

Теперь доопределим исходную функцию единицами [2] и построим дерево декомпозиций. Нулевой уровень дерева — декомпозиция D q = f. Первый уровень дерева будут составлять декомпозиции D \ , D 2 , D 3 , D 4 :

01111110             01111110

D1 :      v 11101010 ; D2 : v 11101010 ;

gv = 01101010       g2 = 01101010

01111110

01111111

D 3 :     v 11101010; D 4 : v

11101000

g3 = 01101010       g4 =

01101000

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

0110

0110

D 12 :        v 1010 ; D 13 :

v 1010 ;

g 12 = 0010         gV 3

= 0010

0111

0110

D 14 :       v 1000 ; D 23 :

v 1010 ;

g 14 = 0000         g 23

= 0010

0111

0110

D 24 :      v 1000; D 34 :

v 1000 .

g 24 = 0000         g 34

= 0000

Получим следующие простые импликан-ты: Х 2 Х 3 Х 4 , 5 3 X 4 , ^ 2 ^ 4 , 5 1 5 3 5 4 , 5 1 X 4 , 5 1 ^ 2 ^ 4 , 5 1 5 2 5 3 , 5 1 5 2 ^ 3 , 5 1 5 2 ^ 3 .

Имплицентная таблица примет вид:

0001

0011

0100

0101

1000

1001

1100

5 2 5 3 5 4

*

*

5 3 5 4

5 2 54

*

*

X 1 X 3 X 4

*

*

* 1 * 4

*

*

* 1 * 2 * 4

*

*

5 1 5 2 5 3

*

* 1 5 2 5 3

*

*

5 1 5 2 5 3

*

*

2 + 4 + g 1’

g + у 1’

<

4 + g

5 + д

> 1

> 1’

1 + д 1.

3 + 5 > 1

L — М1 + М 2 + М 3 + М 4 + М 5 + M g + М у + M g + М д .

Решив соответствующую задачу целочисленного программирования, определим, что минимальная ДНФ будет иметь вид:

5 1 5 2 5 4 V 5 1 5 2 5 3 V 5 1 5 3 5 3 V 5 2 5 4 .

Таким образом, более простую минимальную ДНФ можно получить, если доопределить функцию единицами на всех неопределенных наборах. Из полученных данным способом импликант в минимальную форму необходимо включить только импли-

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

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

Проверим, является ли частично определенная булева функция 01x111x011x010x0, рассматриваемая выше, симметричной. Как доказано в работе [2], функция будет симметричной, если декомпозиции первого уровня будут одинаковы. Для рассматриваемой выше функции декомпозиции первого уров ня следующие:

01x111x0       01x111x0

D :           ; D :           ;

1 11x010x0    2 11x010x0

D3 :              ;

x1x0x0x0

Oxlxlxlx

Da :

4 11101000

Можно заметить, что декомпозиции будут одинаковыми, а значит, и функция будет симметричной, если ее доопределить следующим образом: 0111111011101000. В виде вектора ее можно представить так: (0, 1, 1, 0, 0). Несмотря на то что ее ДНФ будет содержать большее число букв, чем доопределен ная полностью единицами, запись в виде вектора будет даже меньше, чем в виде последовательности нулей и единиц собственных значений.

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

  • Глушков В. М. Синтез цифровых автоматов/В. М. Глушков. М.: Физматгиз, 1962. С. 264 267.
  • Самофалов К. Г. Прикладная теория цифровых автоматов/К. Г. Самофалов, А. М. Романке-вич, В. Н. Валуйский, Ю. С. Каневский [и др.]. Киев: Вища Школа, 1987. С. 210 211.
  • Friedel M. The Decomposition Tree for analyses of Boolean functions/M. Friedel, S. Niko-lajewa, T. Wilhelm//Math. Struct. in Comp. Science. 2008. Vol. 18. P. 411 426.
Статья научная