Union-Find

Tento datový typ byl poprvé popsán Bernard A. Galler a Michael J. Fischer v roce 1964. Podporuje 3 operace nad danou množinou S={x1, … , xn} n prvků:

Operace

Operace Popis Složitost
init Vytvoří rozklad S do n jedno prvkových disjunktních podmnožin {x1}, … ,{xn} O(1)
find vrátí identifikaci podmnožiny, do které prvek x momentálně patří.
union Sloučí dvě disjunktní podmnožiny S1 a S2 do jedné. O(log n)

Tato datová struktura je vhodná a přirozená pro algoritmické (snadno paralelizovatelné) řešení dalších problémů, např.

  • konstrukce souvislých komponent grafu,
  • hraje klíčovou roli v Kruskalově algoritmu pro hledání minimální kostry grafu,
  • detekce cyklu v grafu.

Související