python数据结构之图的实现方法
本文实例讲述了python数据结构之图的实现方法。分享给大家供大家参考。具体如下:
下面简要的介绍下:
比如有这么一张图:
A
-> B
A
-> C
B
-> C
B
-> D
C
-> D
D
-> C
E
-> F
F
-> C
可以用字典和列表来构建
graph = {'A': ['B', 'C'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']}
找到一条路径:
def find_path(graph, start, end, path=[]):
path = path
[start]
if start ==
end:
return path
if not
graph.has_key(start):
return None
for node in
graph[start]:
if node not in path:
newpath = find_path(graph, node, end, path)
if newpath: return newpath
return
None
找到所有路径:
def find_all_paths(graph, start, end, path=[]):
path = path
[start]
if start ==
end:
return [path]
if not
graph.has_key(start):
return []
paths =
[]
for node in
graph[start]:
if node not in path:
newpaths = find_all_paths(graph, node, end, path)
for newpath in newpaths:
paths.append(newpath)
return
paths
找到最短路径:
def find_shortest_path(graph, start, end, path=[]):
path = path
[start]
if start ==
end:
return path
if not
graph.has_key(start):
return None
shortest =
None
for node in
graph[start]:
if node not in path:
newpath = find_shortest_path(graph, node, end, path)
if newpath:
if not shortest or len(newpath) <
len(shortest):
shortest = newpath
return
shortest
希望本文所述对大家的Python程序设计有所帮助。