Beispiel #1
0
def minimumSpanningTree(graph):
    parent = uf.initializeUnionFindForGraph(graph)
    mst = []
    sortedEdges = sortEdges(graph)
    for edge in sortedEdges:
        u = endpoint(edge, 1)
        v = endpoint(edge, 2)
        if uf.find(parent, u) != uf.find(parent, v):
            mst.append(edge)
            uf.union(parent, u, v)
    return mst
Beispiel #2
0
#from unionFindVersion1 import initializeUnionFindForGraph, union, find, printRank
#from unionFindVersion2 import initializeUnionFindForGraph, union, find, printRank
from unionFindVersion3 import initializeUnionFindForGraph, union, find, printRank

import sampleGraphsWithLengths as samples

parent = initializeUnionFindForGraph(samples.undirectedAB)
print parent, find(parent, 'A'), find(parent, 'B')
union(parent, 'A', 'B')
print parent, find(parent, 'A'), find(parent, 'B')
printRank(samples.undirectedAB, parent)

parent = initializeUnionFindForGraph(samples.ryansExample)
print parent, find(parent, 'A'), find(parent, 'B')
printRank(samples.ryansExample, parent)
union(parent, 'A', 'B')
union(parent, 'C', 'A')
union(parent, 'D', 'A')
union(parent, 'E', 'A')
print parent, find(parent, 'A'), find(parent, 'B')
printRank(samples.ryansExample, parent)