Задача обслуживания заказа (или «поддержание заказа в списке») заключается в поддержке операций:
singleton
: создает список с одним элементом, возвращает указатель на негоinsertAfter
: дает указатель на элемент, вставляет новый элемент после него, возвращает указатель на новый элементdelete
: дает указатель на элемент, удаляет его из спискаminPointer
: при наличии двух указателей на элементы в одном списке возвращает тот, что ближе к началу списка
Мне известны три решения этой проблемы, которые выполняют все операции за время амортизации . Все они используют умножение.
- Атанасиос К. Цакалидис: Поддержание порядка в обобщенном связанном списке
- Дитц П., Слеатор Д. Два алгоритма поддержания порядка в списке
- Майкл А. Бендер, Ричард Коул, Эрик Д. Демейн, Мартин Фарах-Колтон и Джек Зито, «Два упрощенных алгоритма для поддержания порядка в списке»
Можно ли поддерживать порядок в списке за амортизированное время, не используя арифметические операции вне ?
ds.data-structures
soft-question
pl.programming-languages
graph-theory
tree
cc.complexity-theory
pcp
co.combinatorics
cg.comp-geom
pr.probability
vc-dimension
cc.complexity-theory
complexity-classes
relativization
soft-question
advice-request
career
soft-question
research-practice
paper-review
journals
co.combinatorics
cc.complexity-theory
complexity-classes
pr.probability
average-case-complexity
cc.complexity-theory
lo.logic
descriptive-complexity
finite-model-theory
ds.algorithms
cc.complexity-theory
approximation-hardness
csp
pcp
cc.complexity-theory
circuit-complexity
jbapple
источник
источник
Ответы:
Да!
Используйте двухуровневую структуру, как описано в конце Раздела 2 статьи Дица и Слеатора. Для верхней структуры используйте дерево козла отпущения. Используя коэффициент баланса, который может быть реализован в (например, ), мы получаем результат.A C0 2
См. Также упражнение 8.12 из открытых структур данных и «Новый метод балансировки деревьев двоичного поиска» Роуры .
источник