python图的表示与搜索

# -*- coding:utf-8 -*-
 # file: pygraph.py
 #
 def searchGraph(graph, start, end):                             # 搜索树
         results = []                
         generatePath(graph, [start], end, results)              # 生成路径
         results.sort( lambda x, y:cmp(len(x), len(y)))          # 按路径长短排序
         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)
 if __name__ == '__main__':
         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')                         # 搜索A到D的所有路径
         print '************************'
         print '     path A to D'
         print '************************'
         for i in r:
                 print i
         r = searchGraph(Graph, 'A','E')                         # 搜索A到E的所有路径
         print '************************'
         print '     path A to E'
         print '************************'
         for i in r:
                 print i
         r = searchGraph(Graph, 'C','E')                         # 搜索C到E的所有路径
         print '************************'
         print '     path C to E'
         print '************************'
         for i in r:
                 print i
 #Python 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值