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 远程统计文件代码分享
May 14 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
python实现图片转字符小工具
Apr 30 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
python复合条件下的字典排序
Dec 18 Python
Matplotlib配色之Colormap详解
Jan 05 Python
解决pytorch 保存模型遇到的问题
Mar 03 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版(5)
2006/10/09 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php GeoIP的使用教程
2011/03/09 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
CI框架中zip类应用示例
2014/06/17 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Pytorch 实现权重初始化
2019/12/31 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
python某漫画app逆向
2021/03/31 Python
Python利器openpyxl之操作excel表格
2021/04/17 Python