ASD_Lecture04
.pdfТеорія алгоритмів
Лекція 4: AVL-дерева, хеш-таблиці
др.інж. Андрій Керницький
kernitsky@gmail.com
к.т.н. Павло Денисюк
Лекція 4
Зміст
•AVL-дерева
•Хеш-таблиці
Лекція 4 |
2 |
Бінарні дерева пошуку (БДП) – Найкращий час
•Всі операції БДП мають часову складність O(d), де d є висотою дерева
•Мінімальне d дорівнює d log2N для бінарного дерева з N вузлами
–Яке дерево є найкращим випадком?
–Яке дерево є найгіршим випадком?
•Найкращий час операцій на БДП дорівнює
O(log N)
Лекція 4 |
3 |
Бінарні дерева пошуку – Найгірший час
•Найгірша часова складність БДП є O(N)
–Що станеться коли ми вставлятимемо елементи у поряку зростання?
•Вставити: 2, 4, 6, 8, 10, 12 у порожнє БДП
–Проблема: Відсутність “балансу”:
•Порівняйте глибинулівого і правого піддерева
–Роззбалансоване вироджене дерево
Лекція 4 |
4 |
Збалансовані і незбалансовані БДП
|
|
1 |
|
|
|
4 |
|
|
|
2 |
|
2 |
5 |
|
|
|
|
3 |
||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
3 |
|
|
4 |
|
4 |
|
|
|
|
|
5 |
|
Дане дерево |
|
|
|
|
|
|
“збалансоване”? |
|
|
2 |
|
6 |
6 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
1 |
3 |
5 |
|
7 |
7 |
|
Лекція 4 |
5 |
Підходи до збалансування дерев
•Не збалансовувати
–Деякі вузли опиняються дуже глибоко
•Ідеальне збалансування
–Дерево завжди повинно бути збалансовано ідеально
•Достатньо хороше збалансування
–Дозволяються незначні відхилення убалансуванні
•Налаштування доступу
•Само-налаштування
Лекція 4 |
6 |
Балансування БДП
•Існує багато алгоритмів для підтримання бінарних дерев пошуку збалансованими
• Дерева Адельсон-Вельського і Ландиса (AVL) (дерева збалансовані по висоті)
Георгій Адельсон-Вельский
8 січня 1922 —
Ашдод, Ізраїль
–Splay-дерева та інші саморегулюючі дерева
–Б-дерева та інші багатосторонні дерева пошуку
–Червоно-чорні дерева
Ландис Євгеній 6 жовтня1921, Харків
— 12 грудня 1997, Москва
Лекція 4 |
7 |
Ідеальне балансування
•Вимагає збалансування дерева після кожної операції
–Дерево є повним за винятком листків
•Дуже накладно
–Наприклад, вставити 2 у дерево зліва і потім перебудувати у повністю збалансоване дерево
|
|
6 |
Вставити 2 & |
|
5 |
|
|
4 |
|
9 деревозбалансувати 2 |
|
|
8 |
1 |
5 |
8 |
1 |
4 |
6 |
9 |
Лекція 4 |
8 |
AVL – хороше, але не ідеальне збалансування
•AVL дерева є збалансованими по висоті БДП
•Баланс вузла
–висота(ліве піддерево) - висота(праве піддерево)
•AVL дерево має баланс, який вираховується для кожного вузла
–Для кожного вузла, висота лівого і правого піддерева може відрізнятися не більше ніж на 1
–Зберігати біжучі висоти у кожному вузлі
Лекція 4 |
9 |
Висота вузлів
Дерево A (AVL) |
|
Дерево B (AVL) |
||
|
висота=2 BF=1-0=1 |
|
|
2 |
1 |
6 |
1 |
|
6 |
0 |
|
1 |
||
4 |
9 |
4 |
|
9 |
0 |
0 |
0 |
0 |
0 |
1 |
5 |
1 |
5 |
8 |
Висота вузла |
= h |
Баланс |
= hleft-hright |
Лекція 4 |
10 |