Россия |
Упорядоченные бинарные диаграммы решений (УБДР)
Построение сокращенных УБДР по формулам
Алгоритм СОКРАЩЕНИЕ-УБДР позволяет построить сокращенную УБДР для функции f, по любой другой ее УБДР. Но как построить УБДР, если f задана, например, с помощью формулы? Можно, конечно, попытаться построить полное бинарное дерево решений, объединить в нем все листья с меткой 0 в один сток, а листья с меткой 1 - в другой. Затем применить к получившейся УБДР алгоритм СОКРАЩЕНИЕ-УБДР. Но этот подход годится только для функций от небольшого числа переменных, так как полное БДР для f(x1, ..., xn) будет содержать 2n листьев.
Другой подход связан с построением УБДР "сверху-вниз". Объясним его для естественного порядка переменных: x1< x2 < ... < xn.
Начнем построение с корня, помеченного x1. Рассмотрим две остаточные
функции: f0(x1, ..., xn)=f(0, x2, ..., xn) и f1(x2, ..., xn)=f(1, x2, ..., xn). Если они одинаковы, то f не
зависит от x1 и тогда изменим метку у корня на x2. Если обе
функции f0 и f1 существенно зависят от x2, то для каждой из
них добавляем вершину, помеченную x2, и далее реализуем по индукции.
Если не зависит от переменных x2,... , xj, но зависит
существенно от xj+1, то добавляем вершину, помеченную xj+1,
и проводим в нее ребро с меткой k из вершины, соответствующей f .
Пусть для некоторого i уже построены вершины для всех различных
остаточных функций вида
,
существенно зависящих от xi. Для каждой из них получим две остаточные функции
и
.
Затем выберем из множества этих функций разные, для каждой из них добавим в диаграмму
вершину, помеченную xi+1, и проведем в них соответствующие ребра из вершин, помеченных x_{i}.
Продолжая построение, дойдем до функций от 1-ой переменной xn и до констант,
для которых минимальные реализации очевидны.
Пример 3.2. Рассмотрим, например, функцию f(x1, x2, x3, x4), заданную формулой
,
и построим для нее УБДР относительно порядка x1 < x2 < x3 <x4,
используя описанную выше процедуру.
Вначале создадим корень, помеченный x1, и рассмотрим остаточные функции, получающиеся при x1=0 и x1 =1. Имеем

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

Так как f00=f10, а f01 и f11 от x3 не зависят, то нам потребуется только одна
вершина, помеченая x3. Она будет представлять функцию .
При x3=0 она превращается в x4, а при x3=1 равна константе 1.
В результате получается УБДР Df, показанная на рис.3.6.
Задачи
Задача 3.1. Докажите, что совершенная, сокращенная и минимальная ДНФ функции odd(X1,X2,..., Xn) совпадают и состоят из 2n-1 элементарных конъюнкций длины n.
Задача 3.2. Докажите лемму 3.2 возвратной индукцией по i.
Задача 3.3. Используя лемму 3.2, докажите утверждение 2 теоремы 3.2.
Задача 3.4. Постройте минимальные УБДР для двуместных функций: .
Задача 3.5. Постройте минимальные УБДР для функции

относительно двух упорядочений переменных:
- x1 < x2 < x3 < x4 < x5 < x6 и
- x1 < x3 < x5 < x2 < x4 < x6.
Задача 3.6. Пороговая функция Tnk от n переменных с порогом k выдает 1, если во входном наборе имеется не менее k единиц: .
- Постройте минимальные УБДР для пороговых функций T32, T42, T53.
- Зависит ли сложность минимальной УБДР для пороговых функций от порядка переменных?
- Оцените сложность минимальной УБДР для пороговой функции Tnk.
Задача 3.7. Выберите подходящий порядок переменных и постройте для него минимальные УБДР, реализующие функции из задач 12.5 и 12.6.
Задача 3.8. Как мы видели, логические схемы естественным образом реализуются в виде неветвящихся программ. Наоборот, для деревьев решений и УБДР естественным программным представлением являются ветвящиеся программы, включающие лишь условные операторы вида if ... then ... else ... с тестами вида "x = 0?" и "x = 1?" (они соответствуют внутренним вершинам диаграмм) и операторы присвоения значения 0 или 1 результату (они соответствуют вершинам- стокам ).
Напишите ветвящиеся программы, вычисляющие функции, представляемые УБДР D2 на рис. 3.3 и Df на рис.3.6.