Python数据结构——图(graph)
图由顶点和边组成。如果图中顶点是有序的,则称之为有向图。
由顶点组成的序列,称为路径。
除了可以对图进行遍历外,还可以搜索图中任意两个顶点之间的最短路径。
在python中,可利用字典 {键:值} 来创建图。
图中的每个顶点,都是字典中的键,该键对应的值为“该顶点所指向的图中其他的顶点”。
# -*- coding:utf-8 -*-
# file: pygraph.py
#
def searchGraph(graph, start, end): # 搜索树results = [] generatePath(graph, [start], end, results) # 生成路径results.sort(key=lambda x:len(x)) # 按路径长短排序return results
def generatePath(graph, path, end, results): # 生成路径state = path[-1]if state == end:results.append(path)else:for arc in graph[state]:if arc not in path: generatePath(graph, path + [arc], end, results)
if __name__ == '__main__':Graph = {'A': ['B', 'C', 'D'], # 构建树'B': ['E'],'C': ['D', 'F'],'D': ['B', 'E', 'G'],'E': [],'F': ['D', 'G'],'G': ['E']}r = searchGraph(Graph, 'A','D') # 搜索A到D的所有路径print('************************')print(' path A to D')print('************************')for i in r:print(i)r = searchGraph(Graph, 'A','E') # 搜索A到E的所有路径print('************************')print(' path A to E')print('************************')for i in r:print(i)r = searchGraph(Graph, 'C','E') # 搜索C到E的所有路径print('************************')print(' path C to E')print('************************')for i in r:print(i)
运行结果如下:
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
== RESTART: G:\pygraph.py ==
************************path A to D
************************
['A', 'D']
['A', 'C', 'D']
['A', 'C', 'F', 'D']
************************path A to E
************************
['A', 'B', 'E']
['A', 'D', 'E']
['A', 'C', 'D', 'E']
['A', 'D', 'B', 'E']
['A', 'D', 'G', 'E']
['A', 'C', 'D', 'B', 'E']
['A', 'C', 'D', 'G', 'E']
['A', 'C', 'F', 'D', 'E']
['A', 'C', 'F', 'G', 'E']
['A', 'C', 'F', 'D', 'B', 'E']
['A', 'C', 'F', 'D', 'G', 'E']
************************path C to E
************************
['C', 'D', 'E']
['C', 'D', 'B', 'E']
['C', 'D', 'G', 'E']
['C', 'F', 'D', 'E']
['C', 'F', 'G', 'E']
['C', 'F', 'D', 'B', 'E']
['C', 'F', 'D', 'G', 'E']
Python数据结构——图(graph)相关推荐
- 数据结构--图(Graph)详解(四)
数据结构–图(Graph)详解(四) 文章目录 数据结构--图(Graph)详解(四) 一.图中几个NB的算法 1.普里姆算法(Prim算法)求最小生成树 2.克鲁斯卡尔算法(Kruskal算法)求最 ...
- 数据结构--图(Graph)详解(三)
数据结构–图(Graph)详解(三) 文章目录 数据结构--图(Graph)详解(三) 一.深度优先生成树和广度优先生成树 1.铺垫 2.非连通图的生成森林 3.深度优先生成森林 4.广度优先生成森林 ...
- 数据结构--图(Graph)详解(二)
数据结构–图(Graph)详解(二) 文章目录 数据结构--图(Graph)详解(二) 一.图的存储结构 1.图的顺序存储法 2.图的邻接表存储法 3.图的十字链表存储法 4.图的邻接多重表存储法 二 ...
- 数据结构--图(Graph)详解(一)
数据结构–图(Graph)详解(一) 文章目录 数据结构--图(Graph)详解(一) 一.图的基本概念 1.图的分类 2.弧头和弧尾 3.入度和出度 4.(V1,V2) 和 < V1,V2 & ...
- Python 数据结构 —— 图
1. 图的存储方式 1.1 图的存储数据结构 图可以用 邻接矩阵 和 邻接表 (Adjacency List)来表示,当边数不多的时候,使用邻接表存储效率更高 如存储下面的图: 对应的邻接表为: 1. ...
- python数据结构-图
图 图是一种数据间具有多对多关系的非线性数据结构 顶点的度:指与该顶点关联的边的数目 全部顶点的度之和为边数的两倍 图的存储有邻接矩阵,邻接表,十字链表 邻接矩阵 边采用顺序存储结构,用二维数组存储 ...
- 数据结构--图 Graph
文章目录 1. 概念 2. 存储方法 2.1 邻接矩阵 Adjacency Matrix 2.2 邻接表 Adjacency List 3. 图的遍历 3.1 广度优先搜索BFS(Breadth Fi ...
- 数据结构与算法(python):图(Graph)的基本概念及应用
参考自 MOOC数据结构与算法Python版 本章代码: https://github.com/HuiFang-hub/-/tree/main. 目录 一.图Graph的概念 1.1 互联网 1.2 ...
- python加载模型文件进行图片分类_tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式...
Google提供了一个工具,TensorBoard,它能以图表的方式分析你在训练过程中汇总的各种数据,其中包括Graph结构. 所以我们可以简单的写几行Pyhton,加载Graph,只在logdir里 ...
最新文章
- Tomcat下载安装与环境变量的配置
- 【黑客浅析】像黑客一样思考
- 手机zip模拟器_车祸现场模拟器简体中文免安装版 6.4G
- 单臂路由配置命令_如何通过单臂路由实现VLAN间通信?(配置篇)
- (2)HTML基本标签
- Keras-5 基于 ImageDataGenerator 的 Data Augmentation实现
- typescript 判断异步执行已经结束_vue进阶系列——用typescript玩转vue和vuex
- POJ2559最大矩形面积——单调栈
- 【sklearn第十三讲】Naive Bayes分类器
- jsp开发教程之 仿MOP论坛 二(数据库,界面设计篇)
- DUBBO监控环境搭建
- cocos2d 解密ccbi_CocosBuilder 学习笔记(3) AnimationManager 与 ccbi 文件解析
- matlab魔方矩阵有哪些,关于matlab 魔方矩阵的1、用前100个自然数创建一个10阶的魔方矩阵,求出每行、每列、所有对角线元素的和,再将矩阵...
- 夫水之积也不厚,则其负大舟也无力
- openSUSE Leap 15.2 和 Tumbleweed KDE Plasma 在ThinkPad X61上安装,自带了有线、无线网卡和显卡驱动
- Abbreviation----Java实现
- win7系统64位系统怎么计算机配置,电脑装64位系统有什么要求|64位系统安装条件是什么...
- 10个 安卓应用商店开发者公司账号注册(2022最新最全)
- 链游玩家出品:链游市场现状
- Android App的国际化-各国语言缩写