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

相关文章:

  • 2021-08-24
  • 2022-12-23
  • 2021-08-18
  • 2021-09-14
  • 2021-09-03
  • 2022-01-22
  • 2022-12-23
  • 2021-11-10
猜你喜欢
  • 2021-06-07
  • 2021-11-12
  • 2021-10-12
  • 2021-11-28
  • 2021-09-08
相关资源
相似解决方案