В інформатиці, базисне дерево (також компактне префіксне дерево) — структура даних, яка є оптимізованим по пам'яті префіксним деревом, в якому кожна вершина, яка є єдиним нащадком, об'єднується з її батьком. В результаті кількість нащадків кожної внутрішньої вершини не перевищує базис r базисного дерева, де r — натуральне число і степінь x числа 2, x ≥ 1. На відміну від звичайних префіксних дерев, ребра можуть бути позначені як окремими елементами, так і їх послідовностями. Це робить базисні дерева набагато ефективнішими для малих наборів рядків (особливо, якщо рядки мають велику довжину) та для наборів, в яких рядки мають спільний префікс великої довжини.
На відміну від звичайних дерев (де ключі масово порівнюються від їх початку до точки нерівності), ключ кожної вершини порівнюється блоками бітів, де кількість бітів в блоці цієї вершини дорівнює базису r базисного дерева. Коли r дорівнює 2, базисне дерево є бінарним (тобто порівнює частину з 1 біта ключа цієї вершини), що мінімізує розрідженість за рахунок максимізації глибини дерева, тобто збільшення до першого неспівпадіння бітів в рядку ключа. Коли r — степінь числа 2 та не менше 4, то базисне дерево є r-нарним, яке зменшує глибину базисного дерева за рахунок потенційної розрідженості.
Застосування
Базисні дерева зручні для конструювання асоціативних масивів із ключами, які можна виразити у вигляді рядків. Вони мають застосування в маршрутизації IP, де можливість містити великі діапазони значень за деякими винятками особливо підходить для ієрархічної організації IP-адрес. Вони також використовуються для інвертованих індексів текстових документів в інформаційному пошуку.
Операції
Базисне дерево підтримує операції додавання, видалення та пошуку. Операція додавання додає новий рядок до дерева, намагаючись мінімізувати об'єм збережених даних. Операція видалення видаляє рядок з дерева. Операція пошуку включає в себе (але не обов'язково обмежується) точний пошук, знаходження попередника, знаходження наступника та знаходження всіх рядків із префіксом. Складність всіх цих операцій O(k), де k — максимальна довжина всіх рядків у наборі та довжина вимірюється у кількості бітів рівних базису дерева.
Пошук
Операція пошуку визначає, чи рядок належить дереву. Більшість операцій змінюють цей підхід певним чином для вирішення своїх конкретних завдань. Наприклад, вершина, де закінчується рядок, може мати важливе значення. Ця операція схожа на аналогічну в префіксному дереві, за винятком того, що деякі ребра містять кілька елементів.
Додавання
Щоб вставити рядок, ми виконуємо пошук у дереві, доки ми не зможемо досягти подальшого прогресу. На цьому етапі ми або додаємо нове вихідне ребро, позначене усіма елементами у вхідному рядку, які залишились, або, якщо вже існує вихідне ребро, що має префікс, який збігається з елементами у вхідному рядку, які залишились, ми розбиваємо його на два ребра (перше позначено спільним префіксом) та продовжуємо. Цей крок розділення гарантує, що жодна вершина не має більше нащадків, ніж є можливих елементів рядка.
Видалення
Щоб видалити рядок x з дерева, спершу знаходимо лист, що представляє x. Тоді, якщо x існує, ми видаляємо відповідну вершину-лист. Якщо батько цієї вершини-листа має тільки одного іншого нащадка, то позначення вхідного ребра цього нащадка додається до вхідного ребра батька, а вершина-нащадок видаляється.
Додаткові операції
- Знайти всі рядки зі спільним префіксом: повертає масив рядків, які мають однаковий префікс.
- Знайти попередника: знаходить найбільший рядок, менший ніж заданий, в лексикографічному порядку.
- Знайти наступника: знаходить найменший рядок, більший ніж заданий, в лексикографічному порядку.
Порівняння з іншими структурами даних
(У наступних порівняннях вважається, що ключі мають довжину k та структура даних містить n елементів.)
На відміну від збалансованих дерев, базисні дерева дозволяють шукати, вставляти та видаляти елементи за O(k) часу, а не O(log n). Це не схоже на перевагу, оскільки зазвичай k ≥ log n, але в збалансованому дереві кожне порівняння — це порівняння рядків, що вимагають O(k) часу у найгіршому випадку, багато з яких на практиці повільні через довгі спільні префікси (у випадку, коли порівняння починаються з початку рядка). У префіксному дереві, всі порівняння здійснюються за константний час, але для пошуку рядка довжини m потрібно здійснити m порівнянь. Базисні дерева можуть виконувати ці операції з меншою кількістю порівнянь і потребують значно менше вершин.
Базисні дерева також мають недоліки префіксних дерев, однак, оскільки вони можуть бути застосовані тільки до рядків або елементів з ефективним зворотнім співставленням до рядків, їм бракує повної універсальності збалансованих дерев пошуку, які застосовуються до будь-якого типу даних із лінійною впорядкованістю. Зворотне співставлення до рядків може бути використане для отримання необхідної лінійної впорядкованості для збалансованих дерев пошуку, але не навпаки. Це також може бути проблематично, якщо тип даних надає тільки операцію порівняння, але не операцію (де)серіалізації.
Це незавершена стаття про структури даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V informatici bazisne derevo takozh kompaktne prefiksne derevo struktura danih yaka ye optimizovanim po pam yati prefiksnim derevom v yakomu kozhna vershina yaka ye yedinim nashadkom ob yednuyetsya z yiyi batkom V rezultati kilkist nashadkiv kozhnoyi vnutrishnoyi vershini ne perevishuye bazis r bazisnogo dereva de r naturalne chislo i stepin x chisla 2 x 1 Na vidminu vid zvichajnih prefiksnih derev rebra mozhut buti poznacheni yak okremimi elementami tak i yih poslidovnostyami Ce robit bazisni dereva nabagato efektivnishimi dlya malih naboriv ryadkiv osoblivo yaksho ryadki mayut veliku dovzhinu ta dlya naboriv v yakih ryadki mayut spilnij prefiks velikoyi dovzhini Na vidminu vid zvichajnih derev de klyuchi masovo porivnyuyutsya vid yih pochatku do tochki nerivnosti klyuch kozhnoyi vershini porivnyuyetsya blokami bitiv de kilkist bitiv v bloci ciyeyi vershini dorivnyuye bazisu r bazisnogo dereva Koli r dorivnyuye 2 bazisne derevo ye binarnim tobto porivnyuye chastinu z 1 bita klyucha ciyeyi vershini sho minimizuye rozridzhenist za rahunok maksimizaciyi glibini dereva tobto zbilshennya do pershogo nespivpadinnya bitiv v ryadku klyucha Koli r stepin chisla 2 ta ne menshe 4 to bazisne derevo ye r narnim yake zmenshuye glibinu bazisnogo dereva za rahunok potencijnoyi rozridzhenosti ZastosuvannyaBazisni dereva zruchni dlya konstruyuvannya asociativnih masiviv iz klyuchami yaki mozhna viraziti u viglyadi ryadkiv Voni mayut zastosuvannya v marshrutizaciyi IP de mozhlivist mistiti veliki diapazoni znachen za deyakimi vinyatkami osoblivo pidhodit dlya iyerarhichnoyi organizaciyi IP adres Voni takozh vikoristovuyutsya dlya invertovanih indeksiv tekstovih dokumentiv v informacijnomu poshuku OperaciyiBazisne derevo pidtrimuye operaciyi dodavannya vidalennya ta poshuku Operaciya dodavannya dodaye novij ryadok do dereva namagayuchis minimizuvati ob yem zberezhenih danih Operaciya vidalennya vidalyaye ryadok z dereva Operaciya poshuku vklyuchaye v sebe ale ne obov yazkovo obmezhuyetsya tochnij poshuk znahodzhennya poperednika znahodzhennya nastupnika ta znahodzhennya vsih ryadkiv iz prefiksom Skladnist vsih cih operacij O k de k maksimalna dovzhina vsih ryadkiv u nabori ta dovzhina vimiryuyetsya u kilkosti bitiv rivnih bazisu dereva Poshuk Operaciya poshuku viznachaye chi ryadok nalezhit derevu Bilshist operacij zminyuyut cej pidhid pevnim chinom dlya virishennya svoyih konkretnih zavdan Napriklad vershina de zakinchuyetsya ryadok mozhe mati vazhlive znachennya Cya operaciya shozha na analogichnu v prefiksnomu derevi za vinyatkom togo sho deyaki rebra mistyat kilka elementiv Dodavannya Shob vstaviti ryadok mi vikonuyemo poshuk u derevi doki mi ne zmozhemo dosyagti podalshogo progresu Na comu etapi mi abo dodayemo nove vihidne rebro poznachene usima elementami u vhidnomu ryadku yaki zalishilis abo yaksho vzhe isnuye vihidne rebro sho maye prefiks yakij zbigayetsya z elementami u vhidnomu ryadku yaki zalishilis mi rozbivayemo jogo na dva rebra pershe poznacheno spilnim prefiksom ta prodovzhuyemo Cej krok rozdilennya garantuye sho zhodna vershina ne maye bilshe nashadkiv nizh ye mozhlivih elementiv ryadka Vidalennya Shob vidaliti ryadok x z dereva spershu znahodimo list sho predstavlyaye x Todi yaksho x isnuye mi vidalyayemo vidpovidnu vershinu list Yaksho batko ciyeyi vershini lista maye tilki odnogo inshogo nashadka to poznachennya vhidnogo rebra cogo nashadka dodayetsya do vhidnogo rebra batka a vershina nashadok vidalyayetsya Dodatkovi operaciyi Znajti vsi ryadki zi spilnim prefiksom povertaye masiv ryadkiv yaki mayut odnakovij prefiks Znajti poperednika znahodit najbilshij ryadok menshij nizh zadanij v leksikografichnomu poryadku Znajti nastupnika znahodit najmenshij ryadok bilshij nizh zadanij v leksikografichnomu poryadku Porivnyannya z inshimi strukturami danih U nastupnih porivnyannyah vvazhayetsya sho klyuchi mayut dovzhinu k ta struktura danih mistit n elementiv Na vidminu vid zbalansovanih derev bazisni dereva dozvolyayut shukati vstavlyati ta vidalyati elementi za O k chasu a ne O log n Ce ne shozhe na perevagu oskilki zazvichaj k log n ale v zbalansovanomu derevi kozhne porivnyannya ce porivnyannya ryadkiv sho vimagayut O k chasu u najgirshomu vipadku bagato z yakih na praktici povilni cherez dovgi spilni prefiksi u vipadku koli porivnyannya pochinayutsya z pochatku ryadka U prefiksnomu derevi vsi porivnyannya zdijsnyuyutsya za konstantnij chas ale dlya poshuku ryadka dovzhini m potribno zdijsniti m porivnyan Bazisni dereva mozhut vikonuvati ci operaciyi z menshoyu kilkistyu porivnyan i potrebuyut znachno menshe vershin Bazisni dereva takozh mayut nedoliki prefiksnih derev odnak oskilki voni mozhut buti zastosovani tilki do ryadkiv abo elementiv z efektivnim zvorotnim spivstavlennyam do ryadkiv yim brakuye povnoyi universalnosti zbalansovanih derev poshuku yaki zastosovuyutsya do bud yakogo tipu danih iz linijnoyu vporyadkovanistyu Zvorotne spivstavlennya do ryadkiv mozhe buti vikoristane dlya otrimannya neobhidnoyi linijnoyi vporyadkovanosti dlya zbalansovanih derev poshuku ale ne navpaki Ce takozh mozhe buti problematichno yaksho tip danih nadaye tilki operaciyu porivnyannya ale ne operaciyu de serializaciyi Ce nezavershena stattya pro strukturi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi