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解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python八皇后问题的解决方法
Sep 27 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
python遍历小写英文字母的方法
Jan 02 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
python实现五子棋程序
Apr 24 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
python简单验证码识别的实现过程
Jun 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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python 实现超级玛丽游戏
2020/11/25 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
会计应届生的自荐信
2013/12/13 职场文书
大一自我鉴定范文
2013/12/27 职场文书
新学期开学寄语
2014/01/18 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
保密工作目标责任书
2014/07/28 职场文书
小学运动会演讲稿
2014/08/25 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
送给客户微信问候语!
2019/07/04 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书