@@ -36,16 +36,25 @@ edges = [ ("A", "B", 7),
36
36
from heapq import *
37
37
38
38
def prim( vertexs, edges ):
39
- adjacent_vertex = defaultdict(list) #注意:defaultdict(list)必须以list做为变量,可以详细阅读:[ collections.defaultdict] ( https://docs.python.org/2/library/collections.html#collections.defaultdict )
40
-
39
+ adjacent_vertex = defaultdict(list)
40
+
41
+ """
42
+ 注意:defaultdict(list)必须以list做为变量,可以详细阅读:[ collections.defaultdict] ( https://docs.python.org/2/library/collections.html#collections.defaultdict )
43
+ """
41
44
for v1,v2,length in edges:
42
45
adjacent_vertex[ v1] .append((length, v1, v2))
43
46
adjacent_vertex[ v2] .append((length, v2, v1))
44
47
45
48
"""
46
49
经过上述操作,将edges列表中各项归类成以某点为dictionary的key,其value则是其相邻的点以及边长。如下:
47
50
48
- defaultdict(<type 'list'>, {'A': [(7, 'A', 'B'), (5, 'A', 'D')], 'C': [(8, 'C', 'B'), (5, 'C', 'E')], 'B': [(7, 'B', 'A'), (8, 'B', 'C'), (9, 'B', 'D'), (7, 'B', 'E')], 'E': [(7, 'E', 'B'), (5, 'E', 'C'), (15, 'E', 'D'), (8, 'E', 'F'), (9, 'E', 'G')], 'D': [(5, 'D', 'A'), (9, 'D', 'B'), (15, 'D', 'E'), (6, 'D', 'F')], 'G': [(9, 'G', 'E'), (11, 'G', 'F')], 'F': [(6, 'F', 'D'), (8, 'F', 'E'), (11, 'F', 'G')]})
51
+ defaultdict(<type 'list'>, {'A': [(7, 'A', 'B'), (5, 'A', 'D')],
52
+ 'C': [(8, 'C', 'B'), (5, 'C', 'E')],
53
+ 'B': [(7, 'B', 'A'), (8, 'B', 'C'), (9, 'B', 'D'), (7, 'B', 'E')],
54
+ 'E': [(7, 'E', 'B'), (5, 'E', 'C'), (15, 'E', 'D'), (8, 'E', 'F'), (9, 'E', 'G')],
55
+ 'D': [(5, 'D', 'A'), (9, 'D', 'B'), (15, 'D', 'E'), (6, 'D', 'F')],
56
+ 'G': [(9, 'G', 'E'), (11, 'G', 'F')],
57
+ 'F': [(6, 'F', 'D'), (8, 'F', 'E'), (11, 'F', 'G')]})
49
58
50
59
"""
51
60
@@ -103,6 +112,7 @@ edges = [ ("A", "B", 7),
103
112
##运行结果
104
113
105
114
edges: [ ('A', 'B', 7), ('A', 'D', 5), ('B', 'C', 8), ('B', 'D', 9), ('B', 'E', 7), ('C', 'E', 5), ('D', 'E', 15), ('D', 'F', 6), ('E', 'F', 8), ('E', 'G', 9), ('F', 'G', 11)]
115
+
106
116
prim: [ ('A', 'D', 5), ('D', 'F', 6), ('A', 'B', 7), ('B', 'E', 7), ('E', 'C', 5), ('E', 'G', 9)]
107
117
108
118
0 commit comments