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

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

B1196c22fd3ca181eec43e1b67823d3f?s=47 ОПК
April 05, 2021

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

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

B1196c22fd3ca181eec43e1b67823d3f?s=128

ОПК

April 05, 2021
Tweet

Transcript

  1. ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция № 7 
 5 апреля 2021

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

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

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

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

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

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

    –1 0 Вставляем 3 1 2 –2 –1 3 0 малый 2 1 3 0 0 0
  8. Вставляем 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 ПРИМЕР АВЛ-ДЕРЕВА
  9. Вставляем 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 ПРИМЕР АВЛ-ДЕРЕВА
  10. Вставляем 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 ПРИМЕР АВЛ-ДЕРЕВА
  11. 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
  12. 2-3-4 ДЕРЕВЬЯ : ПОИСК И ВСТАВКА • Поиск как в

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

    e d h f a b f d d h g c e
  14. ВСТАВКА : 5-УЗЕЛ С РОДИТЕЛЕМ g a b c d

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

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

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

    тех пор стандарт де- факто . • Производительность сравнима с АВЛ-деревьями . • Реализация сложна. Шесть возможных случаев вставки и симметричные им … • И еще столько же на удаление…
  18. 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
  19. RB ВСТАВКА • Вставляемый узел – красный . • Вставка

    в корень – нет проблем (красим в черный цвет) . • Вставка, когда отец черный – нет проблем . • Если отец красный, то…
  20. 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
  21. 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 узла
  22. 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 См. предыдущий слайд
  23. ПРИМЕР RB 4 Вставляем 4 корень 4 4 3 Вставляем

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

    1 3 4 корень 2 1 3 4 Вставляем 6 2 1 3 4 6
  25. ПРИМЕР 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 цвет
  26. ПРИМЕР RB Вставляем 9 2 1 3 5 6 4

    8 9 2 1 3 5 8 4 9 6 поворот
  27. ПРИМЕР 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 поворот
  28. ЗАДАЧКИ О ДЕРЕВЬЯХ Распишите (разрисуйте) процесс добавления в пустое.. .

    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 у.е.
  29. НЕ-ДЕРЕВЬЯ И НЕ-ПОИСКА

  30. ПРЕФИКСНОЕ ДЕРЕВО (БОР, TRIE) • A: 1 5 • to:

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

    элементы . • Вероятность попадания в список уровнем выше – p 
 (p=1/2 или 1/4). Еще выше – p2 и т.д. (кидаем монету) . • При удалении элемента удаляем его из всех списков.
  32. КОНЕЦ СЕДЬМОЙ ЛЕКЦИИ