Аналогии Трианг

Содержание

Слайд 2

17.03.2014 Динамическое программирование АНАЛОГИИ Решение методом динамического программирования Задачи: Перемножение цепочки

17.03.2014

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

АНАЛОГИИ

Решение методом динамического программирования
Задачи:
Перемножение цепочки матриц
Оптимальные БДП
Задача Х и т.п.

Задачи

подсчета и задачи оптимизации.
Например:
«Число различных расстановок скобок» и «Оптимальная расстановка»
Слайд 3

17.03.2014 Динамическое программирование Оценка количества узлов дерева Оценить количество узлов дерева

17.03.2014

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

Оценка количества узлов дерева

Оценить количество узлов дерева в общем случае

можно подсчетом всех возможных вариантов расстановок скобок в произведении матриц.
Пусть pn – число вариантов расстановок скобок в произведении n сомножителей (включая самые внешние скобки).
Например, для трех сомножителей abc имеем два варианта (a(bc)) и ((ab)c), а следовательно, p3 = 2.
В общем случае, считая, что «последнее» по порядку умножение может оказаться на любом из n –1 мест, запишем следующее рекуррентное соотношение:
pn = p1 pn –1 + p2 pn –2 + … + pn –2 p2 + p n –1 p1.

Из лекции про перемножение матриц

Слайд 4

17.03.2014 Динамическое программирование Начальное условие p1 = 1. Далее p2 =

17.03.2014

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

Начальное условие p1 = 1. Далее
p2 = p1 p1 = 1,
p3 = p1 p2 + p2 p1 = 2,
p4 = p1 p3 + p2 p2 + p3 p1 = 5.
Оказывается [7, с. 393],

что решением этого рекуррентного уравнения являются так называемые числа Каталана pn = Сn –1, где Сn =(2 k | k) / (k +1),
а запись (n | m) обозначает биномиальный коэффициент (n | m) = n!/(m! (n – m)!).
При больших значениях n справедливо

т. е. число узлов в дереве перебора есть экспоненциальная функция от n.

Из лекции про перемножение матриц

Слайд 5

17.03.2014 Динамическое программирование Несколько первых чисел Каталана Ср. Сn –1 и

17.03.2014

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

Несколько первых чисел Каталана

Ср. Сn –1 и (n3 – n)/3
Например,

при n = 10

Из лекции про перемножение матриц

Слайд 6

17.03.2014 Динамическое программирование Число bn структурно различных бинарных деревьев с n

17.03.2014

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

Число bn структурно различных бинарных деревьев с n узлами


bk

bn − k − 1

1

k ∈ 0..(n – 1)

Это рекуррентное уравнение с точностью до обозначений совпадает с рекуррентным уравнением, получающимся при подсчете числа расстановки скобок в произведении n сомножителей
(см. лекцию 16, слайд 16).

Из лекции про БДП

Слайд 7

17.03.2014 Динамическое программирование b2 = b0 b1 + b1 b0 =

17.03.2014

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

b2 = b0 b1 + b1 b0 = 2,
b3 = b0 b2 + b1 b1 + b2 b0 = 5,
b4 = b0 b3 + b1 b2 +  b2 b1 + b3 b0 = 
= 5 + 2 + 2 + 5

= 14
Решением рекуррентного уравнения являются так называемые числа Каталана Сn, т. е. bn = Сn.
Ранее (Лекция 13, слайды хх, хх) были приведены: общая формула для чисел Каталана и асимптотическое соотношение

Из лекции про БДП

Слайд 8

Решение методом динамического программирования Структура оптимального решения Рекуррентное соотношение Вычисление оптимальной

Решение методом динамического программирования

Структура оптимального решения
Рекуррентное соотношение
Вычисление оптимальной стоимости (по рекуррентному

соотношению)
Построение оптимального решения
Проиллюстрировать на предыдущих примерах

17.03.2014

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

Слайд 9

17.03.2014 Динамическое программирование Задача: оптимальная триангуляция выпуклого многоугольника

17.03.2014

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

Задача: оптимальная триангуляция выпуклого многоугольника

Слайд 10

17.03.2014 Динамическое программирование Триангуляция (диагонали не пересекаются внутри многоугольника) Задача: оптимальная

17.03.2014

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

Триангуляция
(диагонали не пересекаются внутри многоугольника)

Задача: оптимальная триангуляция выпуклого многоугольника

Выпуклый

n-угольник
Число диагоналей: n – 3
Число треугольников: n – 2

7-угольник
Диагоналей: 4
Треугольников: 5

Слайд 11

17.03.2014 Динамическое программирование На треугольниках определена весовая функция w(Δvivjvk) Например, w(Δv1v2v3)

17.03.2014

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

На треугольниках определена весовая функция w(Δvivjvk)
Например, w(Δv1v2v3) = ⎪v1v2⎪+⎪v2v3⎪

+⎪v2v3⎪

Задача: оптимальная триангуляция многоугольника

Требуется найти триангуляцию, для которой сумма весов Δ-ков будет минимальной

v1

v2

v3

Слайд 12

17.03.2014 Динамическое программирование Количество способов триангуляции Вершин n, диаг. = n

17.03.2014

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

Количество способов триангуляции

Вершин n, диаг. = n – 3 ,

треуг. = n – 2

n = 4, диаг. =1, треуг. = 2, вариантов = 2

n = 5, диаг. =2, треуг. = 3, вариантов = 5

Слайд 13

17.03.2014 Динамическое программирование Количество способов триангуляции n = 6, диаг. =3,

17.03.2014

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

Количество способов триангуляции

n = 6, диаг. =3, треуг. = 4, вариантов

= 14

5

5

2

2

1

1

d6 = d2d5 + d3d4 + d4d3 + d5d2

Слайд 14

17.03.2014 Динамическое программирование Рекуррентная формула для веса оптимальной триангуляции многоугольника (ОТМ),

17.03.2014

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

Рекуррентная формула для веса оптимальной триангуляции многоугольника (ОТМ), 1

mij –

вес ОТМ (vi,vi+1,…,vj)
m1n – вес ОТМ (v1,v2,…,vn)
Для двуугольника mi,i+1 = w(vi-1,vi)=0

Mij = многоугольник (vi, vi+1,…, vj), iТ.е. M1n = многоугольник (v1, v2,…, vn)

Слайд 15

Динамическое программирование Вычисление таблиц: mi,i+1 = 0, {при i=1..n-1} mi,i+2 =

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

Вычисление таблиц:
mi,i+1 = 0, {при i=1..n-1}
mi,i+2 = w(Δi,i+1,i+2), {при i=1..n-2}


mi,i+3 =…

mi,i+n-2 → m1,n-1 , m2,n {при i=1, 2}
mi,i+n-1 = m1n {при i=1}
Время ≈С1n3, память ≈С2n2

17.03.2014

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

Слайд 16

17.03.2014 Динамическое программирование Рекуррентная формула для веса оптимальной триангуляции многоугольника (ОТМ),

17.03.2014

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

Рекуррентная формула для веса оптимальной триангуляции многоугольника (ОТМ), 2

mij –

вес ОТМ (vi-1,vi,…,vj)
m1n – вес ОТМ (v0,v1,…,vn)
Для двуугольника mii = w(vi-1,vi)=0
Время ≈С1n3, память ≈С2n2

Mij = многоугольник (vi-1, vi,…, vj), iТ.е. M1n = многоугольник (v0, v2,…, vn), т.е. это (n+1)-углнк

В таком виде почти полное сходство с прежними примерами!

Слайд 17

17.03.2014 Динамическое программирование Упражнения Доказать что триангуляция n – угольника содержит

17.03.2014

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

Упражнения

Доказать что триангуляция n – угольника содержит n-2 треугольника и

n-3 диагоналей.
Пусть вес треугольника = его площади. Можно ли упростить алгоритм поиска ОТМ?
Весовая функция определена на множестве диагоналей многоугольника. ОТМ – сумма весов диагоналей минимальна. Как свести эту задачу к рассмотренной?
Слайд 18

17.03.2014 Динамическое программирование Связь задач 1 2 3 4 5 0

17.03.2014

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

Связь задач

1

2

3

4

5

0

M1

M2

M3

M4

M5
(M1 M2) (( M3 M4) M5)

M1

M2

M3

M4

M5

M1 M2

M3 M4

(

M3 M4) M5

(M1 M2) (( M3 M4) M5)

Слайд 19

17.03.2014 Динамическое программирование Связь задач 1 2 3 4 5 0

17.03.2014

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

Связь задач

1

2

3

4

5

0

(M1 M2) (( M3 M4) M5)

M1

M2

M3

M4

M5

M1 M2

M3 M4

( M3

M4) M5

(M1 M2) (( M3 M4) M5)

w(Δvivjvk) = ri rj rk

Слайд 20

17.03.2014 Динамическое программирование Триангуляции Деревья

17.03.2014

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

Триангуляции

Деревья

Слайд 21

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

17.03.2014

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

0 1 0 1 0 1

0 1 0 0 1

1

0 0 1 1 0 1

0 0 0 1 1 1

0

1

0 0 1 0 1 1

Коды

Пути в решетке

Слоистая сеть (спец. вида)

Слайд 22

Преобразование «Ползущий червь» 17.03.2014 Динамическое программирование 0 1 0 0 1

Преобразование «Ползущий червь»

17.03.2014

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

0 1 0 0 1 1

Обход в глубину:


от узла влево – 0; вправо - 1
Слайд 23

Литература Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ

Литература

Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ :

учеб./ М.: МЦМНО, 1999. – 960 с. (Классические учебники: Computer science). (Доп. тираж 2000 г., 2001 г., 2002 г.) [Опт.Трианг.]
Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2007, 2009. – 1296 с.
Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 3-е издание.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2013. – 1328 с.

17.03.2014

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