170
правок
Изменения
Нет описания правки
==Динамическая оптимальность==
{{Определение
|definition=Динамическая оптимальность(Dynamic Opt)}}
Если мы разрешаем перестраивать деревья в процессе запроса, то splay-деревья не больше, чем в константу хуже оптимальных.
{{Гипотеза
|statement=Splay-деревья обладают динамической оптимальностью.То есть время работы splay-дерева <tex>O(OPT dyn)</tex>
}}
===Модель оптимального дерева===
Рассмотрим ключи <tex>1..n </tex> и запросы x1<tex>x_{1}..xnx_{n}</tex>, где xi принадлежит <tex>x_{i} \in \{1..n\} </tex> – ключ, к которому мы обращаемся.
{{Утверждение|statement=Существует некоторое гипотетическое оптимальное дерево, которое на каждый запрос делает следующие вещи- # идет от корня до xi<tex>x_{i}</tex>- # делает какие-то количество поворотов}}
Время работы tango-дерева <tex>O(OPT dyn * log log n)</tex>
===Оценка снизу на динамический оптимум===
===Визуализация работы с гипотетически оптимальным динамическим двоичным деревом поиска===
Рассмотрим оси ключи от времени
Множество точек определяет, что происходило с деревом.
{{Определение|definition=Множество точек называется '''древесным ''' (aboral), если выполняется следующее свойство:
возьмем произвольный невырожденный прямоугольник(площадь прямоугольника больше нуля) с углами в наших точках.
}}
(рис. 1)
3) Запрос 4 : вершина 3 – вершина 4
{{Утверждение|statement=Множество точек удовлетворяет свойству древесности, если на любом прямоугольнике с вершинами в наших точках есть еще хотя бы одна точка, отличная от точек, на которых его построили.}} {{Теорема|statement=Множество точек является фазовой диаграммой работы с некоторым деревом поиска тогда и только тогда, когда оно обладает свойством древесности.
Пусть мы обращались к какому-то ключу <tex>x </tex> в <tex>i</tex>-ом запросе и к какому-то ключу <tex>y </tex> в <tex>j</tex>-ом запросе.
Рассмотрим этот прямоугольник.
На момент <tex>i</tex>-го запроса рассмотрим в дереве поиска наименьшего общего предка <tex>x </tex> и <tex>y </tex> -– вершину <tex>t</tex>.Если <tex>t != x</tex>, то все хорошо, значит в дереве поиска он она находится между <tex>х </tex> и <tex>у</tex>, поэтому мы к нему обращались в то время, когда шли к <tex>х</tex>, значит есть точка на стороне нашего многоугольника.
(Рис.2)
(рисунок надо?)
Для любого прямоугольника, построенного на наших точках, есть еще одна точка на стороне.
Когда таких точек (как z) не останется, то мы получим прямоугольник, у которого нет точек на всех сторонах, а это противоречит исходному условию.
Поэтому при перестроении декартова дерева нам не потребуется переходить из нашей верхней зоны
}}
Таким образом, мы получили какую-то offline оптимальность.