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程序与MySQL的教程
Apr 29 Python
Python中动态创建类实例的方法
Mar 24 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
在Python中通过threshold创建mask方式
Feb 19 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
Python 绘制可视化折线图
Jul 22 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
PyTorch预训练Bert模型的示例
Nov 17 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表单转换textarea换行符的方法
2010/09/10 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
在Python中使用Neo4j的方法
2019/03/14 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Python基于WordCloud制作词云图
2019/11/29 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
新电JAVA笔试题目
2014/08/31 面试题
电台实习生求职信
2014/02/25 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
组织生活会发言材料
2014/12/15 职场文书
医生辞职信范文
2015/03/02 职场文书
欢迎新生标语2015
2015/07/16 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android