 Python'da birlik bulma algoritması yazın.
Python'da ağırlıklı hızlı birleştirme yaklaşımını kullanan Union-Find algoritmasının temel bir uygulaması: ``` class UnionFind: def __init__(self, n): self.parent = [i for i in range(n)] self.size = [1] * n def find(self, i): root = i while root != self.parent[root]: root = self.parent[root] # Yol sıkıştırma while i != root: i, self.parent[i] = self.parent[i], kök dönüş kök def bağlı(self, i, j): dönüş self.find(i) == self.find(j) def union(self, i, j) ): root_i = self.find(i) root_j = self.find(j) if root_i == root_j: return # If self.size[root_i] < self.size[root_j]: self.parent[root_i] = root_j self.size[root_j] += self.size[root_i] başka: self.parent[root_j] = root_i self.size[root_i] += self.size[root_j] ``` `__init__` yöntemi başlatır sırasıyla üst düğümü ve her düğümün boyutunu tutmak için "parent" ve "size" listesi. "find" yöntemi bir dizin alır ve yol sıkıştırması gerçekleştirirken karşılık gelen öğenin kökünü bulur. `connected` yöntemi, köklerini kontrol ederek iki düğümün bağlı olup olmadığını kontrol eder. Ve "union" yöntemi, ağırlıklı hızlı birleştirme yaklaşımını kullanarak bir düğümün kökünü başka bir düğümün kökünün ebeveyni yaparak iki düğümü birbirine bağlar.