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 相关文章推荐
Python3 正在毁灭 Python的原因分析
Nov 28 Python
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
Python中 Lambda表达式全面解析
Nov 28 Python
python实现超市扫码仪计费
May 30 Python
python解决字符串倒序输出的问题
Jun 25 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
python实现引用其他路径包里面的模块
Mar 09 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
python实现最短路径的实例方法
Jul 19 Python
Python实现照片卡通化
Dec 06 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
自己动手做一个SQL解释器
2006/10/09 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
python创建和删除目录的方法
2015/04/29 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python从零开始创建区块链
2018/03/06 Python
python requests 测试代理ip是否生效
2018/07/25 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
django框架cookie和session用法实例详解
2019/12/10 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Python类成员继承重写的实现
2020/09/16 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
文秘专业自荐信
2013/10/14 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
新课培训心得体会
2014/09/03 职场文书
民间借贷协议书范本
2014/10/01 职场文书