Структура рабочего набора Яконо
Структура данных рабочего набора Яконо | |
---|---|
Изобретенный | 2001 |
Изобретён | Джон Яконо |
Асимптотическая сложность в большой записи О | |
Космос | На ) |
Поиск | О (журнал w(x) ) |
Вставлять | О ( войти ) |
Удалить | О ( войти ) |
В информатике структура рабочего набора Яконо. [ 1 ] основанный на сравнении словарь, . Он поддерживает операции вставки, удаления и доступа для поддержания динамического набора элементы. Рабочий набор элемента — это набор элементов, к которым осуществлялся доступ в структуре с момента последнего использования был доступен (или вставлен, если к нему никогда не обращались). Вставка и удаление в структуре рабочего набора занимает время при доступе к элементу берет . Здесь, представляет размер рабочего набора .
Структура
[ редактировать ]
Чтобы сохранить динамический набор элементы, эта структура состоит из серии красно-черных деревьев или других самобалансирующихся бинарных деревьев поиска. и серия деков (двусторонние очереди) , где . Для каждого , дерево и поэтому имеют одинаковое содержимое, и между соответствующими элементами сохраняются указатели. Для каждого , размер и является . Дерево и поэтому состоят из остальных элементов, т. е. их размер равен . Таким образом, количество элементов во всех деревьях и количество элементов во всех деках в сумме составляют . Каждый элемент, вставленный в структуру данных, сохраняется ровно в одном из деревьев и соответствующем ему деке.
Рабочий набор Инвариант
[ редактировать ]В деках этой структуры элементы хранятся в отсортированном порядке в соответствии с размером их рабочего набора. Формально элемент лежит после в двухстороннем порядке тогда и только тогда, когда . Более того, для каждого , элементы в деке иметь меньшие рабочие наборы, чем элементы в деке . Это свойство называется инвариантом рабочего набора. Каждая операция в структуре данных поддерживает инвариант рабочего набора.
Операции
[ редактировать ]Основная операция в этой структуре называется сдвигом от к , где и являются индексами некоторых деревьев в структуре. Два дела рассматриваются в порядке перехода от к : Если , то для каждого , взятый в порядке возрастания, элемент выводится из очереди и поставлен в очередь . Соответствующий элемент удален из и вставлен в . Время выполнения этой операции . Аналогично, если , то для каждого , взятый в порядке убывания, элемент выводится из очереди и поставлен в очередь . Соответствующий элемент удален из и вставлен в . Время выполнения этой операции . В любом случае, после смены размер уменьшается на единицу, тогда как размер увеличивается на единицу. Поскольку элементы в деках сортируются по размерам их рабочих наборов, операция сдвига сохраняет рабочий набор инвариантным.
Поиск
[ редактировать ]Чтобы найти элемент , искать в , в порядке возрастания, пока не будет найдено дерево содержащий . Если дерево не найдено, поиск не увенчался успехом. Если найден, он удаляется из а затем вставил в , т. е. он перемещается к передней части конструкции. Поиск завершается переходом от к который восстанавливает размер каждого дерева и каждой деки до их размера до операции поиска. Время выполнения этого поиска если поиск был успешным, или в противном случае. По свойству Рабочее множество каждый элемент в деревьях принадлежит рабочему множеству . В частности, каждый элемент в принадлежит рабочему множеству и, следовательно, . Таким образом, время успешного поиска равно .
Вставлять
[ редактировать ]Вставка элемента в структуру осуществляется путем вставки в и постановка его в очередь . Вставка завершается сдвигом от к . Чтобы избежать переполнения, если до сдвига, т. е. если последнее дерево заполнено, то увеличивается и появляется новый пустой и создан. Во время выполнения этой операции преобладает переход от к чье время работы . Поскольку элемент , чей рабочий набор наименьший, ставится в очередь , инвариант рабочего набора сохраняется после сдвига.
Удалить
[ редактировать ]Удаление элемента делается путем поиска на каждом дереве структуры в порядке возрастания, пока не будет найдено дерево который его содержит (если он не найден, удаление не удалось). Элемент удаляется из и . Наконец, переход от к сохраняет размер равный . Время выполнения этой операции . Инвариант рабочего набора сохраняется, поскольку удаление элемента не меняет порядок рабочего набора элементов.
Обсуждение
[ редактировать ]Деревья Splay — это самонастраивающиеся деревья поиска, представленные Sleator и Tarjan. [ 2 ] в 1985 году. Используя эвристику реструктуризации, деревья расширения могут выполнять операции вставки и удаления в амортизированное время, без хранения какой-либо информации о балансе на узлах. Более того, теорема о рабочем наборе для расширенных деревьев утверждает, что стоимость доступа к элементу в расширенном дереве равна амортизируется . Структура рабочего набора Iacono обеспечивает одинаковое время поиска, вставки и удаления в худшем случае. Поэтому предлагаем альтернативу раскидистым деревьям.
Ссылки
[ редактировать ]- ^ Яконо, Джон (2001). «Альтернативы для расширения деревьев со временем доступа O (log n) в худшем случае» (PDF) . Материалы двенадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам : 516–522.
- ^ Слитор, Дэниел Д.; Тарьян, Роберт Э. (1985), «Саморегулирующиеся бинарные деревья поиска» (PDF) , Журнал ACM , 32 (3): 652–686, doi : 10.1145/3828.3835