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 set集合类型操作总结
Nov 07 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
Python functools模块学习总结
May 09 Python
python 循环while和for in简单实例
Aug 16 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
python中ASCII码和字符的转换方法
Jul 09 Python
浅谈django的render函数的参数问题
Oct 16 Python
python3+django2开发一个简单的人员管理系统过程详解
Jul 23 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
Pyqt5自适应布局实例
Dec 13 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
Python读写压缩文件的方法
2020/07/30 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
C语言面试题
2015/10/30 面试题
儿科主治医生个人求职信
2013/09/23 职场文书
优秀部门获奖感言
2014/02/14 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
邀请函格式范文
2015/02/02 职场文书
工程技术员岗位职责
2015/04/11 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
青年联谊会致辞
2015/07/31 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers