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

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

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

Аннотация научной статьи по математике, автор научной работы — Песков Роман Николаевич, Щенников Владимир Николаевич

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

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

Похожие темы научных работ по математике , автор научной работы — Песков Роман Николаевич, Щенников Владимир Николаевич

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

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

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

На основе проведенных исследований можно сделать следующие выводы: совмест-

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Оссовский С. Нейронные сети для обработки информации / С. Оссовский ; пер. с польск.

И. Д. Рудинского. М. : Финансы и статистика, 2002. 344 с.

2. Armstrong J. Making reliable distributed systems in the presence of sodware errors / J. Armstrong. Thesis. November, 2003. 283 p.

3. Erlang programming language [Электронный ресурс]. Режим доступа: http://

www.erlang.org/. Загл. с экрана.

Поступила 06.02.2012.

УДК 004.422.612

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

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

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

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

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

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

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

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

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

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

будут составлять декомпозиции В2, Вз,

В,.

01011100 01011100

Д : V 11001000; Б2 : V 11001000;

д1 = 01001000 д2 = 01001000

01111110 00101010

Б3 : V 01000000; Б4 : V 11101000.

д3 = 01000000 д4 = 00101000

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

0100 0110

D12 : v 1000; D13 : v 0000;

gi2 = 0000 g13 = 0000

0010 0110

D14 : v 1000; D23 : v 0000;

g14 = 0000 g23 = 0000

0010 0110

D24 : v 1000; D34 : v 0000.

g24 = 00 00 g34 = 0000

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

X^1 Х3 X 4, Х1Х3Х4, Х1Х2 Х4, Х2Х3Х4, Х2 Х3 X 4.

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

0001 0011 0100 0101 1000 1001 1100

Х2Х3Х4 * *

Х2Х3Х4 * *

Х1Х3Х4 * *

Х1Х3Х4 * *

Х1Х2Х4 * *

Х2Х3Х4 * *

Х2Х3Х4 * *

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

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

0100 0101 1000 1001 1100

Х2Х3Х4 *

Х2Х3Х4 * *

Х1Х3Х4 *

Х1Х3Х4 * *

Х2Х3Х4 * *

Х2Х3Х4 * *

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

и + М5 > 1,

Ид + М5 > 1,

<! М4 + Ид > 1 М1 + Мд > 1,

М2 + М4 > 1,

^ = М + щ + и3 + и 4 + М5 + и^.

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

Х1Х3Х4 V Х2Х3Х4 V Х2Х3Х4 V Х1Х2Х4.

Теперь доопределим исходную функцию единицами [2] и построим дерево декомпозиций. Нулевой уровень дерева — декомпозиция = /. Первый уровень дерева будут составлять декомпозиции 02, Од, 04:

01111110 01111110

Д : V 11101010; О2 : V 11101010;

0! = 01101010 д2 = 01101010

0001 0011 0100 0101 1000 1001 1100

Х2Х3Х4 * *

Х3Х4

Х2Х4 * *

Х1Х3Х4 * *

Х1Х4 * *

Х1Х2 Х4 * *

Х1Х2Х3 *

Х1Х2 Х3 * *

Х1Х2Х3 * *

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

Х1Х2Х4 V Х1Х2Х3 V Х1Х2Х3 V Х2Х4.

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

М2 + М4 + М^ > 1,

М^ + Му > 1,

М4 + Мд > 1

М5 + Мд > 1,

Мі + Мд > 1,

М3 + М5 > 1;

L = М1 + М2 + М3 + и 4 + М5 + М^ + Му + Мд + Мд.

01111110 01111111

О3 : V 11101010; О4 : V 11101000.

д3 = 01101010 д4 = 01101000

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

0110 0110

О12 : V 1010; О13 : V 1010;

012 = 0010 0!3 = 0010

0111 0110

О14 : V 1000; О23 : V 1010;

д14 = 0000 д23 = 0010

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

0111 0110

^24 : V 1000; ^34 : V 1000.

д24 = 0000 д34 = 0000

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

Х1Х2Х3, ^1^2 Х3, ^1^2 Х3.

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

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

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

с п + 1 значениями, где г-е значение равно значению функции на наборах, содержащих г единиц.

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

01x111x0 01x111x0

О : ; Оп : ;

1 11x010 x0 2 11x010x0

01111110 0x1x1x1x

Оз : ; Од: .

3 x1x0x0x0 4 11101000

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Глушков В. М. Синтез цифровых автоматов / В. М. Глушков. М. : Физматгиз, 1962.

С. 264 267.

2. Самофалов К. Г. Прикладная теория цифровых автоматов / К. Г. Самофалов, А. М. Романке-

вич, В. Н. Валуйский, Ю. С. Каневский [и др.]. Киев : Вища Школа, 1987. С. 210 211.

3. 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.

Поступила 18.01.2012.

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