Червоно-чорне дерево (англ. red-black tree, англ. RB tree) — в інформатиці — різновид самозбалансованого бінарного дерева пошуку, вершини якого мають додаткові властивості (RB-властивості), зокрема «колір» (червоний або чорний). Ці біти кольору використовуються для забезпечення того, щоб дерево залишалося приблизно збалансованим при виконанні операцій вставки та видалення.
Червоно-чорне дерево | ||
---|---|---|
Тип | дерево | |
Винайдено | 1972 | |
Винайшли | [en] | |
Обчислювальна складність у записі великого О | ||
Середня | Найгірша | |
Простір | O(n) | O(n) |
Пошук | O(log n) | O(log n) |
Вставляння | O(log n) | O(log n) |
Видалення | O(log n) | O(log n) |
Червоно-чорні дерева — різновид збалансованих дерев, в яких за допомогою спеціальних трансформацій гарантується, що висота дерева h не буде перевищувати O(log n). Зважаючи на те, що час виконання основних операцій на бінарних деревах (пошук, видалення, додавання елементу) є O(h), ці структури даних на практиці є набагато ефективнішими, аніж звичайні бінарні дерева пошуку.
RB-властивості
Бінарне дерево називається червоно-чорним, якщо воно має такі властивості:
- кожна вершина або червона, або чорна
- корінь дерева — чорний
- кожний лист (NIL) — чорний
- якщо вершина червона, обидві її дочірні вершини чорні (інакше, батько червоної вершини — чорний)
- усі прості шляхи від будь-якої вершини до листів мають однакову кількість чорних вершин
Такі властивості надають червоно-чорному дереву додаткового обмеження: найдовший шлях з кореня до будь-якого листа перевищує найкоротший шлях не більше ніж вдвічі. В цьому сенсі таке дерево можна назвати збалансованим. Зважаючи на те, що час виконання основних операцій з бінарними деревами пошуку залежить від висоти, таке обмеження гарантує їхню ефективність в найгіршому випадку, чого звичайні бінарні дерева гарантувати не можуть.
Для того, щоби зрозуміти, чому перелічені властивості забезпечують існування такого обмеження, зазначимо, що в червоно-чорному дереві, відповідно до властивості 4 не існує такого шляху, на якому б зустрілись дві червоні вершини підряд. Найкоротший шлях складається з усіх чорних вершин, а в найдовшому червоні та чорні вершини чергуються. З врахуванням властивості 5, отримуємо, що глибина будь-яких двох листів відрізняється не більше ніж вдвічі.
В деяких зображеннях червоно-чорних дерев, NIL-листки не наводяться, тому що вони не містять корисної інформації, але їхнє існування необхідне для забезпечення усіх властивостей.
Основні операції
Операції, які не пов'язані з модифікацією RB-дерева, не потребують коректив і повністю аналогічні відповідним операціям для звичайних бінарних дерев пошуку. Разом з тим, додавання або видалення елементу з червоно-чорного дерева може призвести до порушення RB-властивостей. Відновлення цих властивостей після модифікації дерева потребує порівняно невеликої кількості (O(log n)) операцій зі зміни кольору вершин та не більше як трьох операцій повороту (дві при доданні елементу). Це залишає часові параметри операцій додавання та видалення в межах O(log n), але ускладнює відповідні алгоритми.
Вставка елементу
Процедура починається аналогічно вставці елементу в бінарне дерево пошуку та фарбування її у червоний колір. Подальші дії залежать від кольорів сусідніх вершин. Зазначимо, що:
- властивість 2 завжди зберігається
- властивість 3 порушується тільки при вставці червоної вершини, перефарбуванні чорної вершини в червону або обертанні
- властивість 4 порушується тільки при вставці чорної вершини, перефарбуванні червоної вершини в чорну або обертанні
На допоміжних діаграмах, вершина, яка додається, позначена N, первісний батько цієї вершини позначений P, батько вершини P («дідусь» N) позначений G. «Дядько» N (тобто вершина, яка має спільного з P батька — G) позначений як U. Розглянемо такі випадки:
Випадок 1: Нова вершина знаходиться в корені дерева. В такому випадку необхідно пофарбувати її в чорний колір для забезпечення властивості 1. Очевидно, що властивість 5 при цьому залишається справедливою.
Випадок 2: Батько нової вершини є чорним. Властивість 3 не порушена. В цьому випадку дерево є коректним. Властивість 5 також зберігається, адже червона вершина додається на місце чорного листа і це не змінює кількості чорних вершин на цьому шляху.
Випадок 3: Батько та дядько доданої вершини є червоними. Тоді ми можемо перефарбувати їх обох в чорний, а також перефарбувати дідуся в червоний. Тепер наша червона вершина має чорного батька. Завдяки тому, що будь-який шлях через батька чи дядька повинен проходити і через дідуся, кількість чорних вершин на шляху залишається незмінною. Однак батько дідуся (тобто прадідусь) може бути червоною вершиною, як тепер і дідусь. Якщо це так, слід повторити цю операцію рекурсивно. |
Зауваження: В наступних випадках ми припускаємо, вершина P є лівою дитиною G. Якщо P — права дитина, ліво та право в аналізі наступних випадків слід поміняти місцями.
Випадок 4: Батько є червоним, але дядько — чорний. До того ж, нова вершина — права дитина свого батька, і батько в свою чергу ліва дитина свого батька. В такому випадку, ми можемо провести лівий поворот, внаслідок якого нова вершина та її батько поміняються ролями. Подальші дії з колишнім батьком проводяться відповідно до випадку 5. Зважаючи на те, що нова вершина та її батько є червоними, операція повороту не змінює умови 4. |
Випадок 5: Батько є червоним, але дядько чорний. До того ж, нова вершина — ліва дитина свого батька, і батько є лівою дитиною свого батька. В такому випадку ми проводимо правий поворот навколо дідуся. В результаті колишній батько тепер є батьком і нової вершини, і свого колишнього дідуся. Ми знаємо, що колишній дідусь є чорним, інакше би батько не був червоним. Тепер варто поміняти місцями кольори колишнього батька та дідуся, і тепер дерево виконує властивість 3. Легко бачити, що властивість 4 також залишається незмінною. |
Див. також
Примітки
- James Paton. . Архів оригіналу за 27 травня 2018. Процитовано 21 травня 2018.
- Томас Кормен; Чарльз Лейзерсон, Рональд Рівест, Кліфорд Стайн (2009) [1990]. 13. Червоно-чорні дерева. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
Це незавершена стаття про структури даних. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (січень 2008) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Chervono chorne derevo angl red black tree angl RB tree v informatici riznovid samozbalansovanogo binarnogo dereva poshuku vershini yakogo mayut dodatkovi vlastivosti RB vlastivosti zokrema kolir chervonij abo chornij Ci biti koloru vikoristovuyutsya dlya zabezpechennya togo shob derevo zalishalosya priblizno zbalansovanim pri vikonanni operacij vstavki ta vidalennya Chervono chorne derevo Tip derevo Vinajdeno 1972 Vinajshli en Obchislyuvalna skladnist u zapisi velikogo O Serednya Najgirsha Prostir O n O n Poshuk O log n O log n Vstavlyannya O log n O log n Vidalennya O log n O log n U ChCh derevah chervoni i chorni vershini neobov yazkovo cherguyutsya Chervono chorni dereva riznovid zbalansovanih derev v yakih za dopomogoyu specialnih transformacij garantuyetsya sho visota dereva h ne bude perevishuvati O log n Zvazhayuchi na te sho chas vikonannya osnovnih operacij na binarnih derevah poshuk vidalennya dodavannya elementu ye O h ci strukturi danih na praktici ye nabagato efektivnishimi anizh zvichajni binarni dereva poshuku RB vlastivostiBinarne derevo nazivayetsya chervono chornim yaksho vono maye taki vlastivosti kozhna vershina abo chervona abo chorna korin dereva chornij kozhnij list NIL chornij yaksho vershina chervona obidvi yiyi dochirni vershini chorni inakshe batko chervonoyi vershini chornij usi prosti shlyahi vid bud yakoyi vershini do listiv mayut odnakovu kilkist chornih vershin Chervono chorne derevo Taki vlastivosti nadayut chervono chornomu derevu dodatkovogo obmezhennya najdovshij shlyah z korenya do bud yakogo lista perevishuye najkorotshij shlyah ne bilshe nizh vdvichi V comu sensi take derevo mozhna nazvati zbalansovanim Zvazhayuchi na te sho chas vikonannya osnovnih operacij z binarnimi derevami poshuku zalezhit vid visoti take obmezhennya garantuye yihnyu efektivnist v najgirshomu vipadku chogo zvichajni binarni dereva garantuvati ne mozhut Dlya togo shobi zrozumiti chomu perelicheni vlastivosti zabezpechuyut isnuvannya takogo obmezhennya zaznachimo sho v chervono chornomu derevi vidpovidno do vlastivosti 4 ne isnuye takogo shlyahu na yakomu b zustrilis dvi chervoni vershini pidryad Najkorotshij shlyah skladayetsya z usih chornih vershin a v najdovshomu chervoni ta chorni vershini cherguyutsya Z vrahuvannyam vlastivosti 5 otrimuyemo sho glibina bud yakih dvoh listiv vidriznyayetsya ne bilshe nizh vdvichi V deyakih zobrazhennyah chervono chornih derev NIL listki ne navodyatsya tomu sho voni ne mistyat korisnoyi informaciyi ale yihnye isnuvannya neobhidne dlya zabezpechennya usih vlastivostej Osnovni operaciyiOperaciyi yaki ne pov yazani z modifikaciyeyu RB dereva ne potrebuyut korektiv i povnistyu analogichni vidpovidnim operaciyam dlya zvichajnih binarnih derev poshuku Razom z tim dodavannya abo vidalennya elementu z chervono chornogo dereva mozhe prizvesti do porushennya RB vlastivostej Vidnovlennya cih vlastivostej pislya modifikaciyi dereva potrebuye porivnyano nevelikoyi kilkosti O log n operacij zi zmini koloru vershin ta ne bilshe yak troh operacij povorotu dvi pri dodanni elementu Ce zalishaye chasovi parametri operacij dodavannya ta vidalennya v mezhah O log n ale uskladnyuye vidpovidni algoritmi Vstavka elementu Procedura pochinayetsya analogichno vstavci elementu v binarne derevo poshuku ta farbuvannya yiyi u chervonij kolir Podalshi diyi zalezhat vid koloriv susidnih vershin Zaznachimo sho vlastivist 2 zavzhdi zberigayetsya vlastivist 3 porushuyetsya tilki pri vstavci chervonoyi vershini perefarbuvanni chornoyi vershini v chervonu abo obertanni vlastivist 4 porushuyetsya tilki pri vstavci chornoyi vershini perefarbuvanni chervonoyi vershini v chornu abo obertanni Na dopomizhnih diagramah vershina yaka dodayetsya poznachena N pervisnij batko ciyeyi vershini poznachenij P batko vershini P didus N poznachenij G Dyadko N tobto vershina yaka maye spilnogo z P batka G poznachenij yak U Rozglyanemo taki vipadki Vipadok 1 Nova vershina znahoditsya v koreni dereva V takomu vipadku neobhidno pofarbuvati yiyi v chornij kolir dlya zabezpechennya vlastivosti 1 Ochevidno sho vlastivist 5 pri comu zalishayetsya spravedlivoyu Vipadok 2 Batko novoyi vershini ye chornim Vlastivist 3 ne porushena V comu vipadku derevo ye korektnim Vlastivist 5 takozh zberigayetsya adzhe chervona vershina dodayetsya na misce chornogo lista i ce ne zminyuye kilkosti chornih vershin na comu shlyahu Diagrama dlya vipadku 3 Vipadok 3 Batko ta dyadko dodanoyi vershini ye chervonimi Todi mi mozhemo perefarbuvati yih oboh v chornij a takozh perefarbuvati didusya v chervonij Teper nasha chervona vershina maye chornogo batka Zavdyaki tomu sho bud yakij shlyah cherez batka chi dyadka povinen prohoditi i cherez didusya kilkist chornih vershin na shlyahu zalishayetsya nezminnoyu Odnak batko didusya tobto pradidus mozhe buti chervonoyu vershinoyu yak teper i didus Yaksho ce tak slid povtoriti cyu operaciyu rekursivno Zauvazhennya V nastupnih vipadkah mi pripuskayemo vershina P ye livoyu ditinoyu G Yaksho P prava ditina livo ta pravo v analizi nastupnih vipadkiv slid pominyati miscyami Diagrama dlya vipadku 4 Vipadok 4 Batko ye chervonim ale dyadko chornij Do togo zh nova vershina prava ditina svogo batka i batko v svoyu chergu liva ditina svogo batka V takomu vipadku mi mozhemo provesti livij povorot vnaslidok yakogo nova vershina ta yiyi batko pominyayutsya rolyami Podalshi diyi z kolishnim batkom provodyatsya vidpovidno do vipadku 5 Zvazhayuchi na te sho nova vershina ta yiyi batko ye chervonimi operaciya povorotu ne zminyuye umovi 4 Diagrama dlya vipadku 5 Vipadok 5 Batko ye chervonim ale dyadko chornij Do togo zh nova vershina liva ditina svogo batka i batko ye livoyu ditinoyu svogo batka V takomu vipadku mi provodimo pravij povorot navkolo didusya V rezultati kolishnij batko teper ye batkom i novoyi vershini i svogo kolishnogo didusya Mi znayemo sho kolishnij didus ye chornim inakshe bi batko ne buv chervonim Teper varto pominyati miscyami kolori kolishnogo batka ta didusya i teper derevo vikonuye vlastivist 3 Legko bachiti sho vlastivist 4 takozh zalishayetsya nezminnoyu Div takozhDerevo AlgoritmPrimitkiJames Paton Arhiv originalu za 27 travnya 2018 Procitovano 21 travnya 2018 Tomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 13 Chervono chorni dereva Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Ce nezavershena stattya pro strukturi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2008