Interval union-split-find

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 to (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 (6): 1093–1102. doi:10.1137/0217070.
  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. doi:10.1006/jcss.2002.1822.
  3. ^ Mehlhorn, Kurt; Näher, Stefan (1990). "Dynamic fractional cascading". Algorithmica. 5 (1): 215–241. doi:10.1007/BF01840386.
  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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.