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程序设计有所帮助。

Posted in 未分类