python数据结构之图的实现方法

768次阅读  |  发布于5年以前

本文实例讲述了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程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8