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

А.Б. Сизоненко,

кандидат технических наук, доцент, Краснодарский университет МВД России

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

REALIZATION OF PARTIAL BOOLEAN FUNCTIONS BY MODULAR

ARITHMETIC POLYNOMIALS

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

The implementation of systems of Boolean functions by arithmetic polynomials has several advantages over traditional methods. If the system of Boolean functions is defined not on all sets of arguments, then there is an optimization problem of determining the values of the functions on these sets. Algorithm for minimizing the number of members of the modular arithmetic polynomial that describes the system is not completely defined Boolean functions is proposed in this article.

Введение

Алгоритм функционирования дискретных устройств описывается системами булевых функций. В реальных условиях некоторые комбинации аргументов никогда не появятся на входе, т. е. будут исключены из области определения функции. Такая ситуация может возникнуть, когда происходит описание систем логического управления, принятия решений или на начальном этапе проектирования дискретных устройств. В этом случае логика функционирования будет описываться системами частичных булевых функций. Для значений аргументов, на которых функция не определена, будет непринципиально, какое значение приобретает функция. Однако, подобрав определенным образом значения функции на этих наборах аргументов, можно добиться упрощения алгебраического описания системы булевых функций. Реализация логических функций арифметическими полиномами (АП) [3, 5, 6], в частности модулярными арифметическими полиномами (МАП) [5], имеет ряд важных преимуществ (по гибкости, производительности, достоверности реализации). Программная реализация логических функций арифметическими полиномами позволяет распараллелить процесс вычислений и расширить используемый набор команд микропроцессора [5].

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

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

1. Модулярные арифметические полиномы и не полностью заданные сис-

темы булевых функций

Булева функция называется не полностью определенной (или частичной), если она определена не всюду, а лишь на некоторых наборах аргументов. Неполнота задания булевой функции обычно интерпретируется как произвольность ее значений на наборах, на которых значение булевой функции не определено [1].

Пусть п — количество переменных, X = {х0,х1,к, хп-1} — произвольный набор

значений переменных, X = {Х0, Х1, к, Х2„ } — область определения. Частичная булева функция определена не для всех значений аргументов, т. е. Х^ и X0 с X .

Частичная булева функция (X) задает разбиение булева пространства на три

подмножества: Х^ — на котором функция принимает значение «1», Х^ — на котором принимает значение «0» и Х_ — на котором функция не определена. Множество Х^ иХ0 называют областью определения функции /і (X), а множество Х_ — областью неопределенных значений. Таким образом, Х^ иХ0 и Х_ = Х. Частичная булева функция задает отображение булева пространства в трехэлементное множество /(х) Є {0,1, _}[1].

Способы задания частичных булевых функций могут быть следующие [1]:

1. Теоретико-числовое, когда частичная булева функция задается множествами

Х , Х0 , Х_.

2. В виде таблицы, левая часть которой содержит упорядоченные наборы аргументов множества Х, а правая — троичный вектор-столбец значений.

3. Векторное в виде троичного вектора строки значений функции.

4. Матричное в виде пары матриц из элементов множеств Х^, Х^, Х_ .

5. Алгебраическое в виде пары дизъюнктивных нормальных форм.

6. На картах Карно.

Перейдем к рассмотрению системы из d частичных булевых функций ¥(X):

У0 = ґ0(х);

У1 = ґ1(х);

уа _1 = ^-1(х).

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

¥г = 2d-1Л-1(X) + к + 20 У0(X^ например:

Номер набора X ¥ (X) У

Х2 Х1 Х0 У 2 У1 У 0

0 0 0 0 0 1 0 2

1 0 0 1 - - - -

2 0 1 0 1 1 1 7

3 0 1 1 1 1 0 6

4 1 0 0 - - - -

5 1 0 1 0 0 1 1

6 1 1 0 0 1 1 3

7 1 1 1 - - - -

Задать не полностью определенную систему булевых функций можно вектором значений в десятичной форме У = (У0,У1,к,У2„ ), Уе {0,1, ...,(2й -1), Для рассмот-

ренного примера не полностью определенная функция задается вектором: У = [2 - 7 6 - 13 -].

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

Произвольный кортеж булевых функций /Й-1(Х)*/-2(Х)* ••• /0(Х) может быть

единственным образом представлен арифметическим полиномом [3]:

2" -1

У = Б( X) = 2 х"-2 к х00,

г=0

где С = (с0 к с п 1) — вектор коэффициентов АП; с є Z .

п—1

ъЫ

і = (іп—ііп— 2- і0) = 2іи 2 , іи Є і0, 1}-

ы =0

= Г1, при іг =0,

Р [ хр, при ір = 1.

Представление систем булевых функций модулярными арифметическими полиномами позволяет ограничить размерность коэффициентов и уменьшить их количество. Если т > Угхах , где Угхах — максимальное значение при десятичном представлении значений системы булевых функций, то произвольный кортеж логических функций может быть представлен МАП [5]:

2п —1

У = МО( X) =

Ху

і=0

где У = \Сг\т , Сі Є Z ;

п—1

і = (іп—1іп—2... і0) = Xіи2Ы, іи є {0,1} — разряды двоичной системы счисления.

и

Ы= 0

г ч" ;

^ = |1, йе V =0,

Р Йе 1р =1.

Коэффициенты МАП МО(Х) лежат в области целых неотрицательных чисел, а их числовой диапазон равен значению модуля т [5].

АП, описывающий систему логических функций, можно получить алгебраическим и матричным способами [3, 5, 6]. Алгебраический способ подробно описан в [3,

5]. Остановимся более подробно на матричном преобразовании, которое выполняется следующим образом:

С = А " У ,

где У — вектор истинности системы булевых функций;

"

А = А1 называется "-й кронекеровской степенью базовой матрицы

2 У=1

т

1 0

A1 =

1 -11.

Для получения вектора коэффициентов МАП Y каждый коэффициент вектора C берется по модулю m . Модуль удобно выбирать m = 2d , где d — количество функций системы булевых функций.

2. Квазиоптимальная реализация систем частичных булевых функций МАП

Предположим, что функция определена на m наборах, тогда остается к = 2n - m неопределенных наборов. Задача состоит в нахождении такого значения неопределенных наборов, при котором МАП имел бы минимальную длину (количество слагаемых) и минимальный размер каждого терма.

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

Для уменьшения количества итераций до к предлагается алгоритм, позволяющий получить квазиоптимальный МАП длиной не более m [4].

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

Y = [2 - 7 6 - 13 -].

Из вектора видно, что функция на 1, 4 и 7 наборах не задана. Задача состоит в том, чтобы подобрать значения функции на этих наборах таким образом, чтобы в модулярном арифметическом полиноме, описывающем эту систему булевых функций, присутствовало минимальное количество членов. Так как количество функций в данном случае d = 3 , значение модуля выберем m = 8 и все действия в рассматриваемом примере будем выполнять по mod 8 .

Для решения задачи предлагается алгоритм, представленный ниже.

Шаг 1. Построим образующую матрицу, соответствующую количеству переменных :

A8 =

j=1

Ґ 1 0 0 0 0 0 0 0N

-1 1 0 0 0 0 0 0

-1 0 1 0 0 0 0 0

1 0' 1 -1 -1 1 0 0 0 0

-1 1 -1 0 0 0 1 0 0 0

1 -1 0 0 -1 1 0 0

1 0 -1 0 -1 0 1 0

1-1 1 1 -1 1 -1 -1 1

Шаг 2. Из матрицы уберем столбцы, соответствующие наборам, на которых система булевых функций не определена. Уберем неопределенные наборы и из вектора истинности У . Перемножим полученные образующую матрицу и вектор истинности:

1,4,7

г 1 0 0 0 0^ ' 2^

-1 0 0 0 0 Г 2"| 6

-1 1 0 0 0 5

7

1 -1 1 0 0 1

6 =

-1 0 0 0 0 6

1

1 0 0 1 0 3

1 -1 0 0 1 , 3, 6

V -1 1 -1 -1 -1 , 3

Шаг 3. Составим образующую матрицу А8 , из вектора-столбца ¥147 в левой части и удаленных в шаге 2 столбцов 1, 4, 7 матрицы А8 :

' 2 0 0 0'' Г 2'!

6 1 0 0 У

5 0 0 0 Г1 "1 5

1 -1 0 0 У У3

6 0 1 0 У4 У4

3 -1 -1 0 У у У5

6 0 -1 0 У6

V 3 1 1 1, У7 У

Выберем строки, которые могут при подборе значения У1 гарантированно (вне зависимости от значений У4 и У7) обратить один или несколько коэффициентов у в 0. В данном случае это будут 1-я и 3-я строки матрицы. Обратим в 0 коэффициент у3, руководствуясь тем, что ему будет соответствовать терм большей длины — х1 х0, чем коэффициенту у, которому соответствует терм х0.

Для того чтобы вычислить значение У1, обращающее коэффициент у3 в 0, решим

уравнение: |1 -У1|+ = 0 ^У1 = 1.

Шаг 4. Вычислим вектор ¥47:

^4,7 =

г 2 0 ' Г 2^

6 1 7

5 0 5

1 -1 Г1' 0

6 0 6

3 -1 2

6 0 6

V 3 1 > V 4

Шаг 5. Аналогично действиям, показанным в шаге 3, составим образующую мат-

А 4 7

0 0 0 0 1 -1 -1 1

г і л

¥4 ¥ У

2Л

7

5

0

У4 У5

Уб

У7 ^

При подборе значения У4 в 0 гарантированно может быть обращен один из коэффициентов: у4, у5 или у6. Возникает вопрос, а может ли какое-либо значение У4 обратить несколько из названных коэффициентов у в 0? Для ответа на этот вопрос выполним следующие действия:

а) вычислим -^47 = (б 1 3 0 2 6 2 4)Г;

б) оставим в векторе строки 4, 5 и 6, соответствующие коэффициентам, которые могут быть обращены в 0;

в) перемножим полученный транспонированный вектор со вторым столбцом мат-

А 4 7

(2 6 2 )•

I -1

Повторяющиеся значения в полученном векторе покажут, какие коэффициенты и при каких значениях У1 обращаются в 0. Из вектора видно, что при У4 = 2 коэффициенты у4 и у5 примут нулевое значение. Вектор ^7 = (2 7 5 0 0 0 4 6J .

Шаг 6. Произведем подбор значения У7. Зная значение вектора ¥7, построим образующую матрицу А7:

8 , предварительно также удалив из него строки, кроме 4, 5 и б: г 1

= (2 2 б).

0^ Г 2 ^

7 0 7

5 0 5

0 0 Г1 'І 0

0 0 ¥ у 0

0 0 0

4 0 4

V б 1 У7 у

Из матрицы видно, что подбором У7 можно добиться обращения в 0 коэффициента у7. Решим уравнение:

6+ї7і;=0 ^ ¥7=2.

Таким образом, вектор коэффициентов МАП, описывающего систему не полностью определенных булевых функций, будет иметь вид:

¥ = (2 7 5 0 0 0 4 0)г , что соответствует полиному:

У = МБ(Х) = |2 + 7 х0 + 5х1 + 4х2х1|8.

Для х2 х1х0 = 110, У = МБ( X) = |2 + 5 + 4|8 = 310 = 0112 , что соответствует вектору истинности (1).

ЛИТЕРАТУРА

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

2. Закревский А. Д., Торопов Н.Р. Полиномиальная реализация частичных булевых функций и систем. — М.: Едиториал УРСС, 2003. — 200 с.

3. Малюгин В.Д. Параллельные логические вычисления посредством арифметических полиномов. — М.: Наука. Физматлит, 1997. — 192 с.

4. Сизоненко А.Б. Алгоритм построения модулярного арифметического полинома по частично заданной системе булевых функций // Сборник научных трудов по материалам международной научно-практической конференции «Современные направления теоретических и прикладных исследований ‘2011». 15—28.03.2011. Том 2. Технические науки. — Одесса: Черноморье, 2011. — С. 72—75.

5. Финько О. А. Модулярная арифметика параллельных логических вычислений: монография/ под ред. В.Д. Малюгина. — М.: Институт проблем управления им.

В. А. Трапезникова РАН; Краснодар: Краснодарский военный институт, 2003. — 224 с.

6. Шалыто А. А. Логическое управление. Методы аппаратной и программной реализации алгоритмов. — СПб.: Наука, 2000. — 747 с.