3.2 Implicit Dynamic Dictionary
The dynamic dictionary problem is defined as follows.
Given a set D U, jDj = n, we need to implement efficiently
member(x;D) to determine whether x 2 D and
insert(x;D) that insert x into D. It is a subset of the
incremental sorting problem. Given a monotonic (strictly)
increasing integer function f : Z+ ! Z+, dynamic dictionary
can be implemented implicitly by using an array
A, and be visualized as a 2-level rotated lists. We divide
A into a list of r pairs D = hP0; : : : ; Pri, each pair Pi
consists of a singleton element ei and a sub-array Li of
size f(i) that is used as a rotated list. For an array of size
n, we have n
Pr
i=1(f(i) + 1). The purpose of having
a monotonic increasing integer function is that the number
of blocks will always be proportional to the array size,
regardless of the number of insertions. This also avoids
amortized runtime cost as it requires no re-dividing when
the array grows. This invariant needs to be guaranteed in
order to have the runtime guarantee as it controls the number
of soft exchanges performed per insertion.