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