Глава 2. Деревья. Тема 3. Оптимальное дерево поиска презентация

Содержание

Слайд 2

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

Дано:
n – количество ключей,
d1 < d2 < … < dn –

упорядоченное множество ключей
p1, p2, …, pn – частоты (вероятности), с которыми эти ключи появляются на входе процедуры поиска.
Например:
n = 3,
d1 = 10, d2 = 20, d3 = 30
p1 = 5, p2 = 3, p3 = 2 (p1 = 0.5, p2 = 0.3, p3 = 0.2)
Требуется построить дерево поиска для заданного множества ключей такое, чтобы ключи наиболее часто запрашиваемые находились как можно быстрее.

Слайд 3

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

Один из методов построения – полный перебор:

n = 3,
d1 =

10, d2 = 20, d3 = 30
p1 = 5, p2 = 3, p3 = 2 (p1 = 0.5, p2 = 0.3, p3 = 0.2)

5*3 +
3*2 + 2*1 =
= 23

5*2 +
3*3 + 2*1 =
= 21

5*2 +
3*1 + 2*2 =
= 17

5*1 +
3*3 + 2*2 =
= 18

5*1 +
3*2 + 2*3 =
= 17

Уровни
1
2
3

Слайд 4

Оптимальное дерево поиска
Никлаус Вирт:
«Учитывая, что число возможных конфигураций из n вершин растет экспоненциально

с ростом n, задача построения оптимального дерева при больших n кажется совершенно безнадежной.»

Слайд 5

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

Никлаус Вирт:
«Однако оптимальные деревья обладают одним важным свойством, которое помогает их

обнаруживать: Все их поддеревья тоже оптимальны!»

Слайд 6

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

Это позволяет разработать алгоритм, который систематически находит всё бόльшие и бόльшие

поддеревья, начиная с отдельных вершин, как наименьших возможных поддеревьев.

Таким образом, дерево растет
«от листьев к корню», «снизу вверх»…
Н. Вирт. Алгоритмы и структуры данных.

Слайд 7

Примеры деревьев поиска

Дерево поиска, используемое в трансляторах для опознания служебных слов (есть часто

используемые – int, for, есть реже – enum, union).
База данных библиотеки (есть часто запрашиваемые книги, есть поднимаемые раз в 10 лет, есть часто запрашиваемые книги, которых в библиотеке нет).

В оптимальном дереве поиска учитываются частоты поиска различных ключей:
1) как входящих в дерево,
2) так и тех, которых нет в дереве.

Слайд 8

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

Дано:
n – количество ключей,
d1 < d2 < … < dn –

упорядоченное множество ключей
p1, p2, …, pn – частоты (вероятности), с которыми эти ключи появляются на входе процедуры поиска (удобнее использовать частоты).
Также даны «промежуточные» частоты:
qi – частота поиска значений между di и di+1 (di < x < di+1).
q0 – частота поиска значений меньше d0 (x < d0).
qn – частота поиска значений больше dn (x > dn).

Слайд 9

Пример оптимального дерева поиска

Пример исходных данных:
d: 10, 20, 30
p: 10, 3, 2
q:

4 2 3 4

20

30

10

<

<

<

<

<

<

x < 10

10 < x < 20

30 < x

20 < x < 30

Суммарная длина (цена) путей поиска = сумме частот (зелёные у узлов, пурпурные у ловушек), умноженных на соответствующие высоты

4*3 + 10*2 + 2*3 + 3*1 + 3*3 + 2*2 + 4*3 = 66

4*2 + 10*1 + 2*4 + 3*3 +
3*4 + 2*2 + 4*3 = 63

Слайд 10

Пример оптимального дерева поиска

20

30

10

<

<

<

<

<

<

x < 10

10 < x < 20

30 < x

20 <

x < 30

4*3 + 10*2 + 2*3 + 3*1 + 3*3 + 2*2 + 4*3 = 66

Идеальное, но не оптимальное!

Не идеальное, не сбалансированное, но оптимальное!

Внешний узел (ловушка)

4*2 + 10*1 + 2*4 + 3*3 +
3*4 + 2*2 + 4*3 = 63

Внутренний узел

Слайд 11

Построение оптимального дерева поиска

 

Слайд 12

Построение оптимального дерева поиска

Утверждение:
В оптимальном дереве все поддеревья также являются оптимальными.
Доказательство:
Рассмотрим оптимальное дерево

T. Предположим, что его левое поддерево не является оптимальным.
Заменим левое поддерево на оптимальное, получив дерево T*. Вклад вершин левого поддерева в общую стоимость дерева T* меньше, чем у Т. Следовательно, исходное дерево Т не является оптимальным.
Аналогично для правого поддерева.
Утверждение доказано.

Слайд 13

Построение оптимального дерева поиска

 

Слайд 14

Построение оптимального дерева поиска

 

Слайд 15

Построение оптимального дерева поиска

 

Слайд 16

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

 

Таких матриц будет три: W – матрица весов C – матрица стоимости R

– матрица номеров ключей в корнях поддеревьев

Слайд 17

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

 

Порядок перебора пар для поиска k (h = 4, i

= 1)
Обратите внимание, что к моменту вычисления значений в оранжевой клетке, значения предшествующих ей диагоналей уже посчитаны

Слайд 18

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

 

 

Рекурсивные вызовы

Слайд 19

Пример построения оптимального дерева поиска
d:
p:
q:

10

1

1

10

1

0

1

2

3

4

4

3

2

1

0

W

10

1

1

10

1

0

1

2

3

4

4

3

2

1

0

C

0

1

2

3

4

4

3

2

1

0

R

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз


10

20

30

40

Слайд 20

Пример построения оптимального дерева поиска
d:
p:
q:

10

1

16

1

3

10

12

1

13

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

10

23

1

24

0

1

2

3

4

4

3

2

1

0

C

4

3

2

1

0

1

2

3

4

4

3

2

1

0

R

 

 

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз


10

20

30

40

Слайд 21

Пример построения оптимального дерева поиска
d:
p:
q:

10

1

16

1

3

18

10

12

14

1

13

15

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

1

24

39

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

1

1

0

1

2

3

4

4

3

2

1

0

R

 

 

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз


10

20

30

40

Слайд 22

Пример построения оптимального дерева поиска
d:
p:
q:

10

1

16

1

3

18

10

12

14

29

1

13

15

17

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

68

1

24

39

46

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

4

1

1

2

0

1

2

3

4

4

3

2

1

0

R

 

 

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз


10

20

30

40

Слайд 23

Пример построения оптимального дерева поиска
d:
p:
q:

10

1

16

1

3

18

10

12

14

29

1

13

15

17

32

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

68

1

24

39

46

88

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

4

1

1

2

4

0

1

2

3

4

4

3

2

1

0

R

 

 

 

10

20

30

40

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз


Слайд 24

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

4

3

4

2

2

4

1

1

2

4

0

1

2

3

4

4

3

2

1

0

R

Построение дерева начинается с правого верхнего угла

40

20

30

<

<

<

<

<

<

10

<

<

 

 

 

 

 

 

 

 

 

 

d:
p:
q:

2

1

1

5

1

10

1

1

10

10

20

30

40

0

1

2

3

4

Слайд 25

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

 

Доказательство изложено в:
Knuth, Donald E. (1971) "Optimum binary

search trees", Acta Informatica 1 (1): 14–25, doi:10.1007/BF00264289

Слайд 26

 
d:
p:
q:

10

1

16

1

3

18

10

12

14

1

13

15

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

1

24

39

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

1

1

0

1

2

3

4

4

3

2

1

0

R

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз ↘

10

20

30

40

 

 

Слайд 27

 
d:
p:
q:

10

1

16

1

3

18

10

12

14

29

1

13

15

17

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

68

1

24

39

46

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

4

1

1

2

0

1

2

3

4

4

3

2

1

0

R

 

 

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз ↘

10

20

30

40

 

Слайд 28

 
d:
p:
q:

10

1

16

1

3

18

10

12

14

29

1

13

15

17

32

0

1

2

3

4

4

3

2

1

0

W

10

1

27

1

5

33

10

23

29

68

1

24

39

46

88

0

1

2

3

4

4

3

2

1

0

C

4

3

4

2

2

4

1

1

2

4

0

1

2

3

4

4

3

2

1

0

R

 

10

20

30

40

2

1

1

5

1

10

1

1

10

Порядок вычислений всегда соответствует движению по диагонали сверху вниз ↘

 

 

Имя файла: Глава-2.-Деревья.-Тема-3.-Оптимальное-дерево-поиска.pptx
Количество просмотров: 10
Количество скачиваний: 0