Jump to content

Interval union-split-find

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

In computer science, an interval union-split-find data structure is a data structure that stores a partition of the integer interval into intervals. Equivalently, it stores a set of elements from ("splitters"), which define the endpoints of the intervals; for example, if n=10 and the set of endpoints is then the intervals are and . 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 time per operation, in 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 must cost 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

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 amortized time per operation, or by a specialized RAM algorithm in O(1) amortized time[5].

The Interval Split-Find Problem

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 time for m operations[6].

References

  1. ^ Mehlhorn, Kurt; Näher, Stefan; Alt, Helmut (1990). "A lower bound for the complexity of the union-split-find problem". SIAM Journal on Computing. 17: 1093–1102.
  2. ^ Beame, Paul; Fich, Faith E. (2002). "Optimal bounds for the predecessor problem and related problems". Journal of Computer and System Sciences. 65 (1): 38–72.
  3. ^ Mehlhorn, Kurt; Näher, Stefan (1990). "Dynamic fractional cascading". Algorithmica. 5 (1): 215–241.
  4. ^ Mehlhorn, Kurt (1984). Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness. Springer.
  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. ^ Gabow, Harold N. (1985). "A scaling algorithm for weighted matching on general graphs". 26th Annual Symposium on Foundations of Computer Science. IEEE. pp. 90–100.