I've got code that's an implementation of Kruskal's alghorithm and I really would like to know what exactly this DisjointSet()
function is doing. I can not find this, so maybe someone can explain it to me?
from utils.disjointset import DisjointSet
from model.undirectededge import UndirectedEdge
class Kruskal(object):
@staticmethod
def execute(graph):
mst =set()
disjointset = DisjointSet()
for node in graph.iternodes ():
disjointset.create(node)
sorted_edges=sorted(graph.iteredges(),key=lambda edge:edge.weight)
for edge in sorted_edges :
if disjointset.find(edge.source)!=disjointset.find(edge.target):
mst.add( UndirectedEdge(edge.source,edge.target,edge.weight))
disjointset.union(edge.source,edge.target)
return mst