python - 图

图 :使用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)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值