Jump to content

Краткая структура данных

В информатике краткая структура данных — это структура данных , которая использует объем пространства, «близкий» к нижней границе теории информации , но (в отличие от других сжатых представлений) по-прежнему позволяет выполнять эффективные операции запроса. Первоначально эта концепция была предложена Джейкобсоном. [1] для кодирования битовых векторов , (немаркированных) деревьев и плоских графов . В отличие от обычных алгоритмов сжатия данных без потерь , краткие структуры данных сохраняют возможность использовать их на месте, без предварительного их распаковки. С этим связано понятие сжатой структуры данных , поскольку размер хранимых или закодированных данных аналогичным образом зависит от конкретного содержания самих данных.

Предположим, что — это теоретико-информационное оптимальное количество бит, необходимое для хранения некоторых данных. Представление этих данных называется:

  • неявно, если это требует кусочки пространства,
  • кратко, если это займет кусочки пространства и
  • компактный, если потребуется кусочки пространства.

Например, структура данных, использующая биты хранения компактны, биты краткие, бит также является кратким, и бит является неявным.

Таким образом, неявные структуры обычно сводятся к хранению информации с использованием некоторой перестановки входных данных; Самый известный пример — куча .

Краткие индексируемые словари

[ редактировать ]

Краткие индексируемые словари, также называемые словарями ранга/выбора , составляют основу ряда методов краткого представления, включая двоичные деревья . -арные деревья и мультимножества , [2] а также суффиксные деревья и массивы . [3] Основная проблема заключается в хранении подмножества вселенной , обычно представленный в виде битового массива где если только Индексируемый словарь поддерживает обычные методы работы со словарями (запросы и вставки/удаления в динамическом случае), а также следующие операции:

для .

Другими словами, возвращает количество элементов, равное до позиции пока возвращает позицию -е появление .

Существует простое представление [4] который использует биты памяти (исходный битовый массив и вспомогательная структура) и поддерживает ранжирование и выбор в постоянное время. Он использует идею, аналогичную той, что используется для запросов с минимальным диапазоном ; существует постоянное количество рекурсий, прежде чем остановиться на подзадаче ограниченного размера. Битовый массив разбит на большие блоки размером биты и небольшие блоки размером биты. Для каждого большого блока ранг его первого бита хранится в отдельной таблице. ; каждая такая запись занимает бит в общей сложности биты памяти. Внутри большого блока еще один каталог хранит ранг каждого из небольшие блоки, которые он содержит. Разница здесь в том, что нужно только бит для каждой записи, поскольку необходимо сохранять только различия от ранга первого бита в содержащем большом блоке. Таким образом, эта таблица занимает в общей сложности биты. Таблица поиска затем можно использовать, чтобы сохранить ответ на каждый возможный запрос ранга в битовой строке длины для ; это требует немного места для хранения. Таким образом, поскольку каждая из этих вспомогательных таблиц занимает пространстве эта структура данных поддерживает ранжированные запросы в время и кусочки пространства.

Чтобы ответить на запрос о в постоянное время алгоритм постоянного времени вычисляет:

На практике таблица поиска могут быть заменены побитовыми операциями и таблицами меньшего размера, которые можно использовать для определения количества битов, установленных в маленьких блоках. Это часто бывает полезно, поскольку краткие структуры данных находят свое применение в больших наборах данных, и в этом случае промахи в кэше становятся гораздо более частыми, и вероятность исключения таблицы поиска из ближайших кэшей ЦП становится выше. [5] Запросы выбора можно легко поддерживать, выполняя двоичный поиск по той же вспомогательной структуре, что и для Rank ; однако это требует время в худшем случае. Более сложная структура с использованием биты дополнительной памяти могут использоваться для поддержки выбора в постоянное время. [6] На практике многие из этих решений имеют скрытые константы в обозначения, которые доминируют до того, как станет очевидным какое-либо асимптотическое преимущество; реализации, использующие операции с расширенными словами и блоки с выравниванием по словам, на практике часто работают лучше. [7]

Энтропийно-сжатые решения

[ редактировать ]

The космический подход можно улучшить, отметив, что существуют отчетливый -подмножества (или двоичные строки длины точно с 1) и, таким образом, — это нижняя граница теории информации для количества бит, необходимых для хранения . Существует краткий (статический) словарь, который достигает этой границы, а именно, используя космос. [8] Эту структуру можно расширить для поддержки ранжирования и выбора , а также дублей. запросов космос. [2] Однако запросы правильного ранга в этой структуре ограничены элементами, содержащимися в наборе, аналогично тому, как работают минимальные совершенные функции хеширования. Эту границу можно свести к компромиссу между пространством и временем, уменьшив объем памяти словаря до с запросами, принимающими время. [9]

Также возможно создать индексируемый словарь, поддерживающий ранг (но не выбор), который использует менее биты. Такой словарь называется монотонной минимальной совершенной хеш-функцией и может быть реализован с использованием всего лишь биты. [10] [11]

Краткие хеш-таблицы

[ редактировать ]

Краткая хеш-таблица, также известная как краткий неупорядоченный словарь, представляет собой структуру данных, в которой хранятся ключи от вселенной используя пространство бит и при этом поддерживают запросы членства в постоянное ожидаемое время. Если краткая хэш-таблица также поддерживает вставки и удаления с постоянным ожидаемым временем, то она называется динамической , в противном случае она называется статической.

Первая динамическая краткая хэш-таблица была создана Раманом и Рао в 2003 году. [12] В случае, когда , их решение использует пространство биты. Впоследствии было показано, что эту пространственную границу можно улучшить до бит для любого постоянного числа логарифмов [13] и немного позже эта граница также оказалась оптимальной. [14] [15] Последнее решение поддерживает все операции в худшем случае с постоянным временем с высокой вероятностью.

Первая статическая краткая хэш-таблица была создана Пагом в 1999 году. [16] [17] В случае, когда , их решение использует пространство бит и поддерживает для наихудшего случая запросы с постоянным временем . Эта граница впоследствии была улучшена до биты, [18] а затем биты. [19] Тогда как первые два решения [17] [18] поддерживает запросы с постоянным временем наихудшего случая, последний поддерживает запросы с постоянным ожидаемым временем. [19] Окончательное решение также требует доступа к справочной таблице размера , но эта таблица поиска не зависит от набора сохраняемых элементов. [19]

Другие примеры

[ редактировать ]

Строка произвольной длины ( строка Паскаля ) занимает пространство Z + log( Z ) и поэтому является краткой. Если существует максимальная длина – что и имеет место на практике, поскольку 2 32 = 4 ГиБ данных — это очень длинная строка, а 2 64 = 16 EiB данных на практике больше, чем любая строка – тогда строка с длиной также подразумевается, занимая Z + k пространство , где k — количество данных, представляющее максимальную длину (например, 64 бита).

Когда необходимо закодировать последовательность элементов переменной длины (например, строк), существуют различные возможности. Прямой подход заключается в сохранении длины и элемента в каждой записи, а затем их можно размещать друг за другом. Это позволяет эффективно использовать следующий, но не находить k -й элемент. Альтернативой является размещение элементов по порядку с помощью разделителя (например, строки с нулевым завершением ). При этом вместо длины используется разделитель, и это существенно медленнее, поскольку необходимо сканировать всю последовательность на наличие разделителей. Оба они экономят пространство. Альтернативный подход — внеполосное разделение: элементы можно просто размещать один за другим, без разделителей. Границы элементов затем могут быть сохранены как последовательность длин или, лучше, смещений в этой последовательности. Альтернативно, вместе с ней кодируется отдельная двоичная строка, состоящая из 1 в позициях, где начинается элемент, и 0 во всех остальных местах. Учитывая эту строку, Функция может быстро определить, где начинается каждый элемент, учитывая его индекс. [20] Это компактно , но не лаконично, так как занимает 2 Z пространства, что равно O( Z ).

Другой пример — представление двоичного дерева : произвольное двоичное дерево на узлы могут быть представлены в бит, поддерживая при этом множество операций над любым узлом, включая поиск его родителя, его левого и правого дочернего элемента и возврат размера его поддерева, каждый из которых за постоянное время. Количество различных бинарных деревьев на узлы это . Для больших , это о ; таким образом, нам нужно как минимум около бит для его кодирования. Таким образом, краткое двоичное дерево будет занимать всего бит на узел.

См. также

[ редактировать ]
  1. ^ Джейкобсон, Дж. Дж. (1988). Краткие статические структуры данных (кандидатская диссертация). Питтсбург, Пенсильвания: Университет Карнеги-Меллон.
  2. ^ Jump up to: Перейти обратно: а б Раман, Р.; В. Раман; С. С. Рао (2002). «Краткие индексируемые словари с приложениями для кодирования k-арных деревьев и мультимножеств» . Материалы тринадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . стр. 233–242 . arXiv : 0705.0552 . CiteSeerX   10.1.1.246.3123 . дои : 10.1145/1290672.1290680 . ISBN  0-89871-513-Х .
  3. ^ Садакане, К.; Р. Гросси (2006). «Сжатие кратких структур данных в энтропийные границы» (PDF) . Материалы семнадцатого ежегодного симпозиума ACM-SIAM по дискретному алгоритму . стр. 1230–1239. ISBN  0-89871-605-5 . Архивировано из оригинала (PDF) 29 сентября 2011 г.
  4. ^ Джейкобсон, Г. (1 ноября 1989 г.). Компактные статические деревья и графы (PDF) . 30-й симпозиум IEEE по основам информатики. дои : 10.1109/SFCS.1989.63533 . Архивировано из оригинала (PDF) 12 марта 2016 г.
  5. ^ Гонсалес Р.; С. Грабовский; В. Мякинен; Дж. Наварро (2005). «Практическая реализация запросов ранжирования и выбора» (PDF) . Стендовый доклад 4-го семинара по эффективным и экспериментальным алгоритмам (WEA) . стр. 27–38.
  6. ^ Кларк, Дэвид (1996). Компактные деревья (PDF) (кандидатская диссертация). Университет Ватерлоо.
  7. ^ Винья, С. (2008). «Расширенная реализация запросов ранжирования/выбора» (PDF) . Экспериментальные алгоритмы . Конспекты лекций по информатике. Том. 5038. стр. 154–168. CiteSeerX   10.1.1.649.8950 . дои : 10.1007/978-3-540-68552-4_12 . ISBN  978-3-540-68548-7 . S2CID   13963489 .
  8. ^ Бродник А.; Дж. И. Манро (1999). «Членство в постоянном времени и почти минимальном пространстве» (PDF) . СИАМ Дж. Компьютер . 28 (5): 1627–1640. CiteSeerX   10.1.1.530.9223 . дои : 10.1137/S0097539795294165 .
  9. ^ Патрашку, М. (2008). «Сукцинктер» (PDF) . Основы информатики, 2008. FOCS'08. 49-й ежегодный симпозиум IEEE по теме . стр. 305–313.
  10. ^ Белазуги, Джамаль; Болди, Паоло; Паг, Расмус; Винья, Себастьяно (4 января 2009 г.). «Монотонное минимальное идеальное хеширование: поиск в отсортированной таблице с доступом O (1)» . Материалы двадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . Филадельфия, Пенсильвания: Общество промышленной и прикладной математики: 785–794. дои : 10.1137/1.9781611973068.86 . ISBN  978-0-89871-680-1 .
  11. ^ Ассади, Сепер; Фарах-Колтон, Мартин; Кушмаул, Уильям (январь 2023 г.), «Жесткие границы для монотонного минимального идеального хеширования» , Труды ежегодного симпозиума ACM-SIAM по дискретным алгоритмам (SODA) 2023 г. , Филадельфия, Пенсильвания: Общество промышленной и прикладной математики, стр. 456–476 , arXiv : 2207.10556 , doi : 10.1137/1.9781611977554.ch20 , ISBN  978-1-61197-755-4 , получено 28 апреля 2023 г.
  12. ^ Раман, Раджив; Рао, Сатти Шриниваса (2003), «Краткие динамические словари и деревья» , Автоматы, языки и программирование , Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 357–368, doi : 10.1007/3-540-45061-0_30 , ISBN  978-3-540-40493-4 , получено 28 апреля 2023 г.
  13. ^ Бендер, Майкл А.; Фарах-Колтон, Мартин; Кушмаул, Джон; Кушмаул, Уильям; Лю, Минмоу (9 июня 2022 г.). «Об оптимальном соотношении времени и пространства для хеш-таблиц» . Материалы 54-го ежегодного симпозиума ACM SIGACT по теории вычислений . Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 1284–1297. arXiv : 2111.00602 . дои : 10.1145/3519935.3519969 . hdl : 1721.1/146419 . ISBN  9781450392648 . S2CID   240354692 .
  14. ^ Ли, Тяньсяо; Лян, Цзинсюнь; Ю, Хуачэн; Чжоу, Жэньфэй (2023). «Точные нижние границы клеточного зонда для динамических кратких словарей». arXiv : 2306.02253 [ cs.DS ].
  15. ^ Надис, Стив (8 февраля 2024 г.). «Ученые нашли оптимальный баланс хранения данных и времени» . Журнал Кванта .
  16. ^ Паг, Расмус (28 января 1998 г.). «Низкая избыточность в словарях с наихудшим временем поиска O (1)» . Серия докладов БРИКС . 5 (28). дои : 10.7146/brics.v5i28.19434 . ISSN   1601-5355 .
  17. ^ Jump up to: Перейти обратно: а б Паг, Расмус (январь 2001 г.). «Низкая избыточность в статических словарях с постоянным временем запроса» . SIAM Journal по вычислительной технике . 31 (2): 353–363. дои : 10.1137/s0097539700369909 . ISSN   0097-5397 .
  18. ^ Jump up to: Перейти обратно: а б Патрашку, Михай (октябрь 2008 г.). «Сукцинктер» . 2008 г. 49-й ежегодный симпозиум IEEE по основам информатики . IEEE. стр. 305–313. дои : 10.1109/focs.2008.83 . ISBN  978-0-7695-3436-7 . S2CID   257721481 .
  19. ^ Jump up to: Перейти обратно: а б с Ю, Хуачэн (22 июня 2020 г.). «Почти оптимальный статический краткий словарь Лас-Вегаса» . Материалы 52-го ежегодного симпозиума ACM SIGACT по теории вычислений . Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 1389–1401. arXiv : 1911.01348 . дои : 10.1145/3357713.3384274 . ISBN  9781450369794 . S2CID   207780523 .
  20. ^ Белазуги, Джамаль. «Хэш, перемещение и сжатие» (PDF) .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 92eb680e34863afd209d74eebc1bf4b1__1713407280
URL1:https://arc.ask3.ru/arc/aa/92/b1/92eb680e34863afd209d74eebc1bf4b1.html
Заголовок, (Title) документа по адресу, URL1:
Succinct data structure - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)