Interval union-split-find

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In computer science, an interval union-split-find data structure is a data structure that stores a partition of the integer interval [1,n] into intervals. Equivalently, it stores a set of elements from [1,n] ("splitters"), which define the endpoints of the intervals; for example, if n=10 and the set of endpoints is {1,4,8} then the intervals are [1,3],[4,7] and [8,10]. The data structure provides the following operations:

  • split(x) adds x as a splitter, thus splitting the interval containing it (if x has not already been a splitter)
  • union(x) for merging two intervals by removing the splitter x
  • find(x) for finding which interval x belongs two (returning the interval's endpoint).

The problem is an instance of the dynamic predecessor problem, with a universe of size n.

Using Van Emde Boas trees, the data structure can be implemented with O(loglogn) time per operation, in O(n) space. A matching lower bound has been proved by Mehlhorn, Näher and Alt[1] under the assumption of a pointer algorithm. Under the assumptions of the cell-probe model, Beame and Fich proved that a data structure that uses word size 2(logn)1Ω(1) must cost Ω(loglogk/logloglogk) per operation, where k is the number of intervals.[2]

The Union-Split-Find problem is important for a number of applications, e.g. dynamic fractional cascading[3] and computing shortest paths.[4]

The Interval Union-Find Problem

[edit | edit source]

This is the subproblem that consists of supporting the find and union operations only. It can be solved by a disjoint-set data structure in O(α(n)) amortized time per operation, or by a specialized RAM algorithm in O(1) amortized time.[5]

The Interval Split-Find Problem

[edit | edit source]

This is the subproblem that consists of supporting the find and split operations only. It has an O(1) amortized time solution on a RAM.[5] It can also be solved by a pointer-based algorithm in O(mα(m,n)) time for m operations.[6]

References

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ a b Harold N. Gabow, Robert Endre Tarjan, "A linear-time algorithm for a special case of disjoint set union," Journal of Computer and System Sciences, Volume 30, Issue 2, 1985, pp. 209–221, ISSN 0022-0000, https://doi.org/10.1016/0022-0000(85)90014-5
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).