zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    (转)【web前端培训之前后端的配合(中)】继续昨日的故事
    ural(Timus) 1136. Parliament
    scau Josephus Problem
    ACMICPC Live Archive 6204 Poker End Games
    uva 10391 Compound Words
    ACMICPC Live Archive 3222 Joke with Turtles
    uva 10132 File Fragmentation
    uva 270 Lining Up
    【转】各种字符串哈希函数比较
    uva 10905 Children's Game
  • 原文地址:https://www.cnblogs.com/ceo-python/p/11630989.html
Copyright © 2011-2022 走看看