박권수

feature1.0.1

1 -import numpy 1 +import numpy as np
2 2
3 +#Kruskal Algorithm
3 parent = dict() 4 parent = dict()
4 rank = dict() 5 rank = dict()
5 6
6 def make_singleton_set(v) : 7 def make_singleton_set(v) :
7 parent[v] = v 8 parent[v] = v
8 - rank[v] = v 9 + rank[v] = 1
9 10
10 def find(v) : 11 def find(v) :
11 if(parent[v] != v) : 12 if(parent[v] != v) :
...@@ -31,4 +32,36 @@ def Kruskal(graph) : ...@@ -31,4 +32,36 @@ def Kruskal(graph) :
31 edge_list = list(graph['edges']) 32 edge_list = list(graph['edges'])
32 edge_list.sort() 33 edge_list.sort()
33 34
34 - F = []
...\ No newline at end of file ...\ No newline at end of file
35 + F = set()
36 +
37 + index = 0
38 + while len(F) < n - 1 :
39 + e = edge_list[index]
40 +
41 + p = find(e[1])
42 + q = find(e[2])
43 +
44 + if(p == q) :
45 + union(p, q)
46 + F.add(e)
47 + index += 1
48 +
49 + return F
50 +
51 +graph = {
52 + 'vertices': ['A', 'B', 'C', 'D', 'E'],
53 + 'edges': set([
54 + (1, 'A', 'B'),
55 + (3, 'A', 'C'),
56 + (3, 'B', 'C'),
57 + (6, 'B', 'D'),
58 + (4, 'C', 'D'),
59 + (2, 'C', 'E'),
60 + (5, 'D', 'E'),
61 + ])
62 + }
63 +for i in range(0, 5) :
64 + make_singleton_set(i)
65 +
66 +mst = Kruskal(graph)
67 +print(mst)
...\ No newline at end of file ...\ No newline at end of file
......