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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Python中使用item()方法遍历字典的例子
Aug 26 Python
在Python中使用正则表达式的方法
Aug 13 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python工程师面试必备25条知识点
Jan 17 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
python redis连接 有序集合去重的代码
Aug 04 Python
Django--权限Permissions的例子
Aug 28 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 Python
python多次执行绘制条形图
Apr 20 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作的文本留言本的例子(六)
2006/10/09 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
php session_decode函数用法讲解
2019/05/26 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
python绘制圆柱体的方法
2018/07/02 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
同学会主持词
2014/03/18 职场文书
社区清明节活动总结
2014/07/04 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
服务员岗位职责范本
2015/04/09 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
python随机打印成绩排名表
2021/06/23 Python