Глава 14

Упорядоченные бинарные диаграммы решений

[9/100%]
Показать
LaTeX
Задача 226

Доказать лемму 92 на стр. 277 обратной индукцией по ii.

Лемма 92: После выполнения шага для ii в алгоритме СокрУБДР (сокращение УБДР) в полученной диаграмме для каждого j=i1,,nj = i-1, \ldots , n и для каждой подфункции fσ1,,σj(xj+1,,xn)=f(σ1,,σj,xj+1,,xn)f_{\sigma_{1}, \ldots , \sigma_{j}}\left(x_{j+1}, \ldots , x_{n}\right) = f\left(\sigma_{1}, \ldots , \sigma_{j}, x_{j+1}, \ldots , x_{n}\right), где σk{0,1}\sigma_{k} \in \left\{ 0,1\right\} при k=1,2,,jk = 1, 2, \ldots , j, имеется ровно одна вершина — исток поддиаграммы, реализующей эту подфункцию.

?
Задача 227

Используя лемму 92 на стр. 277, доказать утверждение 2) теоремы 91 на стр. 276. \square

Теорема 91: если алгоритм СокрУБДР на входе УБДР DD возвращает УБДР DD', то (утверждение 2) УБДР DD' является при данном порядке переменных единственной сокращённой (с точностью до изоморфизма) и минимальной.

Лемма 92: После выполнения шага для ii в алгоритме СокрУБДР в полученной диаграмме для каждого j=i1,,nj = i-1, \ldots , n и для каждой подфункции fσ1,,σj(xj+1,,xn)=f(σ1,,σj,xj+1,,xn)f_{\sigma_{1}, \ldots , \sigma_{j}}\left(x_{j+1}, \ldots , x_{n}\right) = f\left(\sigma_{1}, \ldots , \sigma_{j}, x_{j+1}, \ldots , x_{n}\right), где σk{0,1}\sigma_{k} \in \left\{ 0,1\right\} при k=1,2,,jk = 1, 2, \ldots , j, имеется ровно одна вершина — исток поддиаграммы, реализующей эту подфункцию.

?
Задача 228

Доказать, что в результате применения алгоритма из параграфа 14.3 получается сокращённая УБДР.

Имеется в виду алгоритм параграфа 14.3, строящий УБДР для f(x1,,xn)f(x_{1}, \ldots , x_{n}) «сверху-вниз», рекурсией по nn. Если n=0n = 0, то ff — константа, и УБДР состоит из двух стоков 00 и 11. Иначе строятся две остаточные функции f0(x2,,xn)=f(0,x2,,xn)f_{0}(x_{2}, \ldots , x_{n}) = f(0, x_{2}, \ldots , x_{n}) и f1(x2,,xn)=f(1,x2,,xn)f_{1}(x_{2}, \ldots , x_{n}) = f(1, x_{2}, \ldots , x_{n}), рекурсивно строится (общая) УБДР, реализующая все различные функции среди {f0,f1}\left\{ f_{0}, f_{1}\right\} (повторяющиеся среди них отождествляются, так что на каждую различную остаточную функцию строится не более одной вершины), а затем: если f0=f1f_{0} = f_{1}, вершиной для ff считается уже построенная вершина, реализующая f0=f1f_{0} = f_{1}; иначе добавляется одна новая вершина с меткой x1x_{1}, 0-сыном и 1-сыном которой являются (уже построенные, возможно общие) вершины, реализующие f0f_{0} и f1f_{1} соответственно. \square

?
Задача 229

Доказать, что всякую булеву функцию от nn переменных можно реализовать в виде УБДР с не более чем 2n/2+212^{n / 2+2}-1 внутренней вершиной. Указание. Показать, как преобразовать полное БДР.

?
Задача 230

Схемы из функциональных элементов естественным образом реализуются в виде линейных программ. Наоборот, для деревьев решений и УБДР естественным программным представлением являются ветвящиеся программы, включающие лишь условные операторы вида Если vv то Π1\Pi_{1} Иначе Π2\Pi_{2} и присваивания y0y \leftarrow 0 и y1y \leftarrow 1 (см. главу 18). Они соответствуют внутренним вершинам диаграмм и стокам соответственно. Здесь Π1\Pi_{1} и Π2\Pi_{2} — это снова ветвящиеся программы, а переменная yy содержит результат.

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

Написать ветвящиеся программы, вычисляющие функции, представляемые УБДР D1\mathfrak {D}_{1} на рис. 69 на стр. 272 и D3\mathfrak {D}_{3} на рис. 74 на предыдущей странице.

?
Задача 231

Построить минимальные УБДР для двухместных функций: xy,xyx \wedge y, x \vee y, xy,xy,xyx \oplus y, x \rightarrow y, x \uparrow y.

?
Задача 232

Построить минимальные УБДР для функции

f(x1,x2,x3,x4,x5,x6)=(x1x2)(x3x4)(x5x6) f\left(x_{1}, x_{2}, x_{3}, x_{4}, x_{5}, x_{6}\right)=\left(x_{1} \wedge x_{2}\right) \oplus \left(x_{3} \wedge x_{4}\right) \oplus \left(x_{5} \wedge x_{6}\right)

относительно двух упорядочений переменных:

?
(а)

x1<x2<x3<x4<x5<x6x_{1}<x_{2}<x_{3}<x_{4}<x_{5}<x_{6} и

(б)

x1<x3<x5<x2<x4<x6x_{1}<x_{3}<x_{5}<x_{2}<x_{4}<x_{6}.

Задача 233

Значение пороговой функции TknT_{k}^{n} от nn переменных с порогом kk равно 1 тогда и только тогда, когда во входном наборе имеется не менее kk единиц:

Tkn(x1,x2,,xn)=1[x1+x2++xnk]. T_{k}^{n}\left(x_{1}, x_{2}, \ldots , x_{n}\right)=1 \Longleftrightarrow \left[x_{1}+x_{2}+\ldots +x_{n} \geqslant k\right].
?
(а)

Построить УБДР для пороговой функции TknT_{k}^{n} в общем виде.

(б)

Построить минимальную УБДР для пороговой функции T46T_{4}^{6}.

(в)

Зависит ли сложность минимальной УБДР для пороговых функций от порядка переменных?

(г)

Оценить сложность минимальной УБДР для пороговой функции TknT_{k}^{n}.

Задача 234

Построить минимальные УБДР, реализующие функции из задач 221 и 224 на стр. 266.

?