Upgrade to Pro — share decks privately, control downloads, hide ads and more …

№ 7. АВЛ-деревья, красно-черные деревья, префик...

Avatar for ОПК ОПК
April 05, 2021

№ 7. АВЛ-деревья, красно-черные деревья, префиксные деревья

1. АВЛ-деревья.
2. 2-3-4 деревья.
3. Красно-черные деревья (red-black trees).
4. Префиксные деревья (trie).
5. Слоеные списки (skip list).

Avatar for ОПК

ОПК

April 05, 2021
Tweet

More Decks by ОПК

Other Decks in Programming

Transcript

  1. РЕШЕНИЯ ПРОБЛЕМЫ «КРИВЫХ» ДЕРЕВЬЕВ • Восстановление оптимальности : • «Выворачивание»

    (splay trees), • АВЛ-деревья , • Красно-черные деревья. 1 97 Рис. 11. Дерево поиска, эквивалентное дереву на ри 97 81 44 16 14 13 9 8 1
  2. АВЛ-ДЕРЕВЬЯ • 1962 г. Адельсон-Вельский и Ландис (СССР ) •

    Сбалансированное дерево: высоты двух родственных поддеревьев отличаются не более, чем на единиц у • Перебалансировка после операций вставки и удаления, нарушающих свойство сбалансированности. Идем снизу вверх (к корню), восстанавливая баланс . • В узел добавляется показатель сбалансированности, равный разности высот поддеревьев (0, +1, −1).
  3. БАЛАНСИРОВКА: МАЛЫЙ ЛЕВЫЙ ПОВОРОТ Было Поворот 
 вокруг B Выполняется,

    если B имеет баланс +2, 
 а A имеет баланс ≥ 0. Вставили
  4. БАЛАНСИРОВКА: БОЛЬШОЙ ЛЕВЫЙ ПОВОРОТ Было Поворот 
 вокруг A, C

    Вставили Выполняется, если С имеет баланс +2, 
 а A имеет баланс –1.
  5. БАЛАНСИРОВКА: ПРАВЫЕ ПОВОРОТЫ • Малый правый поворот аналогично малому левом

    у • Большой правый поворот аналогично большому левому
  6. ПРИМЕР АВЛ-ДЕРЕВА Вставляем 1 1 0 Вставляем 2 1 2

    –1 0 Вставляем 3 1 2 –2 –1 3 0 малый 2 1 3 0 0 0
  7. Вставляем 4 2 1 3 –1 –1 0 4 0

    Вставляем 5 2 1 3 –2 –2 0 4 –1 5 0 малый 2 1 –1 0 4 3 5 0 0 0 ПРИМЕР АВЛ-ДЕРЕВА
  8. Вставляем 7 2 1 –1 +1 4 3 5 –1

    –1 0 0 0 7 0 Вставляем 0 2 1 4 0 0 +1 5 0 3 0 0 0 ПРИМЕР АВЛ-ДЕРЕВА
  9. Вставляем 6 2 1 –2 +1 4 3 5 –2

    –2 0 0 0 7 +1 6 0 большой 2 1 –1 +1 4 3 –1 0 0 0 6 5 7 0 0 0 ПРИМЕР АВЛ-ДЕРЕВА
  10. 2-3-4 ДЕРЕВЬЯ • Дерево поиска, узлы которого : • либо

    пусты ; • либо 2-узел: 1 значение, 2 поддерева ; • либо 3-узел: 2 значения, 3 поддерева ; • либо 4-узел: 3 значения, 4 поддерева . • Всегда идеально сбалансировано: высоты всех поддеревьев равны. 6 8 5 9 4 7 6 2 6 3 5 7 4 2 8
  11. 2-3-4 ДЕРЕВЬЯ : ПОИСК И ВСТАВКА • Поиск как в

    обычном дереве поиска . • Вставка в 2-узел: превращаем его в 3-узел . • Вставка в 3-узел: превращаем его в 4-узел . • Вставка в 4-узел: временно создаем 5-узел, вытаскиваем одно из значений и добавляем его в родителя.
  12. ВСТАВКА : 5-УЗЕЛ С РОДИТЕЛЕМ g a b c d

    e d h f … p a b f d d h g c p e … Вытягиваем одно из значений на уровень выше и продолжаем рекурсивно идти наверх, если получился новый 5-узел.
  13. 2-3-4 ДЕРЕВЬЯ: АНАЛИЗ • Высота дерева: log4(N) ≤ h(N) ≤

    log2(N) . • Всегда идеально сбалансировано . • Очень трудоемкая реализация, но идея-то хорошая!
  14. КРАСНО-ЧЕРНЫЕ ДЕРЕВЬ Я RED-BLACK TREES 1. Все узлы либо красные,

    либо черные. Корень черный . 2. Потомки красного узла черные . 3. Все листья (NIL) черные . 4. Пути от любого узла до потомков содержат одинаковое количество черных узлов. 5. (Следствие) Пути от корня до двух любых узлов отличаются не более чем в 2 раза.
  15. RB TREE: АНАЛИЗ • Описаны и изучены в 1970-ые, с

    тех пор стандарт де- факто . • Производительность сравнима с АВЛ-деревьями . • Реализация сложна. Шесть возможных случаев вставки и симметричные им … • И еще столько же на удаление…
  16. RB КАК 2-3-4 Красный узел будем интерпретировать как часть родителя,

    а не как отдельный узел: 9 4 7 6 2 4 9 2 6 7 3 2 4 5 7 6 8 6 3 5 7 4 2 8
  17. RB ВСТАВКА • Вставляемый узел – красный . • Вставка

    в корень – нет проблем (красим в черный цвет) . • Вставка, когда отец черный – нет проблем . • Если отец красный, то…
  18. RB ВСТАВКА : ОТЕЦ И ДЯДЯ КРАСНЫЕ N – new,

    F – father, U – uncle, G - grandfather N F U G d e c a b N F U G d e c a b Вытаскиваем G из NFGU узла Продолжаем идти вверх, «добавляя» G
  19. RB ВСТАВКА : ДЯДЯ ЧЕРНЫЙ (НОВЫЙ СЛЕВА) N – new,

    F – father, U – uncle, G - grandfather N F U G d e c a b U G N F b a c e d Поворот внутри NFG узла
  20. RB ВСТАВКА : ДЯДЯ ЧЕРНЫЙ (НОВЫЙ СПРАВА) N – new,

    F – father, U – uncle, G - grandfather F U G d e N a c b Поворот внутри NFG узла F N U G d e c a b См. предыдущий слайд
  21. ПРИМЕР RB 4 Вставляем 4 корень 4 4 3 Вставляем

    3 4 3 2 поворот 3 2 4 Вставляем 2
  22. ПРИМЕР RB Вставляем 1 2 1 3 4 цвет 2

    1 3 4 корень 2 1 3 4 Вставляем 6 2 1 3 4 6
  23. ПРИМЕР RB Вставляем 5 2 1 3 4 6 5

    2 1 3 4 5 6 поворот 2 1 3 5 6 4 поворот 2 1 3 5 6 4 8 Вставляем 8 2 1 3 5 6 4 8 цвет
  24. ПРИМЕР RB Вставляем 9 2 1 3 5 6 4

    8 9 2 1 3 5 8 4 9 6 поворот
  25. ПРИМЕР RB Вставляем 7 2 1 3 5 8 4

    9 6 7 2 1 3 5 8 4 9 6 7 цвет 8 9 6 7 2 1 3 4 5 поворот
  26. ЗАДАЧКИ О ДЕРЕВЬЯХ Распишите (разрисуйте) процесс добавления в пустое.. .

    1. АВЛ-дерево значений: 0, 7, 9, 2, 4, 6 . 2. 2-3-4-дерево значений: 1, 8, 3, 2, 9, 5, 7 . 3. RB-дерево значений: 0, 3, 2, 9, 6, 5. Каждая задача оценивается в 0,5 у.е.
  27. ПРЕФИКСНОЕ ДЕРЕВО (БОР, TRIE) • A: 1 5 • to:

    7 • tea: 3 • ted: 4 • ten: 1 2 • i: 1 1 • in: 5 • inn: 9 Сложность вставки и поиска ? O(длины строки)
  28. СЛОЕНЫЕ СПИСКИ (SKIP LIST) • Нижний список всегда содержит все

    элементы . • Вероятность попадания в список уровнем выше – p 
 (p=1/2 или 1/4). Еще выше – p2 и т.д. (кидаем монету) . • При удалении элемента удаляем его из всех списков.