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


Posted in Python onJuly 08, 2015

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

Python 相关文章推荐
python uuid模块使用实例
Apr 08 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
详解Swift中属性的声明与作用
Jun 30 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python将字典内容存入mysql实例代码
Jan 18 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
详解Django CAS 解决方案
Oct 30 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Flask response响应的具体使用
Jul 15 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 #Python
python中偏函数partial用法实例分析
Jul 08 #Python
Python使用bs4获取58同城城市分类的方法
Jul 08 #Python
Python实现批量修改文件名实例
Jul 08 #Python
Python查询阿里巴巴关键字排名的方法
Jul 08 #Python
浅谈Python中的闭包
Jul 08 #Python
Python中atexit模块的基本使用示例
Jul 08 #Python
You might like
php+javascript的日历控件
2009/11/19 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php 的反射详解及示例代码
2016/08/25 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
php实例化一个类的具体方法
2019/09/19 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
python中的常量和变量代码详解
2018/07/25 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
空乘英文求职信
2014/04/13 职场文书
岗位说明书怎么写
2014/07/30 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书