Главная > Графы, сети и алгоритмы
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

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

Упорядоченным деревом называется ориентированное дерево, для которого определен порядок сыновей любой вершины дерева. Обычно мы изображаем упорядоченное дерево так, что корень размещается вверху, а сыновья каждой вершины расположены в соответствии с порядком слева направо. Для бинарного упорядоченного дерева поддерево, корень которого является левым сыном вершины v, называется левым поддеревом вершины v. Аналогично определяется правое поддерево вершины v. Пусть — множество элементов, упорядоченных следующим образом: Бинарным деревом поиска для множества А является упорядоченное бинарное дерево, в котором каждая вершина v так помечена элементом множества А, что 1) для каждого и в левом поддереве вершины для каждого и в правом поддереве вершины для каждого элемента множества А существует точно одна такая вершина v, что . Предположим, А является подмножеством универсума S. Тогда пусть — такое множество, что 1) представляет множество всех элементов для которых

2) представляет собой множество всех элементов для которых

3) представляет множество всех элементов для которых

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

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

Пусть дано подмножество А универсума и дерево Т бинарного поиска для А. Множество может быть множеством всех слов над английским алфавитом, а упорядочение может быть лексикографическим порядком. Предположим, что нам необходимо определить, принадлежит ли элемент множеству А. Сравним с элементом, который соответствует корню дерева Т.

Рис. 15.7. Примеры деревьев бинарного поиска.

При этом могут возникнуть четыре случая, в соответствии с которыми мы продолжаем:

Случай 1. Корень отсутствует (дерево Т бинарного поиска пусто). Следовательно, не принадлежит А, и поиск завершается безуспешно.

Случай равен элементу, соответствующему корню. Следовательно, поиск завершается успешно.

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

Случай больше элемента, соответствующего корню. Поиск продолжается ниже в правом поддереве корня. Ясно, что успешный поиск завершается во внутренних вершинах, а безуспешный — в листьях дерева Т.

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

Пусть — частоты обращения к элементам соответственно, и пусть — частоты, с которыми поиск завершается в листьях Т, представляющих соответственно. Тогда среднее время поиска в дереве всем возможным ситуациям) пропорционально стоимости дерева Т, определяемой в виде (глубина (глубина ).

Например, если , то стоимость дерева, изображенного на рис. 15.7, а, составит . Стоимость дерева, изображенного на рис. 15.7, б, составит

Этот пример дает представление о следующей проблеме. Даны неотрицательные веса Необходимо построить дерево бинарного поиска минимальной стоимости для множества элементы которого упорядочены следующим образом: Нам часто будет удобно ссылаться на такое дерево как на оптимальное дерево бинарного поиска для весов Алгоритм построения оптимального дерева бинарного поиска, который мы сейчас рассмотрим, основан на следующем свойстве таких деревьев:

Пусть Т — оптимальное дерево бинарного поиска для весов Если — элемент, соответствующий корню дерева Т, то левое поддерево корня дерева Т является оптимальным деревом бинарного поиска для весов а правое поддерево корня дерева Т — оптимальным деревом бинарного поиска для весов Пусть для 0 является оптимальным деревом бинарного поиска для множества Пусть — корень дерева — стоимость дерева . Вес дерева определяется как будет деревом, состоящим из листа Поэтому

Рис. 15.8. Поддерево с корнем

Предположим, что — корень дерева . Тогда, как мы уже видели, левое поддерево с корнем является деревом которое в свою очередь является оптимальным деревом бинарного поиска для множества а правое поддерево с корнем является деревом которое в свою очередь является оптимальным деревом бинарного поиска для множества (Рис. 15.8). Так как глубина вершины в дереве Ту на единицу больше ее глубины в дереве или то отсюда следует, что

    (15.27)

Ясно, что мы можем найти корень дерева определив величину которая минимизирует сумму (15.27). Это рассуждение образует основу алгоритма 15.4, который позволяет рассчитать в порядке возрастания величин Этот алгоритм предложен Гильбертом и Муром [15.19].

Алгоритм 15.4. Оптимальное дерево бинарного поиска (Гильберт и Мур).

S1. Даны неотрицательные веса Для положить

S2. Для выполнить шаг

S3. Для выполнить шаг

S4. Положить

Пусть для которого сумма минимальна.

Положить

Вычислив с помощью приведенного выше алгоритма, мы можем легко построить дерево используя следующую процедуру:

1. — корень дерева , Если , то имеет в качестве левого сына , а в качестве правого —

2. Рассмотрим внутреннюю вершину . Если , то имеет в качестве левого сына, а — в качестве правого. Проиллюстрируем алгоритмы 15.4 и приведенную выше процедуру для построения оптимального дерева бинарного поиска.

Тавлица 15.1

Рассмотрим четыре элемента с весами а также В табл. 15.1 указаны значения вычисленные на основе алгоритма 15.4. В этой таблице элементы в строке вычисляются слева направо. Вычисления в какой-либо строке начинаются только после вычислений всех элементов предыдущей строки. На рис. 15.9 представлено соответствующее оптимальное дерево бинарного поиска.

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

Легко показать, что алгоритм 15.4 имеет сложность, равную а процедура построения дерева по таблице — сложность Таким образом, оптимальное дерево бинарного поиска можно построить за время

Кнут [15.20] показал, что корень дерева лежит между корнями Другими словами, Поэтому на шаге поиск величины m можно производить в пределах Сложность алгоритма 15.4 с такой модификацией становится равной Несколько обобщений алгоритма Кнута обсуждаются в работе [15.21].

Авторы работы [15.22] предложили О -алгоритм для построения оптимального дерева бинарного поиска в частном случае, когда Кнут [15.24] показал, что этот алгоритм можно выполнить за время . Другой алгоритм, тесно связанный с алгоритмом — Такера со сложностью для этой же задачи, предложен в работе [15.25]. Этот алгоритм легче проверить: он основан на использовании вариационных методов.

Проведены обширные исследования методов поиска с рассмотрением некоторых вопросов, касающихся оптимальных деревьев бинарного поиска. Детальное обсуждение этих тем и связанная с ними библиография приведены в работах [15.24, 15.26, 15.27].

1
Оглавление
email@scask.ru