Развернутое дерево

Раскидистое дерево Развернутое дерево Бинарное дерево поиска с дополнительным свойством быстрого доступа к недавно использованным элементам.   Выполняет основные операции за […]

Раскидистое дерево

  • Развернутое дерево

    • Бинарное дерево поиска с дополнительным свойством быстрого доступа к недавно использованным элементам.  
    • Выполняет основные операции за O(log n) амортизированного времени.  
    • Для произвольного доступа время может быть больше логарифмического.  
  • Преимущества

    • Самооптимизируется, часто используемые узлы перемещаются ближе к корню.  
    • Наихудшая высота O(n), средняя O(log n).  
    • Полезно для кэшей и алгоритмов сбора мусора.  
  • Недостатки

    • Высота может быть линейной, что увеличивает фактическую стоимость операций.  
    • Представление может изменяться при доступе «только для чтения».  
    • Непригодно для многопоточной среды и чисто функционального программирования.  
  • Операции

    • Растопыренный: перемещение узла в корневой каталог.  
    • Сплайсинг: последовательность шагов для перемещения узла ближе к корню.  
    • Зигзагообразные шаги: повороты дерева для решения проблемы четности.  
    • Присоединяйтесь: объединение двух деревьев.  
    • Расщеплять: разделение дерева на два поддерева.  
    • Вставка: вставка и скручивание узла.  
    • Удаление: замена узла и расширение родительского элемента.  
  • Реализация и варианты

    • Развертывание выполняется во время второго прохода.  
    • Альтернативные методы: сохранение родительского указателя, перестройка дерева во время доступа.  
    • Semisplaying: изменение схемы zig-zig для уменьшения реструктуризации.  
  • Анализ

    • Амортизированная стоимость операций: O(log n).  
    • Фактическая стоимость операций: O(log n) + уменьшение потенциала.  
  • Обозначение big O

    • Обозначение big O используется для обозначения времени выполнения операций в разветвленных деревьях.  
    • Минимальный ранг узла равен 0, максимальный — log(n).  
  • Взвешенный анализ

    • Присвойте каждому узлу вес w(r).  
    • Определите размер(r) как сумму весов узлов в поддереве с корнем в узле r.  
    • Определите ранг(r) и Φ аналогично.  
    • Амортизированная стоимость операции расширения равна O(W).  
  • Теоремы о производительности

    • Теорема о балансе: стоимость выполнения последовательности S равна O(m log n + n log n).  
    • Теорема о статической оптимальности: стоимость выполнения S равна O(m + ∑x∈tree qx log m/qx).  
    • Теорема о статическом пальце: стоимость выполнения S равна O(m + n log n + ∑x∈sequence log(|x-f|+1)).  
    • Теорема о динамическом пальце: стоимость выполнения S равна O(m + n + ∑x,y∈sequence m log(|y-x|+1)).  
    • Теорема о рабочем множестве: стоимость выполнения S равна O(m + n log n + ∑x∈sequence log(t(x)+1)).  
  • Гипотеза о динамической оптимальности

    • Гипотеза утверждает, что сплайсированные деревья работают так же хорошо, как и любой другой алгоритм бинарного дерева поиска.  
    • Следствия гипотезы остаются недоказанными.  
  • Варианты

    • Полурастекание: элемент растекается только наполовину по направлению к корню.  
    • Полное разделение: выполняется только при превышении порогового значения длины пути доступа.  
    • CBTree: дополняет разветвленное дерево количеством обращений на каждом узле.  
    • LazyCBTree: выполняет не более одного оборота при каждом поиске.  
  • Дополнительные структуры данных

    • Дерево AVL  
    • B-дерево  
    • Пальчиковое дерево  
    • Геометрия бинарных деревьев поиска  
    • Структура рабочего набора Iacono  
    • Связать/срезать дерево  
    • Список структур данных  
    • Дерево козлов отпущения  
    • Splaysort  
    • Т-образное дерево  
    • Трепать  
    • Вращение дерева  
    • Деревья  
    • Молния (структура данных)  
    • Записи  
    • Рекомендации  

Полный текст статьи:

Развернутое дерево

Оставьте комментарий

Прокрутить вверх