Научная статья на тему 'Применение аппарата покрытий троичных матриц для поиска разбиения множества аргументов при декомпозиции булевых функций'

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

CC BY
240
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДЕКОМПОЗИЦИЯ БУЛЕВЫХ ФУНКЦИЙ / КОМПАКТНАЯ ТАБЛИЦА / ПОКРЫТИЕ ТРОИЧНОЙ МАТРИЦЫ / DECOMPOSITION OF BOOLEAN FUNCTIONS / COMPACT TABLE / TERNARY MATRIX COVER

Аннотация научной статьи по математике, автор научной работы — Поттосин Юрий Васильевич, Шестаков Евгений Анатольевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Поттосин Юрий Васильевич, Шестаков Евгений Анатольевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The problem of a series two-block disjoint decomposition of a system of completely specified Boolean functions is considered. A method to search for a partition of the set of arguments into subsets of bound and free arguments is suggested. The method is based on using the ternary matrix cover approach.

Текст научной работы на тему «Применение аппарата покрытий троичных матриц для поиска разбиения множества аргументов при декомпозиции булевых функций»

ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА

2011

Управление, вычислительная техника и информатика

№ 3(16)

УДК 519.7

Ю.В. Поттосин, Е.А. Шестаков

ПРИМЕНЕНИЕ АППАРАТА ПОКРЫТИИ ТРОИЧНЫХ МАТРИЦ ДЛЯ ПОИСКА РАЗБИЕНИЯ МНОЖЕСТВА АРГУМЕНТОВ ПРИ ДЕКОМПОЗИЦИИ БУЛЕВЫХ ФУНКЦИЙ

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

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

Задача декомпозиции булевых функций является одной из важных и сложных задач из области логического проектирования, успешное решение которой непосредственно влияет на качество и стоимость проектируемых цифровых устройств. Поэтому поиск новых эффективных методов решения этой задачи привлекает многих исследователей. Как показывает обзор [1], на данную тему написано большое количество статей. В данной работе рассматривается задача декомпозиции системы булевых функций в следующей постановке. Задана система полностью определенных булевых функций у = /(х), где у = (уьУ2, •••,Ут), х = (х1, Х2, ..., хп), /(х) = (/1(х),/2(х), ...,/т(х)). Требуется найти суперпозицию у = ф (ы, г2), н = g (г1), где z1 и г2 - векторные переменные, компонентами которых служат соответственно переменные из подмножеств 21 и 22, образующих разбиение множества Х = {х1, х2, ..., хп}. При этом число компонент векторной переменной н должно быть меньше, чем у z1. Такой вид декомпозиции назван двухблочной разделительной декомпозицией [2]. Обычно переменные из 21 называют связанными, а переменные из 22 - свободными. В подавляющем большинстве публикаций, рассматривающих данную задачу, подмножества 21 и 22 считаются заданными. Вопросу поиска разбиения {21,22}, при котором данная задача имеет решение, посвящено немного публикаций. Среди работ, где рассматривается данный вопрос, можно назвать работы [1, 3 - 5]. Ниже предлагается метод поиска разбиения {21, 2$ множества аргументов Х, который основан на использовании аппарата покрытий троичной матрицы [6]. Для этого привлекается также понятие компактной таблицы [6], которая так же, как и карта Карно, является двумерной таблицей, но представляющей не только одну функцию, но и систему функций в более сжатом виде. По компактной таблице довольно просто определяется существование решения задачи декомпозиции для заданной системы функций и, если такое решение существует, легко находится соответствующая суперпозиция функций.

1. Основные определения. Постановка задачи

Пусть система полностью определенных булевых функций у = / (х) задана матрицами и, V, которые являются матричным представлением системы дизъюнктивных нормальных форм (ДНФ) заданных функций [2]. Матрица и является

троичной матрицей размерности I х п, где п - число элементарных конъюнкций в заданных ДНФ. Столбцы матрицы и помечены переменными х1, х2, ... , хп, а строки представляют упомянутые элементарные конъюнкции (интервалы пространства переменных х1, х2, ... , хп). Матрица V- булева, ее размерность I х т, а столбцы помечены переменными у1, у2, ... , ут. Единицы в этих столбцах указывают элементарные конъюнкции из заданных ДНФ. Строка и троичной матрицы и поглощает булев вектор а, если а принадлежит интервалу, представляемому строкой и. Обозначим через 21 и 22 некоторые подмножества множества Х = {х1, х2, ..., хп} таких, что X = 21 и 22 и 21 п 22 = 0. Через z1 и z2 обозначим векторные переменные, компонентами которых служат соответственно переменные из подмножеств

21, 22

Рассматриваемая задача декомпозиции ставится следующим образом: для системы полностью определенных булевых функций у = / (х) требуется найти суперпозицию у = ф (н, z2), н = g (z1), в которой число компонент векторной переменной н должно быть меньше, чем число компонент переменной z1. Основное внимание в данной работе уделено поиску таких подмножеств 21 и 22, при которых данная задача может иметь решение.

2. Карта покрытия, компактная таблица

Покрытием п некоторого множества Ь назовем любую совокупность различных подмножеств множества Ь, объединение которых совпадает с множеством Ь. Элементами (блоками) покрытия могут быть как пустое множество, так и само множество Ь. Пусть Ь = {1, 2, ... , 1} - множество номеров строк троичной матрицы и. Покрытие п множества Ь назовем покрытием троичной матрицы и, если каждому значению х* векторной переменной х в покрытии п соответствует блок, содержащий номера всех тех и только тех строк матрицы и, которые поглощают х*. Значению х*, не поглощаемому ни одной строкой матрицы и, соответствует блок, представляющий собой пустое множество 0. Другие подмножества множества Ь не присутствуют в п.

Пусть /(х*, и) - множество номеров тех строк троичной матрицы и, которые поглощают булев вектор х*. Для каждого блока п,- покрытия п определим булеву функцию п/х), положив, что для любого х* е {0,1}п выполняется п/х*) = 1, если /(х*, и) = п/, и п/х*) = 0 в противном случае.

Очевидно, покрытие п единственно для конкретной матрицы и. Дизъюнкция всех булевых функций, приписанных блокам покрытия, равна логической единице, и конъюнкция любых двух булевых функций, приписанных различным блокам покрытия, равна логическому нулю [6], т. е. эти функции взаимно ортогональны.

Пусть для некоторых матриц и1 и и2 с общим множеством номеров строк Ь

заданы соответственно покрытия п1 и п2. Сформируем множество X = {п1,- п п2/ / 112212 12 п , е п , п / е п , п ,(х) л п /(х) Ф 0}. Для каждого элемента X / = п , п п / множества

X положим Х/х) = п1,(х) л п2(х). Образуем покрытие п ' взяв в качестве его блоков все различные элементы множества X. Для всякого блока п '¡. покрытия п ' определим булеву функцию п 'Хх) как дизъюнкцию всех булевых функций, приписанных тем элементам множества X, которые равны блоку п ',,. Покрытие п ' есть произведение покрытий п1 и п2 (п ' = п1 х п2). Операция произведения дает возможность предложить простой способ вычисления покрытия для троичной матрицы и [6]. Этот способ состоит в получении произведения тривиальных покрытий всех одностолбцовых матриц, представляющих столбцы матрицы и.

Определим операцию v(лI■, V) над строками матрицы V, результатом которой является вектор у* (у* = v(лI, V)), получаемый покомпонентной дизъюнкцией строк матрицы V, номера которых входят в блок п,. Если п, = 0, то все компоненты вектора у* имеют значение 0. В работе [6] показано, что если п,(х*) = 1, то Ах*) = у* = v(лI■, V).

Удобным способом нахождения покрытия троичной матрицы и при небольшом числе аргументов является способ, использующий карту покрытия. Карта покрытия аналогична карте Карно. Разница состоит в том, что в любой клетке карты Карно, соответствующей вектору х*, вместо значения у* = А(х*) = v(лI, V) помещается множество л,- = ґ(х*, и).

Пример 1. На рис. 1 представлена некоторая матрица и и ее карта покрытия. Само покрытие имеет вид п = {п1 = 0, п2 = {1}, п3 = {2}, п4 = {3}, п5 = {1, 2}}. По карте покрытия, как по карте Карно, легко получить ДНФ булевых функций Лі(х) = х1 х4 V хі х3 V х2 х4 V х2 х3, п2(х) = хі х2 х3 х4, п3(х) = хі х2 х3 х4, п4(х) = хі х2, п5(х) = х1 х2 х3 х4.

и =

X х2 х3 х

" 0 - 0 1

- 1 0 1

1 0 - -

х2

х1

х4

хз

0 0 0 1

0 0 0 1,2

0 0 0 2

3 3 3 3

Рис. 1. Пример карты покрытия троичной матрицы

Пусть пара матриц и, V задает систему полностью определенных булевых функций у = А(х) и пусть матрица и1 составлена из столбцов матрицы и, помеченных переменными из множества 21 и матрица и2 - из столбцов, помеченных переменными из множества 22. Покрытиями матриц и1 и и2 являются соответственно П = {п ь П 2, ... , П г} и П = {п ь п 2, ... , п ,}. Построим по покрытиям п и п2 таблицу М. Столбцам этой таблицы припишем блоки п\, п1^ ... , п1,. и булевы функции п1^), п1^), ... , п^гО, а строкам - блоки п2ь п22, ... , п2, и булевы функции п21(г2), п22(г2), ... , п2/г2). На пересечении /'-го столбца (1 < / < г) и у-й строки (1 <у < ,) таблицы М поместим значение у* = v(п1/■ п п2, V). Таблица М является частным случаем компактной таблицы [6]. Она задает систему булевых функций у = Ах) следующим образом: на любом наборе аргументов х*, обращающем функцию п1/(г1) л п2у(г2) в единицу, значением векторной булевой функции А(х*) является v(п1/■ п п2у, V). Компактная таблица имеет ту же форму, что и известная карта декомпозиции [1], с той лишь разницей, что строкам и столбцам карты декомпозиции соответствуют наборы значений аргументов, а строкам и столбцам компактной таблицы - попарно непересекающиеся множества таких наборов.

Имея компактную таблицу для системы функций у = А (х), легко построить искомые системы у = ф(и>, г2) и п> = g (г1). Столбцы компактной таблицы кодируются двоичными кодами, причем одинаковые столбцы могут иметь одинаковые коды. Длина кода равна Г ^2 г '1 , где г' - число различных столбцов компактной таблицы и Га! - наименьшее целое число, не меньшее а. Таким образом, определена система функций п> = g (г1). Значением векторной переменной п> при любом набо-

ре значений векторной переменной ц, обращающем функцию п1;^) в единицу, является код /-го столбца (1 < / < г). Естественно, что если длина кода не меньше длины вектора г1, то при данном разбиении {21, 22} множества аргументов Х задача не имеет решения. В противном случае имеющуюся компактную таблицу, столбцам которой припишем значения переменной п>, можно считать формой представления другой искомой системы функций у = ф (н>, г2). Значением векторной переменной у при значении переменной н>, приписанном /-му столбцу (1 < / < г), и при любом значении переменной г2, обращающем функцию п2(г2) в единицу (1 < ] < я), является вектор, присутствующий в компактной таблице на пересечении /-го столбца и]-й строки.

Пример 2. Пусть система полностью определенных булевых функций у = / (х) задана парой матриц и, V:

*1 *2 *3 *4 *5 У1 У2

"0 0 0 1 -" 1 "1 0" 1

0 1 0 0 - 2 1 0 2

0 1 - 0 1 3, Г= 1 0 3

0 - 0 0 - 4 0 1 4

0 0 - 0 1 5 0 1 5

1 1 0 1 - 6 0 1 6

1 1 - 1 1 _ 7 0 1_ 7

При разбиении множества аргументов на подмножества 21 = {хь х2, х3} и 22 = {х4, х5} получим следующие матрицы:

*1 *2 *3 *4 *5

"0 0 0" 1 "1 -" 1

0 1 0 2 0 - 2

0 1 - 3, Ц-2 = 0 1 3

0 - 0 4 2 0 - 4

0 0 - 5 0 1 5

1 1 0 6 1 - 6

1 1 - 7 1 1 7

Для определения длины векторной переменной п в суперпозиции у = ф П, г2), п = g (гі), где г1 = (хь х2, х3) и г2 = (х4, х5), находим покрытия троичных матриц и1 и и2: п1 = {0, {3}, {5}, {7}, {6, 7}, {1, 4, 5}, {2, 3, 4}} и п2 = {{1, 6}, {2, 4}, {1, 6, 7}, {2, 3, 4, 5}}. Соответствующая компактная таблица представлена в виде табл. 1, которая имеет семь различных столбцов. Ясно, что при заданных множествах 21 и 22 данная задача не имеет решения, поскольку для кодирования столбцов компактной таблицы значениями вектора п требуется три переменных, что не меньше длины вектора г1.

Т аблица 1

Компактная таблица для системы функций из примера 1

0 3 5 7 6,7 1,4,5 2,3,4

1,6 00 00 00 00 01 10 00

2,4 00 00 00 00 01 01 11

1,6,7 00 00 00 01 01 10 00

2,3,4,5 00 10 01 00 00 11 11

3. Поиск разбиения множества аргументов

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

Ранее было сказано, что получить покрытие троичной матрицы и можно, используя операцию произведения тривиальных покрытий всех одностолбцовых матриц, представляющих столбцы матрицы и. Покрытие любого столбца троичной матрицы состоит ровно из двух блоков: один из них содержит номера одноэлементных строк, состоящих из нулей и знаков «-», другой - номера строк, состоящих из единиц и знаков «-». Если столбец состоит из одних нулей или из одних единиц, то один из блоков покрытия представляет собой пустое множество. Таким образом, если матрица и состоит из п столбцов, то ее покрытие п можно получить как п = п1 х п2 х ... х пп, где п/ - покрытие /-го столбца (1 < / < п).

Пусть требуется найти небольшое количество свободных переменных, составляющих множество 22 (тогда множество связанных переменных 21 определится как 21 = Х \ 22). Для этого используем операцию деления покрытия троичной матрицы на покрытие одного ее столбца.

Определим операцию деления покрытия п троичной матрицы и на покрытие п/ ее /-го столбца как п / п/ = п1 х п2 х ... х п/ - 1 х п/ + 1 х ... х пп. Эту операцию легко выполнить с помощью карты покрытия, которая, так же как карта Карно, имеет оси симметрии, связанные с переменными булева пространства, представляемого данной картой [2]. Чтобы преобразовать карту покрытия матрицы и в карту покрытия матрицы, получаемой из и удалением /-го столбца, надо совместить попарно элементы, симметричные относительно осей, соответствующих переменной х, и значением каждого из полученных элементов карты сделать объединение множеств из совмещаемых элементов. Полученная карта покрытия представит искомое покрытие.

Пример 3. Карта покрытия троичной матрицы и из примера 2 представлена на рис. 2. Покрытием матрицы и является п = {0, {1}, {3}, {4}, {5}, {6}, {7}, {2, 4}, {4, 5}, {6, 7}, {2, 3, 4}}. Деление покрытия п на покрытие столбца х1 не меняет п, что видно из карты покрытия, изображенной на рис. 3. Преобразовав эту карту описанным способом по оси симметрии, связанной с переменной х2, получим {0, {7}, {1, 6}, {2, 4}, {3, 5}, {1, 6, 7}, {2, 3, 4, 5}} как результат деления п на покрытия столбцов х1 и х2 (см. рис. 4).

--------------------------------------- .'’5

х4

х3

4 0 0 1 1 0 5 4,5

2,4 0 0 0 0 0 3 2,3,4

0 0 0 6 6,7 7 0 0

0 0 0 0 0 0 0 0

х2

х1

Рис. 2. Карта покрытия троичной матрицы и из примера 2

Продолжение примера 3. Сделаем попытку получить декомпозицию заданной системы функций в виде у = ф (н>, г2), н = g(21) при 21 = {х3, х4, х5},

22 = {х1, х2} (г1 = (х3, х4, х5), г2 = (х1, х2)). Соответствующая компактная таблица

(табл. 2) имеет пять различных столбцов, и так же, как в примере 2, задача декомпозиции для выбранного разбиения аргументов не имеет решения.

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

х5

х.

4 0 0 1 1 0 5 4,5

2,4 0 0 6 6,7 7 3 2,3,4

х2

Рис. 3. Карта покрытия, полученного от деления п на покрытие столбца х!

х5

х4

___________ _____________________ х3________

| 2,4 | 0 I 0 I 1,6 I 1,6,7 | 7 I 3,5 I 2,3,4,5 |

Рис. 4. Карта покрытия, полученного от деления п на покрытия столбцов х[ и х2

Таблица 2 Компактная таблица для разбиения из примера 3

0 7 1,6 2,4 3,5 1,6,7 2,3,4,5

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

0 00 00 00 00 00 00 00

6,7 00 01 01 00 00 01 00

1,4,5 00 00 10 01 01 10 01

2,3,4 00 00 00 11 10 00 11

Пример 4. Пусть задана система полностью определенных булевых функций из примера 2. Выполняя лексикографический перебор вариантов множества 22, состоящего из двух переменных, начиная с варианта из примера 3, убеждаемся, что первым подходящим вариантом является, 21 = {х1, х3, х5}, 22 = {х2, х4}. Для этого варианта из карты покрытия на рис. 2 получаем карту покрытия, изображенную на рис. 5, а из нее - карту на рис. 6.

х5

х4

х.

2,4 0 0 1 1 0 3,5 2,3,4,5

0 0 0 6 6,7 7 0 0

х1

Рис. 5. Карта покрытия, полученного от деления п на покрытие столбца х2

х5

х____________

1,2,4 0 3,5 1,2,3,4,5

6 0 7 6,7

х2

Рис. 6. Карта покрытия, полученного от деления п на покрытия столбцов х2 и х4

Таблица 3 Компактная таблица для разбиения из примера 4

0 6 7 3,5 6,7 1,2,4 1,2,3,4,5

1 00 00 00 00 00 10 10

4,5 00 00 00 01 00 01 01

6,7 00 01 01 00 01 00 00

2,3,4 00 00 00 10 00 11 11

00 01 01 10 01 11 11

Компактная таблица для покрытий п1 = {0, {6}, {7}, {3, 5}, {6, 7}, {1, 2, 4}, {1, 2, 3, 4, 5}} и п2 = {{1}, {4, 5}, {6, 7}, {2, 3, 4}} представлена в виде табл. 3, которая имеет четыре различных столбца, для кодирования которых достаточно двух переменных. Коды столбцов показаны снизу таблицы.

Для построения систем функций у = ф (н>, г2) и н = g (г1), являющихся решением задачи декомпозиции, требуется получить функции, связанные с блоками полученных покрытий. ДНФ функций, связанных с блоками покрытия п1, можно получить по карте покрытий на рис. 6: п11(г1) = х3 х5, п12(г1) = х1 х3 х5,

п13(г1) = х1 х3 х5, п14(21) = х1 х3 х5, п15(21) = х1 хз х5, п16(21) = х1 хз х5, п17(21) = = х1 х3 х5. Аналогично получаются функции п21(г2) = х2 х4, п22(г2) = х2 х4, п23(г2) = х2 х4, п24(г2) = х2 х4. В результате несложной минимизации получим следующие матрицы, представляющие искомую суперпозицию у = ф (н>, г2), н = g (г1):

^ х2 х4 У\ у2

"110 1" "1 0"

0 111 0 1

1 - 10 ’ 1 0

1 - 0 0 0 1

11 - 0_ _0 1_

*1 *3 *5 Wj w2

"0 0 -" "1 0"

- 0 0 , 0 1

1 - 1 0 1 _

Если задаться целью минимизировать длину вектора н, то следует продолжить поиск. В данном примере уменьшить длину н не удается, но есть еще один вариант: 22 = {x3, X5}, 2\ = {x1, x2, x4}, при котором длина вектора н также равна двум.

Заключение

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

ЛИТЕРАТУРА

1. Perkowski M.A., Grygiel S. A survey of literature on functional decomposition. Version IV (Technical report). - Portland (USA): Portland State University, Department of Electrical Engineering, 1995. 188 p.

2. Закревский А.Д., Поттосин Ю.В., Черемисинова Л.Д. Логические основы проектирования дискретных устройств. М.: Физматлит, 2007. 592 с.

3. Jozwiak L., Chojnacki A. An effective and efficient method for functional decomposition of Boolean functions based on information relationship measures // Design and Diagnostics of

Electronic Circuits and Systems: Proc. of 3rd DDECS Workshop Smolenice castle, Slovakia, April 5 - 7, 2000. - Bratislava: Institute of Informatics, Slovak Academy of Sciences, 2000. P. 242-249.

4. Закревский А.Д. Декомпозиция частичных булевых функций - проверка на разделимость по заданному разбиению // Информатика. 2007. № 1(13). С. 16-21.

5. Бибило, П.Н. Декомпозиция булевых функций на основе решения логических уравнений. Минск: Беларус. навука, 2009. 211 с.

6. Поттосин Ю.В., Шестаков Е.А. Табличные методы декомпозиции систем полностью определенных булевых функций. Минск: Белорус. наука, 2006. 327 с.

Поттосин Юрий Васильевич

Шестаков Евгений Анатольевич

Объединенный институт проблем информатики

НАН Беларуси, г. Минск

E-mail: [email protected] Поступила в редакцию 10 ноября 2010 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.