A kinetic sorted list is a kinetic data structure for maintaining a list of points under motion in sorted order. It is used as a kinetic predecessor data structure, and as a component in more complex kinetic data structures such as kinetic closest pair.
This data structure maintains a list of the elements in sorted order, with the certificates enforcing the order between adjacent elements. When a certificate fails, the concerned elements are swapped. Then at most three certificates must be updated, the certificate of the swapped pair, and the two certificates involving the swapped elements and the elements of the sorted list which directly precede and follow the swapped pair.
For example, given a sorted list, the certificates will be [A<B], [B<C], [C<D], [D<E], [E<F]. If the certificate [C<D] fails, the list will be updated to, and the certificates [B<C], [C<D], and [D<E], will be replaced with [B<D], [D<C], and [C<E], respectively. The new set of certificates will be [A<B], [B<D], [D<C], [C<E], [E<F]
This kinetic data structure is:
This data structure can be generalized to a kinetic data structure which can return a sorted list of points in
O(nlogm)
O( | n2 |
m |
)
m
In the generalized data structure, the points are partitioned arbitrarily into m subsets of size
O( | n |
m |
)
O( | n2 |
m2 |
)
O(1)
O( | n2 |
m2 |
)
O( | n2 |
m |
)
O(nlogm)