Чи є еквівалент дерев ван Емде Боас для мотузок?


23

Хтось, кого я знаю, планує впровадити текстовий редактор найближчим часом, що спонукало мене задуматися про те, які структури даних швидкі для текстового редактора. Найбільш використовувані структури - це, мабуть, канати або щілинні буфери .

Дерева Van Emde Boas - це лише найшвидші черги з пріоритетними напрямками, якщо ви не заперечуєте проти верхньої межі кількості елементів, які ви можете помістити в нього, і великої вартості ініціалізації. Моє запитання - чи існує якась структура даних, яка настільки ж швидка, як і дерево Емде Боаса, але підтримує операції з редагуванням тексту.

Нам потрібно підтримувати до символів у нашій структурі даних (тож якщо , то ми підтримуємо ASCII символами до 4 Гб). Нам дозволено час ініціалізувати нову структуру даних. Ми хотіли б підтримати наступні операції:мжурналм=32м

  • Вставте символ у позиції в (і тим самим збільште позицію кожного наступного символу на 1).iО(журналжурналм)
  • Видаліть символ у позиції в .iО(журналжурналм)
  • Поверніть символ у позицію в .iО(журналжурналм)

Отже, вставка (0, 'а'), а потім вставка (0, 'б') призводить до "ба".

Ще краще було б таке:

  • Повернути 'покажчик' до деякого індексу в .iО(журналжурналм)
  • Давши 'покажчик', поверніть символ у цій позиції в .О(1)
  • Давши «вказівник», видаліть символ у цій позиції в .О(1)
  • Давши 'покажчик', додайте символ у цій позиції в та поверніть вказівник у наступне положення.О(1)
  • (необов’язково) Дано «вказівник», поверніть «вказівник» на наступний / попередній символ у .О(1)

Відповіді:


14

Фредман і Сакс показують у «Структурі зондування складності динамічних структур даних», що ви не можете зробити краще, ніж амортизований час для операцій, які ви шукаєте. Вони називають цю проблему "представленням списку".Θ(lgмlglgм)

Дітц представив структуру даних в "Оптимальних алгоритмах для індексації списків і ранжиру підмножини", яка досягає цього межі.


Чи можете ви надати посилання на першу статтю?
Рафаель

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