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 30 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
深入浅析python继承问题
May 29 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
Python参数传递及收集机制原理解析
Jun 05 Python
python 获取字典键值对的实现
Nov 12 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
Python中类型关系和继承关系实例详解
2015/05/25 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Django 自定义分页器的实现代码
2019/11/24 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python hashlib模块的使用示例
2020/10/09 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
庆六一宣传标语
2014/10/08 职场文书
2014年节能工作总结
2014/12/18 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
php字符串倒叙
2021/04/01 PHP
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
Python实现老照片修复之上色小技巧
2021/10/16 Python