In computer science, dynamization is the process of transforming a static data structure into a dynamic one. Although static data structures may provide very good functionality and fast queries, their utility is limited because of their inability to grow/shrink quickly, thus making them inapplicable for the solution of dynamic problems, where the input data changes. Dynamization techniques provide uniform ways of creating dynamic data structures.
We define problem
P
M
S
P(M,S)
P
S
Si
+
P(M,S)=P(M,S0)+P(M,S1)+...+P(M,Sn)
Decomposition is a term used in computer science to break static data structures into smaller units of unequal size. The basic principle is the idea that any decimal number can be translated into a representation in any other base. For more details about the topic see Decomposition (computer science). For simplicity, binary system will be used in this article but any other base (as well as other possibilities such as Fibonacci numbers) can also be utilized.
If using the binary system, a set of
n
2i*ni
elements where
ni
i
n
n
i
log2\left(n\right)
O(log\left(n\right))
Kurt Mehlhorn proved several equations for time complexity of operations on the data structures dynamized according to this idea. Some of these equalities are listed.
If
PS\left(n\right)
QS\left(n\right)
QD\left(n\right)
\overline{I}
QD\left(n\right)=O\left(QS\left(n\right) ⋅ log\left(n\right)\right)
\overline{I}=O\left(\left(PS\left(n\right)/n\right) ⋅ log\left(n\right)\right).
If
QS\left(n\right)
QD\left(n\right)=O\left(QS\left(n\right)\right)