Разделы презентаций


Динамическое программирование Оптимальные деревья поиска

Содержание

03.03.2014Динамическое программированиеПример 3. Оптимальные деревья поискаСм. начало в Лекции 3.См. также раздел 2.8 пособия «Деревья кодирования и поиска»

Слайды и текст этой презентации

Слайд 103.03.2014
Динамическое программирование
Построение и анализ алгоритмов
Лекция 4

Динамическое программирование

Оптимальные деревья поиска



03.03.2014Динамическое программированиеПостроение и анализ алгоритмовЛекция 4Динамическое программированиеОптимальные деревья поиска

Слайд 203.03.2014
Динамическое программирование
Пример 3. Оптимальные деревья поиска
См. начало в Лекции 3.
См.

также раздел 2.8
пособия «Деревья кодирования и поиска»


03.03.2014Динамическое программированиеПример 3. Оптимальные деревья поискаСм. начало в Лекции 3.См. также раздел 2.8 пособия «Деревья кодирования и

Слайд 3Оптимальные деревья поиска
Ранее при рассмотрении БДП, как правило, предполагалось, что

для поиска различные ключи предъявляются с равной вероятностью.

Пусть теперь заранее

известно, что некоторые ключи предъявляются чаще других.
Тогда расположение «частых» ключей ближе к корню дерева сократит время их поиска и, возможно, среднее время поиска (по разным предъявлениям ключей).

03.03.2014

Динамическое программирование

Оптимальные деревья поискаРанее при рассмотрении БДП, как правило, предполагалось, что для поиска различные ключи предъявляются с равной

Слайд 403.03.2014
Динамическое программирование
Пример дерева поиска из трех элементов a1 

03.03.2014Динамическое программированиеПример дерева поиска из трех элементов a1 

Слайд 5Заданы вероятности предъявления элемента x для поиска: P (x = a1) = α; P

(x = a2) = β; P (x = a3) = γ.
03.03.2014
Динамическое программирование
Среднее (по всем предъявлениям x) число

сравнений (стоимость) в случаях успешного поиска как функция переменных α, β и γ,
Заданы вероятности предъявления элемента x для поиска: P (x = a1) = α; P (x = a2) = β; P (x = a3) = γ. 03.03.2014Динамическое программированиеСреднее (по всем

Слайд 6Постановка задачи
Поиск будет осуществляться среди набора данных a1, a2, …, an–1, an.
Пусть последовательность

упорядочена:
a1 

Ai : (x = ai) для i ∈ 1..n,
B0, …, Bn - события, соответствующие вариантам неудачных исходов поиска,
 т. е.  Bi : (ai < x < ai+1) для i ∈ 0..n.
Здесь для упрощения записи событий B0 и Bn добавлены фиктивные элементы a0 = −∞ и an+1 = +∞, которые не должны использоваться в алгоритме.

03.03.2014

Динамическое программирование

Постановка задачиПоиск будет осуществляться среди набора данных a1, a2, …, an–1, an. Пусть последовательность упорядочена: a1 

Слайд 7Все эти 2n + 1 событий (исходов поиска)


могут быть

упорядочены:
B0 

i ∈ 1..n, и qi = P (Bi) для i ∈ 0..n.
При этом Σi∈1..n pi + Σi∈0..n qi = 1.

События Ai соответствуют внутренним узлам расширенного дерева поиска, а события Bi – внешним узлам (листьям) расширенного дерева поиска.

03.03.2014

Динамическое программирование

Постановка задачи (продолжение)



Все эти 2n + 1 событий (исходов поиска)  могут быть упорядочены: B0 

Слайд 8Тогда среднее число (математическое ожидание) сравнений при поиске можно записать

в виде



где l (x) – уровень узла x (или длина

пути от корня до узла x) в БДП.
Здесь уровень узла определен так, что l (корень) = 0.

03.03.2014

Динамическое программирование


Постановка задачи (продолжение)

Итак, задача состоит в том, чтобы по заданным весам


построить БДП, минимизирующее значение C0,n .


Тогда среднее число (математическое ожидание) сравнений при поиске можно записать в виде где l (x) – уровень узла

Слайд 9Такое дерево называют оптимальным БДП.

Есть ли сходство этой задачи

с задачей построения оптимального префиксного кода ?
В чём сходство, в

чём различие?
Ответ.


03.03.2014

Динамическое программирование

Постановка задачи (продолжение)

Такое дерево называют оптимальным БДП. Есть ли сходство этой задачи с задачей построения оптимального префиксного кода ?В

Слайд 10Очевидное решение поставленной задачи состоит в переборе всех структурно различных

бинарных деревьев с n узлами и выборе дерева с наименьшей

стоимостью C0,n .
Однако поскольку (см. лекции про БДП) число bn структурно различных бинарных деревьев с n узлами есть



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

03.03.2014

Динамическое программирование


Очевидное решение поставленной задачи состоит в переборе всех структурно различных бинарных деревьев с n узлами и выборе

Слайд 11Конец повторения прошлой лекции
Решение поставленной задачи
на следующей лекции.
03.03.2014
Динамическое программирование

Конец повторения прошлой лекцииРешение поставленной задачи на следующей лекции.03.03.2014Динамическое программирование

Слайд 12Построение оптимальных деревьев поиска
Дано:
набор элементов a1 

по заданным весам построить БДП, минимизирующее значение C0,n.





03.03.2014
Динамическое программирование

Построение оптимальных деревьев поискаДано: набор элементов a1 

Слайд 13Пусть имеется оптимальное дерево.
Согласно принципу оптимальности, лежащему в основе

метода динамического программирования, левое и правое поддеревья этого дерева в

свою очередь также должны быть оптимальны.

03.03.2014

Динамическое программирование

Идея

Пусть имеется оптимальное дерево. Согласно принципу оптимальности, лежащему в основе метода динамического программирования, левое и правое поддеревья

Слайд 14Идея
Tij -поддерево БДП из элементов
(при 0 ≤ i ≤ j ≤ n).










корнем поддерева

может быть любой из элементов , т. е. k ∈ i +1..j.

03.03.2014
Динамическое программирование








ИдеяTij -поддерево БДП из элементов(при 0 ≤ i ≤ j ≤ n). корнем поддерева может быть любой из элементов , т. е.

Слайд 15Обозначения
Пусть
l = l(rij)- уровень корня rij поддерева Tij в дереве

T0,n

L(X) - уровень узла, соответствующего событию X, в поддереве Tij



Тогда l(X) = L(X) + l, где X ∈{Bi, Ai+1, …, Bj}.

03.03.2014

Динамическое программирование


l = l(rij)

rij

L(X)

l(X)

ОбозначенияПусть l = l(rij)- уровень корня rij поддерева Tij в дереве T0,nL(X) - уровень узла, соответствующего событию X,

Слайд 16Вклад поддерева Tij в стоимость C0,n




где


Cij - стоимость поддерева Tij.


wij - вес поддерева Tij.
03.03.2014
Динамическое программирование



Вклад поддерева Tij в стоимость C0,nгдеCij - стоимость поддерева Tij. wij - вес поддерева Tij.03.03.2014Динамическое программирование

Слайд 17Идея: структура дерева + принцип оптимальности











03.03.2014
Динамическое программирование









Идея: структура дерева + принцип оптимальности03.03.2014Динамическое программирование

Слайд 18Преобразование
+
wij не зависит от структуры поддерева Tij
03.03.2014
Динамическое программирование



Преобразование+wij не зависит от структуры поддерева Tij 03.03.2014Динамическое программирование

Слайд 19
Cii = 0
разности индексов k – 1 − i  и j – k  в слагаемых Ci,k−1  и  Ck,j 

меньше, чем разность индексов j – i  в Cij.
L = j – i ,

L=0..n

03.03.2014

Динамическое программирование

Cii = 0разности индексов k – 1 − i  и j – k  в слагаемых Ci,k−1  и  Ck,j  меньше, чем разность индексов j – i  в Cij.L

Слайд 20Таблица (аналогия с задачей о перемножении цепочки матриц)
03.03.2014
Динамическое программирование

Таблица  (аналогия с задачей о перемножении цепочки матриц)03.03.2014Динамическое программирование

Слайд 21for (i =0; i


for (L=1; L

// заполнение T(i, j):
w[i][ j] = w[i][j −1] + (p[j]+q[j]);
c[i][j] = +∞;
for (k =i +1 ; k< j-1; k++) { s = c[i][k −1] + c [k][j];
if (s < c[i][j] ){
c[i][j] = s;
num[i][j] = k
};
}
c[i][j] = c[i][j] + w[i][j];
}
}

03.03.2014

Динамическое программирование

n 2/2 элементов памяти и n 3/3 выполнений тела внутреннего цикла

Вычисление таблицы

for (i =0; i

Слайд 22
См. пример в файле «2_08_ОДП.doc»
С.67,68-…
03.03.2014
Динамическое программирование

См. пример в файле «2_08_ОДП.doc»С.67,68-…03.03.2014Динамическое программирование

Слайд 23Построение БДП
BinT MakeOptBST (int i, j )
{ int k; ElemBinT root;
BinT

L, R;
k  = num[i ][j ];  root  = a[k];
if (i 

R  = MakeOptBST (k, j);
else R  = NULL;
return  ConsBT (root, L, R);
} //MakeOptBST
 
со стартовым вызовом T = MakeOptBST (0, n).

03.03.2014

Динамическое программирование

Построение БДПBinT MakeOptBST (int i, j ){	int k; ElemBinT root; 	BinT  L, R;	k  = num[i ][j ];  root  = a[k];	if (i 

Слайд 24Модификация Д.Кнута ri,j −1 ≤ rij ≤ ri +1,j
03.03.2014
Динамическое программирование


Вместо k = (i +1) .. j ⇒

k = num[i ][j −1]  .. num[i +1][j ]

Модификация Д.Кнута  ri,j −1 ≤ rij ≤ ri +1,j 03.03.2014Динамическое программированиеВместо k = (i +1) .. j  ⇒ k = num[i ][j −1]  .. num[i +1][j

Слайд 25
См. с.72
03.03.2014
Динамическое программирование

См. с.7203.03.2014Динамическое программирование

Слайд 2603.03.2014
Динамическое программирование
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ

ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ

03.03.2014Динамическое программированиеКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика