图 :使用python建图,只要用到python中的字典,每一个节点的权重为字典中的键,与节点相连接的边组成的是值。
下面是一个简单的建图和遍历深搜。
# --*--coding:utf-8 --*--
#file jiandan.py
def searchGraph(graph,start,end):
results = []
generatePath(graph,[start],end,results)
results.sort(key=lambda x :len(x)) #按照路径长度进行排序
return results
def generatePath(graph,path,end,results):
state = path[-1]
if state == end : #找到一个新的路径
results.append(path)
else:
for arc in graph[state]:
if arc not in path : #避免成圈
generatePath(graph,path+[arc],end,results)
#建图'
Graph={
'A':['B','C','D'],
'B':['E'],
'C':['D','F'],
'D':['B','E','G'],
'E':[],
'F':['D','G'],
'G':['E']
}
r = searchGraph(Graph,'A','D')
print("*****************************")
print(" path A to D ")
print("*****************************")
for i in r:
print(i)