zoukankan      html  css  js  c++  java
  • python数据结构之图的实现方法

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

  • 相关阅读:
    Struts2中请求参数的接收方式和ModelDriven机制及其运用
    struts2获得请求参数的方式
    参数(parameter)和属性(Attribute)的区别
    getContextPath、getServletPath、getRequestURI,getRealPath的区别
    struts2的result的type属性
    Struts2的值栈和对象栈
    el表达式跟ognl表达式的区别(转)
    Struts学习之值栈的理解
    创建虚拟机-1
    安装kvm模块配置网络
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586744.html
Copyright © 2011-2022 走看看