Я мріяв про структуру даних, чи існує вона?


27

Мені не вдалося знайти цю структуру даних, але я не є експертом у цій галузі.

Структура реалізує набір і є в основному масивом порівнянних елементів з інваріантом. Інваріантом є наступний (визначений рекурсивно):

Масив довжиною 1 - це масив злиття.

Масив довжиною 2 ^ n (для n> 0) є iff: масив злиття:

  • перша половина - це масив злиття, а друга половина порожня або
  • перший масив є повноцінним і сортованим, а другий половина - масивом злиття.

Зауважте, що якщо масив заповнений, він сортується.

Щоб вставити елемент, ми маємо два випадки:

  • Якщо перша половина не заповнена, вставте рекурсивно в першу половину.
  • Якщо перша половина заповнена, вставляйте рекурсивно у другу половину.
  • Після рекурсивного кроку, якщо весь масив заповнений, об'єднайте половинки (які відсортовані) та змініть розмір удвічі від початкової довжини.

Щоб знайти елемент, повторіть обидві половини, використовуючи двійковий пошук, коли масив заповнений. (Це повинно бути ефективним, оскільки є максимум висхідних фрагментів).O(log(n))

Структуру можна розглядати як статичну версію злиття.

Незрозуміло, що потрібно зробити, щоб стерти елемент.

Редагувати: після вдосконалення мого розуміння структури.


5
Ви визначили це, тому він існує. Я думаю, що вам доведеться згладити деякі моменти. По-перше, інваріант №2 бентежить мене, оскільки він, схоже, не застосовується до проміжних станів під час їх опису. По-друге, що ви робите, коли елементи видаляються?
Рафаель

7
Ви снилися вгору структура даних, а не снилися его ...
Андрій Bauer

@Raphael Дякую за ваші коментарі, я покращив визначення, слідуючи вашим думкам. Я не думав про алгоритм видалення, просто хотів перевірити, чи є ця структура в літературі, перш ніж присвятити їй більше часу (і нічого не вдалося знайти в Google). У своєму першому реченні ви можете визначити Бога, але чи існує він? :)
pbaren

@Andrej Спасибі, англійська мова не є моєю рідною мовою. (Я думаю, це теж не твоє :)
pbaren

3
@Andrej: ВП спочатку був «мріяв з », що майже напевно не те , що було в виду. Я змінив його на "з", а не на "вгору". Обидва правильно граматично, але обидва також змінюють значення. "Of" був цікавішим варіантом звучання ...
András Salamon

Відповіді:


31

ABABO(logn)n), але збільшує простір лише постійним фактором. Так, його можна деамортизувати, завдяки Овермару та ван Левену, але ви справді не хочете цього робити, якщо цього не потрібно.

Ці примітки висвітлюють основи.

Заховані від кешу масиви lookahead - це мутантне потомство дерев Bentley-Saxe та van Emde Boas на стероїдах.


4
Це прекрасно написані та ілюстровані нотатки, і я їх багато разів використовував як орієнтир. Дякуємо, що зробили їх доступними!
jbapple

Я бачу, як шатлові дерева (з першої половини статті, що представляють кеш-масиви, що не знаходяться в пошуку), пов'язані з деревами VEB, але яка взаємозв'язок між деревами COLA та vEB?
jbapple

2
Спасибі, цей матеріал видається дуже цікавим узагальненням ідеї. Я завжди думав, що структури даних - це заморожені алгоритми, які можна запускати поетапно, але я ніколи не знайшов корисної формалізації цієї інтуїції.
pbaren

Чи працювало перше посилання для когось іншого?
AT

Так, я просто спробував. (На жаль, це переходить на плату за
Ельзев'є

11

Це аналогічно деревним структурам злиття, що складається з журналів, або кеш- пам'ятним масивам lookahead (або COLA).

2k12i0i<k

2021

O(lgn)O(n)O(lg2n)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.