Динамизация

Процесс преобразования статической структуры данных в динамическую

В информатике динамизация — это процесс преобразования статической структуры данных в динамическую. Хотя статические структуры данных могут обеспечивать очень хорошую функциональность и быстрые запросы, их полезность ограничена из-за их неспособности быстро расти/сжиматься, что делает их неприменимыми для решения динамических задач , где входные данные изменяются. Методы динамизации предоставляют единообразные способы создания динамических структур данных.

Разложимые задачи поиска

Определим задачу поиска соответствия предиката в наборе как . Задача является разложимой, если набор можно разложить на подмножества и существует операция объединения результатов такая, что . П {\displaystyle P} М {\displaystyle М} С {\displaystyle S} П ( М , С ) {\displaystyle P(M,S)} П {\displaystyle P} С {\displaystyle S} С я {\displaystyle S_{i}} + {\displaystyle +} П ( М , С ) = П ( М , С 0 ) + П ( М , С 1 ) + + П ( М , С н ) {\displaystyle P(M,S)=P(M,S_{0})+P(M,S_{1})+\dots +P(M,S_{n})}

Разложение

Разложение — это термин, используемый в информатике для разбиения статических структур данных на более мелкие единицы неравного размера. Основной принцип заключается в идее, что любое десятичное число может быть переведено в представление в любой другой системе счисления. Для получения более подробной информации по теме см. Разложение (компьютерная наука) . Для простоты в этой статье будет использоваться двоичная система счисления, но также может использоваться любая другая система счисления (а также другие возможности, такие как числа Фибоначчи ).

При использовании двоичной системы набор элементов разбивается на подмножества размеров н {\displaystyle n}

2 я н я {\displaystyle 2^{i}*n_{i}}

элементы, где - -й бит в двоичном формате. Это означает, что если -й бит равен 0, соответствующий набор не содержит элементов. Каждый из подмножеств имеет то же свойство, что и исходная статическая структура данных. Операции, выполняемые над новой динамической структурой данных, могут включать обход наборов, сформированных путем декомпозиции. В результате это добавит фактор в отличие от операций со статической структурой данных, но позволит добавить операцию вставки/удаления. н я {\displaystyle n_{i}} я {\displaystyle я} н {\displaystyle n} н {\displaystyle n} я {\displaystyle я} бревно 2 ( н ) {\displaystyle \log _{2}\left(n\right)} О ( бревно ( н ) ) {\displaystyle O(\log \left(n\right))}

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

Если

  • П С ( н ) {\displaystyle P_{S}\left(n\right)} пришло время построить статическую структуру данных
  • В С ( н ) {\displaystyle Q_{S}\left(n\right)} пришло время запросить статическую структуру данных
  • В Д ( н ) {\displaystyle Q_{D}\left(n\right)} пришло время запросить динамическую структуру данных, сформированную путем декомпозиции
  • я ¯ {\displaystyle {\overline {Я}}} амортизированное время вставки

затем

  • В Д ( н ) = О ( В С ( н ) бревно ( н ) ) {\displaystyle Q_{D}\left(n\right)=O\left(Q_{S}\left(n\right)\cdot \log \left(n\right)\right)}
  • я ¯ = О ( ( П С ( н ) / н ) бревно ( н ) ) . {\displaystyle {\overline {I}}=O\left(\left(P_{S}\left(n\right)/n\right)\cdot \log \left(n\right)\right).}

Если является по крайней мере полиномом , то . В С ( н ) {\displaystyle Q_{S}\left(n\right)} В Д ( н ) = О ( В С ( н ) ) {\displaystyle Q_{D}\left(n\right)=O\left(Q_{S}\left(n\right)\right)}

Дальнейшее чтение

  • Курт Мельхорн, Структуры данных и алгоритмы 3, . Серия EATCS, т. 3, Springer, 1984.
Взято с "https://en.wikipedia.org/w/index.php?title=Динамизация&oldid=1260704323"