Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Тексты лекций / Текст лекции 16

.pdf
Скачиваний:
0
Добавлен:
12.01.2024
Размер:
692.34 Кб
Скачать

Тема 16. «Упорядоченные бинарные диаграммы решений»

Олейник Т.А., 2020

§ 3.11. Реализация булевых функций с помощью схем из функциональных элементов

Схема из функциональных элементов. Входы, функциональные элементы, выходы схемы. Сложность схемы. Глубина вершины. Функции, реализуемые в вершинах схемы. Функции, реализуемые схемой. Проблема анализа и проблема синтеза схем.

Схемой из функциональных элементов { , ,¬} называют ориентированный граф =

( ,) без циклов, удовлетворяющий следующим условиям.

 

 

1. Все вершины этого графа разбиваются на три подмножества , ,

( =

 

, ∩ = при ≠ ) так, что:

 

 

а) в каждую вершину из

не входит ни одной дуги;

 

 

б) в каждую вершину из

входит по одной дуге;

 

 

в) в каждую вершину из

входит по две дуги.

 

 

2.Каждаявершина из помечена некоторой переменной, причем разныевершины помечены разными переменными.

3.Каждая вершина из помечена связкой ¬.

4.Каждая вершина из помечена одной из связок и .

5.Выделено некоторое подмножество ( ) вершин.

Вершиныиз называютсявходамисхемы.Есливершина из помеченапеременной, то говорят, что на вход подается переменная .

Вершины из и называются функциональными элементами схемы. Вершины из называют выходами схемы.

Сложностью схемы называют число входящих в нее функциональных элементов. Пример 1. На рис. 3.87 приведена схема, имеющая два входа, один выход и четыре

функциональных элемента. Схема имеет сложность 4.

a

x1

с

x2 *

b

Рис. 3.87.

Глубинойвершины в схеме = ( ,)назовемнаибольшуюиз длинпутейиз входов в .

Например, в схеме из примера 1 вершины и имеют глубину 1, вершина - глубину 2, вершина - глубину 3.

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

Базис индукции. Пусть имеет глубину 0. Тогда это вход схемы, который помечен некоторой переменной . Положим ( , ,..., ) = .

Индуктивный переход. Пусть всем вершинам глубины, меньшей или равной , уже сопоставлены функции и пусть - произвольная вершина глубины + 1. Эта вершина принадлежит одному из множеств или .

1

Тема 16. «Упорядоченные бинарные диаграммы решений» Олейник Т.А., 2020

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

отрицание этой функции, т.е. .

б) Если вершина принадлежит , то в нее входят две дуги, выходящие из некоторых вершин и ,которымвсилупредположенияиндукцииужесопоставленыбулевыфунк-

ции

и

соответственно. Если вершина помеченасвязкой , тосопоставимей функ-

цию

 

. Если вершина помечена связкой , то сопоставим ей функцию

.

Есливершине сопоставленафункция ( , ,..., ),тоговорят,чтов реализуется булева функция .

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

этой схемы.

 

 

 

 

 

Пример 2.

В соответствии с данным выше определением в вершинах схемы, изобра-

женной на рис. 3.87, реализуются следующие функции:

 

=

, = ,

=

= (

) (

), = =

 

(

 

) (

).

 

Схема реализует последнюю из перечисленных функций.

Со схемами из функциональныхэлементовсвязаныдвеосновныепроблемы-проблема анализа и проблема синтеза схемы.

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

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

сложность.

 

 

Пример

3. Построим схему из функциональных элементов {¬, , }, реализующую

функцию (

, ) = ↓ .

 

Воспользуемся тем, что можно задать формулой ( , ) =

x1

, и реализуем ее схемой, изображенной на рис. 3.88. Эта схема

 

имеет сложность два. Заметим, что функция из примера 2 равна

*

функции из примера 3. Очевидно, что схема на рис. 3.88 имеет

x2

наименьшую сложность из всех схем в базисе {¬, , }, реализующих

эту функцию.

 

Рис. 3.88.

 

 

Упражнение 3.38. Построить схемы из элементов {¬, , }, реализующие основные элементарные функции двух переменных.

Упражнение 3.39. Построить схемы из элементов {¬, , }, реализующие функции:

а) = (001001101); б) = (1110010100101111).

2

Тема 16. «Упорядоченные бинарные диаграммы решений»

Олейник Т.А., 2020

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

Упорядоченная бинарная диаграмма решений (УБДР). Сток, внутренняя вершина. Сложность УБДР. Минимальная УБДР. Сокращенная УБДР. Правило сокращения. Правило слияния.

Базовые понятия и утверждения

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

Построим полное бинарное дерево высотой 3, т.е. ориентированное дерево, все ветви которого имеют длину 3, и из всех вершин которого (за исключением листьев) выходят две дуги. Далее любую вершину дерева, не являющуюся листом, будем называть внутренней вершиной. Пометим внутренние вершины дерева именами переменных: корню дадим метку , вершинам глубины 1 - метку , вершинам глубины 2 - метку . Одну из дуг, выходящихиз внутренней вершины ,пометим0,другую-1.Вершину ,вкоторую ведет дуга, помеченная 0, будем называть 0-сыном вершины , а вершину , в которую ведет дуга, помеченная 1, будем называть 1-сыном вершины .

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

Пример 1. Рассмотрим функцию ( , , ) = (00101111) (табл. 3.2). На рис. 3.89 дано ее представление в виде дерева решений.

Таблица 3.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

 

 

 

0

 

x1

1

 

 

0

0

1

0

 

 

0 x2 1

 

 

0 x2 1

0

1

0

1

 

x3

x3

 

 

x3

 

x3

0

1

1

0

0

 

1

0

1

0

1

0

1

 

0

0

1

0

1

1

1

1

1

0

0

1

 

 

 

 

 

 

 

 

 

 

1

0

1

1

 

 

 

 

 

 

 

 

 

1

1

0

1

 

 

 

 

 

 

 

 

 

1

1

1

1

 

 

 

Рис. 3.89.

 

 

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

3

Тема 16. «Упорядоченные бинарные диаграммы решений»

Олейник Т.А., 2020

 

 

0

x1

1

 

На рис. 3.90 показан граф, который получился врезуль-

 

 

 

тате преобразования описанным выше способом бинарного

0 x2

 

 

 

0 x2

 

 

1

 

1

дерева решений функции ( ,

, ) = (00101111). Граф

x3

 

x3

 

x

x

 

 

на рис. 3.90 относится к классу ориентированных графов,

0

1

1

0

0 31 0

3

 

0

 

1

1

представителей которого называют упорядоченными би-

 

 

 

 

 

 

Рис. 3.90.

 

нарными диаграммами решений.

 

 

 

 

Определение. Пусть для переменных , ,..., за-

 

 

 

 

 

 

фиксирован порядок :

( ),

( ),..., ( ). Упорядоченнойбинарнойдиаграммойрешений

относительно порядка называется ориентированный граф без циклов с одним корнем, в котором:

1)существуютлишь двевершины,изкоторыхне выходятдуги; онипомечены константами 0 и 1 и называются стоками;

2)остальные (внутренние) вершины помечены переменными, и из каждой из них вы-

ходят две дуги, одна из этих дуг помечена 0, а другая - 1; 3) порядок, в котором переменные встречаются на любом пути из корня в сток, совме-

стим с , т.е. если из вершины, помеченной ( ), есть путь в вершину, помеченную ( ),

то < .

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

Заметим, что из определения не следует, что последовательность вершин произвольного пути от корня к стоку содержит все переменных ( ), ( ),..., ( ). Если путь от корня к стоку не содержит вершины с меткой ( ), то этот путь соответствует и набору, в котором значение ( ) переменной ( ) равно 0, и набору, в котором значение ( ) переменной ( ) равно 1.

Из определения УБДР непосредственно следует, что каждая внутренняя вершина УБДР является корнем поддиаграммы, которая включает все достижимые из вершины

исходной диаграммы. Пусть вершина помечена переменной (

). Тогда внутренние вер-

шины поддиаграммы с корнем

помечены метками ( ),

где ≥ , и, значит, поддиа-

грамма реализует некоторую функцию от переменных

( ), (

 

),..., ( ). Обозначим

эту функцию

( ),

(

),...,

( )

. В свою очередь 0-сын

вершины является кор-

нем

поддиаграммы,

 

реализующей

 

функцию

 

 

(

), (

),..., ( ) =

0,

( ),...,

( ) , а 1-сын

вершины является корнем поддиаграммы, реализую-

щей функцию

(

), (

),...,

(

)

= 1, (

),...,

(

) . Пусть диаграммаре-

ализует функцию ( ,

,...,

) =

 

(

), ( ),..., (

)

и

(

),..., (

) - это набор

значений переменных

(

),..., (

), который соответствует пути из корня в вершину

(таких наборов может быть несколько). Тогда

 

 

 

 

 

 

 

( ),

(

),...,

( )

=

( ),..., (

 

), (

),..., (

) .

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

4

Тема 16. «Упорядоченные бинарные диаграммы решений» Олейник Т.А., 2020

Пример 2. УБДР, изображенные на рис. 3.91 и 3.92, так же как и УБДР на рис. 3.90,

реализуют функцию (

,

, ) = (00101111).

 

 

 

x1

 

 

 

x1

 

0

1

 

 

0

x

 

 

x2

x2 1

 

2

1

 

 

1

0

x

0

1

0

x

 

3

 

 

 

1

0

 

 

3

 

 

1

0

 

 

 

 

0

 

 

1

0

1

 

 

 

 

Рис. 3.91.

Рис. 3.92.

Под сложностью УБДР будем понимать число ее внутренних вершин.

Например, УБДР, изображенные на рис. 3.90,

3.91 и 3.92, имеют соответственно

сложность 7, 4 и 3.

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

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

2. Построение минимальных УБДР функции относительно заданного порядка пе-

ременных. Рассмотрим два правила преобразования УБДР.

Правило удаления вершин. Если 0-сын или 1-сын вершины совпадают и равны , то удаляем , перенаправив все входящие в нее дуги в вершину (рис. 3.93).

Правилослияниявершин. Есливершины и помеченыоднойпеременнойиимеют одинаковых 0-сыновей и 1-сыновей, то удаляем вершину , перенаправив все входящие в нее дуги в вершину (рис. 3.94).

a b c

a b c

a b

 

c

a b c

v

x

 

v

x

w

x

v

x

0

1

 

0

1

0

1

0

1

w y

w y

 

 

 

 

 

 

 

Рис. 3.93.

 

 

 

Рис. 3.94.

 

 

Определение. УБДР называется сокращенной, если выполнены условия:

1)у любой внутренней вершины ее 0-сын и 1-сын не совпадают;

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

Справедливо утверждение, которое мы примем без доказательства.

Теорема 3.12. УБДР является сокращенной тогда и только тогда, когда к ней не применимо ни правило удаления вершин, ни правило слияния.

Из этого утверждения непосредственно следует, что, применяя к произвольной УБДР правило сокращения и удаления вершин столько раз, сколько это возможно, мы в итоге получаем сокращенную УБДР.

Опишем эту процедуру в виде алгоритма построения сокращенной УБДР.

5

Тема 16. «Упорядоченные бинарные диаграммы решений»

 

Олейник Т.А., 2020

Пусть для некоторого порядка переменных

( ), (

),...,

( ) построена УБДР, реа-

лизующая функцию .

 

 

 

0-й шаг. Применим последовательно ко всем вершинам с метками ( ) данной УБДР вначале правило удаления (перебор вершин с метками ( ) можно вести в любом порядке), а затем правило слияния (если это возможно).

-й шаг. Пусть к началу этого шага построена некоторая УБДР. Применим последовательно ко всем вершинам с метками ( ) данной УБДР вначале правило удаления, а затем правило слияния (если это возможно).

По завершении ( − 1)-го шага алгоритма получим сокращенную УБДР. Справедливо утверждение (примем его без доказательства).

Теорема 3.13. 1) Описанный выше алгоритм строит сокращенную УБДР, которая реализует ту же функцию, что и исходная УБДР.

2) Эта сокращенная УБДР является при данном порядке переменных единственной (с точностью до изоморфизма) и минимальной (т.е. она имеет наименьшую сложность среди всех УБДР данного порядка).

Таким образом, если алгоритм построения сокращенной УБДР применить к УБДР, реализующей некоторую функцию , то получим минимальную для данного порядка УБДР, реализующую .

Пример 3. На рис. 3.95 - 3.97 показаны этапы построения минимальной УБДР функции ( , , ) = (10100011) относительно порядка , , с помощью описанного выше алгоритма. На рис. 3.95 изображена УБДР, полученная из бинарного дерева решений функции. На рис. 3.96 показана УБДР, полученная из УБДР на рис. 3.95 после применения правил удаления и слияния вершин с метками . На рис. 3.97 изображена УБДР, полученнаяиз УБДРна рис.3.96врезультатепримененияправилаудаленияк вершине сметкой

 

. УБДР на рис. 3.97 - минимальная УБДР относительно порядка

,

, . Ее сложность

равна 3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

x1

 

 

 

 

x1

 

 

 

0

1

 

0

1

 

 

0

1

 

 

 

 

 

 

 

 

x2

x2

 

 

x2

 

0 x2

 

 

 

x2 1

 

 

 

1

 

0

 

 

 

 

 

 

 

x3

x 0

0 x3

x3

0

1

 

 

 

 

 

 

 

0 1

 

0

1

 

 

 

 

1

0

 

 

 

 

 

 

 

 

 

 

1

1

x3

 

x3

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

 

 

0

 

0

 

 

 

Рис. 3.95.

 

 

Рис. 3.96.

Рис. 3.97.

Пример 4. На рис. 3.89 - 3.92 показаны этапы построения минимальной УБДР функции ( , , ) = (00101111) относительно порядка , , . На рис. 3.90 изображена УБДР функции, полученная из бинарного дерева решений функции. На рис. 3.91 и 3.92 показаны УБДР, полученные по завершении 0-го и 1-го этапов алгоритма. УБДР на рис. 3.92 - минимальная при данном порядке переменных. Ее сложность равна 3.

Пример 5. На рис. 3.98 и 3.99 показаны этапы построения минимальной УБДР функции ( , , ) = (10011101) относительно порядка , , . Минимальная УБДР относительно этого порядка имеет сложность 4 (рис. 3.99).

6

Тема 16. «Упорядоченные бинарные диаграммы решений»

 

Олейник Т.А., 2020

 

 

x2

 

 

 

 

 

 

x2

 

0

 

1

 

 

 

0

1

0 x1 1

 

 

0 x1 1

x1

x1

x3

x3

1

 

x

 

 

x

1

0

0

 

0

0

 

 

1

3

1

3

1

0

0

 

 

1

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Рис. 3.98.

 

 

 

Рис. 3.99.

3. Построение сокращенных УБДР по формулам. Рассмотрим еще один подходк по-

строению сокращенной УБДР - построение по формуле. Опишем его для естественного по-

рядка переменных

, ,...,

и произвольной функции ( , ,...,

). Пусть ( ,..., )

- некоторый

набор

значений

переменных ( ,..., ).

Функцию

... ( ,..., ) =

( ..., ,

,...,

) назовем остаточной функцией.

 

 

Построение УБДР начнем с изображения корня, помеченного . Рассмотрим две оста-

точные функции: ( ,..., ) = (0, ,..., ) и f1 x2,...,xn f 1,x2,...,xn . Если они одинаковы, то не зависит существенно от переменной , и тогда изменим метку у корня

на . Если же существенно зависит от переменной , то метку

корня сохраним. Если

обе функции и существенно зависят от

, то из вершины выпустим две дуги, кон-

цам которых дадим метку и далее реализуем по индукции. Если

( {0,1}) не зависит

существенным образом от переменных ,..., , но зависит существенно от

, то для

этой

 

добавим вершину,

помеченную

и проведем в нее дугу с меткой из корня.

Пусть

для некоторого

 

уже

 

построены

вершины для

всех

остаточных

функций

... (

,..., ) = (

..., ,

,..., ), существенно зависящих от . Для каждой из

них получим две остаточные функции

 

 

 

 

 

 

 

 

...

(0,

,...,

) = (

..., ,0,

,...,

) и

 

 

 

...

 

(1,

 

,...,

) = (

..., ,1,

,...,

).

 

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

Пример 6. Используя описанную процедуру, построить УБДР относительно порядка

переменных ,

,

,

для функции ,

заданной формулой (

,

,

,

) =

 

 

 

.

 

 

 

 

 

 

 

 

 

◄ Вначале изобразим корень, пометив его , и рассмотрим остаточные функции, по-

лучающиеся при = 0 и

= 1. Имеем:

 

 

 

 

(

,

,

) = (0,

,

,

) =

 

 

 

 

,

(

,

,

) = (1,

,

,

) =

 

 

 

 

.

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

диаграммы, реализующей , другая - корень поддиаграммы,

реализующей ; поддиа-

граммы имеют корни

, поскольку,как несложно убедиться,

, существенно зависят от

). Затем для каждой из функций

, определим остаточные функции, получающиеся

при

= 0 и

= 1. Тогда

 

 

 

 

 

(

,

)

= (0,

,

) =

 

,

 

 

(

,

)

= (1,

,

) =

,

 

 

7

Тема 16. «Упорядоченные бинарные диаграммы решений»

Олейник Т.А., 2020

 

(

,

) = (0,

,

) = ,

 

 

(

,

) = (1,

,

) = .

 

Так как

= , а

и

различны и существенно зависят от , то нам понадобятся

три вершины, помеченные (первая из этих вершин - корень поддиаграммы реализующей

 

(

), вторая - корень поддиаграммы, реализующей , третья - корень поддиаграммы,

реализующей

). Для каждой из функций

( ), ,

определим остаточные функ-

ции, получающиеся при = 0 и = 1:

 

 

 

 

 

 

 

 

 

 

(

) =

(0,

) = ,

 

 

 

0

 

x1

1

 

 

 

(

) =

(1,

) = 1,

 

 

 

 

 

 

 

 

 

x2

 

 

 

x2

 

 

 

(

) =

(0,

) = 0,

 

 

 

 

 

 

 

 

 

1

 

0

0

1

 

 

 

(

) =

(1,

) = 1,

 

 

 

 

 

 

 

x3

 

 

x3

x3

 

 

 

(

) =

(0,

) = 1,

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

) =

(1,

) = 0.

 

 

0

 

 

 

0

 

 

Так кактолько одна из этих функций существенно зависит

 

 

 

 

 

 

 

 

 

 

от

, то нам понадобится лишь одна вершина, помеченная

 

Рис. 3.100.

(она будет корнем поддиаграммы, реализующей функцию

). В результате получается УБДР, изображенная на рис. 3.100. ►

 

 

 

 

 

 

 

 

 

 

 

Задачи повышенной сложности

 

 

 

 

 

 

 

3.43. Построить минимальные УБДР функции ( ,,) = (00101111) относительно

порядка:

 

 

 

 

 

 

 

 

 

 

 

 

а) ,, ;

б) ,, .

 

 

 

 

 

 

 

 

 

3.44. Построить минимальную УБДР относительно порядка ,

,

,

для функции

(

 

,

,

, ), заданной формулой:

 

 

 

 

 

 

 

 

 

а) =

; б) =

 

.

 

 

 

 

 

8

Соседние файлы в папке Тексты лекций