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基础之基本运算符概述
Aug 13 Python
Tensorflow简单验证码识别应用
May 25 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
python 多维高斯分布数据生成方式
Dec 09 Python
Python networkx包的实现
Feb 14 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Python Pandas常用函数方法总结
Jun 15 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 ios推送(代码)
2013/07/01 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Django用户认证系统 User对象解析
2019/08/02 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
生产现场工艺工程师岗位职责
2013/11/28 职场文书
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
高二美术教学反思
2014/01/14 职场文书
酒店总经理助理职责
2014/02/12 职场文书
环卫工作个人总结
2015/03/04 职场文书
紫日观后感
2015/06/05 职场文书
身份证丢失证明
2015/06/19 职场文书
中学生运动会广播稿
2015/08/19 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
基于Go Int转string几种方式性能测试
2021/04/28 Golang