01ორი ოპერაცია: find და union
არაგადამკვეთი სიმრავლეების გაერთიანება (DSU, Union-Find) ელემენტებს ჯგუფებად ყოფს, რომლებიც ერთმანეთს არ ეფარება. მას მხოლოდ ორი ოპერაცია აქვს:
find(x): რომელ ჯგუფშიაx? აბრუნებს წარმომადგენელს, ამიტომfind(a) == find(b)ნიშნავს „ერთ ჯგუფშია“.union(a, b):a-სა დაb-ს ჯგუფების გაერთიანება.
შეიძლებოდა ყოველი გაერთიანებისას ყველა წევრისთვის ჭდე გადაგვეწერა, მაგრამ ორი დიდი ჯგუფის გაერთიანება მაშინ O(n) დაჯდებოდა. ყოველ კითხვაზე გრაფში ძებნა კიდევ უარესია. DSU ორივე ოპერაციას თითქმის O(1)-ში ასრულებს, ოღონდ ჯგუფის ხელახლა გაყოფა არ შეუძლია (ეს არის ფასი).
ტიპური გამოყენება: ბმული კომპონენტები, როცა წიბოები თანდათან ემატება; ციკლის აღმოჩენა წიბოს დამატებისას; და კრასკალის მინიმალური დამფარავი ხე, შემდეგი თემა.