Изменения

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

Rope

1394 байта добавлено, 09:24, 4 июня 2014
Нет описания правки
Так как данные операции используют только <tex>split</tex> и <tex>merge</tex> то асимптотика времени их работы <tex>O(h)</tex>, где <tex>h</tex> - высота дерева.
 
==Балансировка==
 
Для того чтобы дерево не превращалось в бамбук:
 
[[file:Bamboo.png|800px|Пример вырождения дерева в бамбук.]]
 
Предлагается хранить его как [[АВЛ-дерево]] и делать соответствующие балансировки. Тогда так как высота АВЛ-дерева <tex>h = \log{n}</tex> то асимптотика операций <tex> get, split, delete, insert</tex> будет равна <tex>O(\log{n})</tex>
 
==Оптимизации==
 
* Для уменьшения объема памяти занимаемой деревом и уменьшения высоты дерево, предлагается при конкатенации с маленькой строкой делать конкатенацию классическим способом.
 
* Кэширование. Так как зачастую нужна последовательный доступ к индексам(например <tex>i</tex> и <tex>i + 1</tex>), то можно запоминать лист, а также его границы, в который мы пришли после очередного запроса <tex>get</tex> и на следующем запросе сначала искать в сохраненном листе.
==Литература==
91
правка

Навигация