数据结构图的存储表示.pptx
《数据结构图的存储表示.pptx》由会员分享,可在线阅读,更多相关《数据结构图的存储表示.pptx(28页珍藏版)》请在第壹文秘上搜索。
1、图图 数据结构数据结构l图的概念和操作图的概念和操作l图的存储:邻接矩阵,邻接表图的存储:邻接矩阵,邻接表l图的遍历:宽度优先,深度优先图的遍历:宽度优先,深度优先l生成树:生成树:DFS 生成树,生成树,BFS 生成树生成树l最小生成树:最小生成树:Prim 算法,算法,Kruskal 算法算法l最短路径问题:最短路径问题:n单源点最短路径和单源点最短路径和 Dijkstra 算法算法n所有顶点之间的最短路径和所有顶点之间的最短路径和 Floyd 算法算法lAOV 网,拓扑排序网,拓扑排序lAOE 网,关键路径网,关键路径主要内容主要内容*第七章第七章 图图*无向图、无向图、有向图、带权图(
2、网)有向图、带权图(网)2023-4-253第七章第七章 图图ABCDEFABCDEABCD86394125lGraph( V, E )nV = v | v 某数据对象某数据对象 顶点的有穷非空集合;顶点的有穷非空集合;nE = (u, v) | u, v V 或或 E = | x, y V 是顶点之间关系的有穷集合,也叫边(或弧)集合。是顶点之间关系的有穷集合,也叫边(或弧)集合。 称称u、v互为邻接点。互为邻接点。图的概念图的概念2023-4-254第七章第七章 图图uvuvl与之相关联的边或弧的数目与之相关联的边或弧的数目l有向图:有向图:D(v)=ID(v)+OD(v)nID(v):
3、入度(入度(in-degree),即入边数;),即入边数;nOD(v):出度(:出度(out-degree),即出边数。),即出边数。顶点的度顶点的度 *第七章第七章 图图vlADT Graph: nGraph(self) # 图的创建图的创建nvertex_num(self) # 获取顶点总数获取顶点总数nvertices(self) # 获取图的顶点集合获取图的顶点集合nadd_vertex(self, v) # 添加顶点添加顶点nadd_edge(self, v1, v2) # 添加添加v1到到v2的边的边nget_edge(self, v1, v2) # 获取边获取边(v1, v2)的
4、信息,例如权的信息,例如权nout_edges(self, v) # 获取从获取从v发出的所有发出的所有“边边” (v的所有邻接点)的所有邻接点)ndegree(self, v) # 求求v的度的度图的基本操作图的基本操作*第七章第七章 图图图的存储图的存储2023-4-25第七章第七章 图图7l顶点集顶点集n顶点信息表顶点信息表n顶点总数顶点总数l关系集关系集n顶点之间关系,即边集或弧集顶点之间关系,即边集或弧集n边或弧的总数边或弧的总数l图的类型图的类型n有向、无向、带权、不带权有向、无向、带权、不带权应存储的内容应存储的内容*第七章第七章 图图邻接矩阵邻接矩阵Adjacent Matri
5、x2023-4-259第七章第七章 图图无向图的邻接矩阵:对称无向图的邻接矩阵:对称2023-4-2510第七章第七章 图图Python等长等长list的的list: 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0 ABCDEF001000100110011100101110010000001010有向图的邻接矩阵:非对称有向图的邻接矩阵:非对称2023-4-2511第七章第七章 图图Python等长等长list的的list: 0, 1, 0, 0, 1, 0, 0
6、, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0 ABCDE0010000010011100001000010有向带权图的邻接矩阵有向带权图的邻接矩阵2023-4-2512第七章第七章 图图Python等长等长list的的list: 0, 3, 5, 8, inf, 0, 1, 4, 9, inf, 0, 2, 6, inf, inf, 0 062094108530ABCD86394125带权图的无穷大:带权图的无穷大:inf = float(inf)class Graph: def _init_(self, mat): vnum =
7、 len(mat) # 对传入的对传入的mat做了拷贝构造做了拷贝构造 self._mat = mati: for i in range(vnum) self._vnum = vnum图的建立图的建立邻接矩阵邻接矩阵2023-4-2513第七章第七章 图图获取顶点获取顶点v的所有的所有“邻接点邻接点”2023-4-2514ABCDEFABCD86394125g1.out_edges(1) = (0, 1), (4, 1), (5, 1) g3.out_edges(2) = (0, 9), (3, 2) 0010001001100111001011100100000010100620941085
8、30def out_edges(self, v): 获取获取v的所有的所有(邻接点邻接点,边权边权)对,以对,以list形式返回形式返回 assert 0 = v self._vnum # 用用assert替代异常替代异常 return Graph._out_edges(self._mat, v) staticmethod def _out_edges(mat, v): edges = row = matv for i in range(len(row): if rowi != 0 and rowi != inf: edges.append(i, rowi) # (邻接点邻接点,边权边权) r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 存储 表示