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程序中解析并修改XML内容的方法
Nov 16 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
python学习开发mock接口
Apr 28 Python
django 信号调度机制详解
Jul 19 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
PHP云打印类完整示例
2016/10/15 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
js 操作select相关方法函数
2009/12/06 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
前端性能优化及技巧
2016/05/06 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
python使用cookielib库示例分享
2014/03/03 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
Python中特殊函数集锦
2015/07/27 Python
python3 读取Excel表格中的数据
2018/10/16 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
医院门卫岗位职责
2013/12/30 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
技术股东合作协议书
2014/12/02 职场文书
安全生产标语口号
2015/12/26 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫