Изменения

Перейти к: навигация, поиск

Алгоритм Шибера-Вишкина

5 байт добавлено, 17:56, 21 июня 2012
Подготовка
Рассмотрим два случая.
 '''Первый случай''' <tex>\operatorname{inorder} v = \operatorname{order} v</tex>
Других таких вершин <tex>u'</tex>, что <tex>u'</tex> дает такую же степень двойки, нет.
Значит, во всех поддеревьях <tex>v</tex> значения <tex>\operatorname{inorder}</tex> отличаются
от <tex>\operatorname{inorder} v</tex>.
'''Второй случай''' <tex>\operatorname{inorder} v = \operatorname{order} u</tex>, <tex>u \in S(v), u \ne v</tex>
Так как в поддереве <tex>v</tex> представлены все <tex>\operatorname{order}</tex>-ы из отрезка <tex>[\operatorname{order} v; \operatorname{order} v + \operatorname{size} v - 1]</tex>, то рассмотрим того потомка <tex>w</tex> вершины <tex>v</tex>, что <tex>u \in S(w)</tex>. Тогда, так как степень двойки у <tex>u</tex> максимальна, по утверждению в начале доказательства, других вершин с такой же степенью двойки нет, то <tex>\operatorname{inorder} w = \operatorname{inorder} v = \operatorname{order} u</tex>. Так как отрезки, соответствующие поддеревьям сыновей, не пересекаются, не найдется другого <tex>w'</tex> {{---}} потомок <tex>v</tex>, что в поддереве <tex>w'</tex> есть вершина с такой же степенью двойки. Значит, все вершины <tex>v'</tex>, у которых <tex>\operatorname{inorder} v' = \operatorname{inorder} v</tex> находятся в поддереве <tex>w</tex>. Проведя аналогичное доказательство для <tex>w</tex>, получим требуемое.
}}
Анонимный участник

Навигация