数据结构之图Python版.pptx
《数据结构之图Python版.pptx》由会员分享,可在线阅读,更多相关《数据结构之图Python版.pptx(52页珍藏版)》请在三一办公上搜索。
1、数据结构之图,1,目录,一、图的定义和术语二、图的存储结构和实现三、图的基本算法及应用,2,第一部分,图的定义和术语,3,哥尼斯堡七桥问题,CB A D,4,一、图的定义,定义:图是由顶点的有穷非空集合和顶点之间边的集合组成.通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。简单图:在图中,若不存在顶点到其自身的边,且同一对顶点之间没有重复出现的边,则称这样的图为简单图。本文讨论的都是简单图,5,二、图的术语,顶点 边 权 网 邻接点 依附 稀疏图 稠密图 子图 有向图 无向图度:入度 出度 度完全图:有向完全图 完全图路径连通 生成树 生成森林,
2、6,二、图的术语,路径:对于图G=(V,E),如果存在顶点序列,.,并且其中(,),(,),.,(,)E;则说明从顶点 到 之间存在路径,并称顶点序列是从顶点 到 的一条路径。若G是有向图,则路径也是有方向的。路径长度:非带权图中为路径上边的个数;带权图为路径上各边的权之和。回路:第一个顶点和最后一个顶点相同的路径称为回路或环。简单回路:除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路称为简单回路。简单路径:内部不包含回路的路径称为简单路径。,7,二、图的术语,连通:如果在无向图G中存在从Vi到Vj的路径,则说从Vi到Vj连通 无向图:如果无向图G中任意两个顶点vi和vj之间都连通,
3、则称G为连通(无向)图 有向图:如果有向图G中任意两个顶点vi和vj,从vi到vj连通并且从vj到vi也连通,则称G为强连通(有向)图连通分量:无向图:无向图中的极大连通子图,称为连通分量 有向图:有向图中的极大强连通子图,称为强连通分量,8,二、图的术语,生成树:n个顶点的连通(无向图)图G的生成树是包含G中全部顶点的一个极小连通子图性质1:树是一个连通而无环的无向图性质2:具有n个节点的树的边数为n-1性质3:任何一个连通无向图G=(V,E),若满足丨E丨=丨V丨-1,则其为树,9,二、图的术语,生成森林:在非连通图中,由每个连通分量都可以得到一棵生成树,这些连通分量的生成树就组成了一个非
4、连通图的生成森林。若图中有n个顶点,m个连通分量,则生成森林中有n-m条边,10,第二部分,图的存储结构和实现,11,图的抽象数据类型,实现:,12,一、邻接矩阵(数组)表示法,基本思想:用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接矩阵)存储图中各顶点之间的邻接关系。假设图G=(V,E)有n个顶点,则邻接矩阵是一个nn的方阵,定义为:(1)非带权图(2)网图,13,一、邻接矩阵(数组)表示法,无向图的邻接矩阵,14,一、邻接矩阵(数组)表示法,实现:,15,二、邻接表表示法,邻接表存储的基本思想:对于图的每个顶点vi,将所有邻接于vi的顶点链成一个单链表,称为顶点vi的边表(对于
5、有向图则称为出边表),所有边表的头指针和存储顶点信息的一维数组构成了顶点表。顶点表 边表vertex:数据域,存放顶点信息。firstedge:指针域,指向边表中第一个结点。adjvex:邻接点域,边的终点在顶点表中的下标。next:指针域,指向边表中的下一个结点。,16,vertex,firstedge,adjvex,next,二、邻接表表示法,有向图 邻接表 逆邻接表,17,vertex,firstedge,adjvex,next,01234,0123,二、邻接表表示法,实现:,18,三、十字链表示法,有向图的邻接表的改进形式(只用于有向图):可将邻接表和逆邻接表用一个表实现。顶点表 边表
6、vertex:数据域,存放顶点信息;firstin:入边表头指针;firstout:出边表头指针;tailvex:弧的起点在顶点表中的下标;headvex:弧的终点在顶点表中的下标;headlink:入边表指针域;taillink:出边表指针域。,19,firstout,tailvex,headvex,headlink,vertex,firstin,taillink,info,三、十字链表示法,20,四、邻接多重表示法,无向图的邻接表的改进形式:可避免在邻接表 中表结点数为边的二倍,而且对边进行操作时(比如删除,插入等)要对两个顶点操作,比较麻烦 顶点表 边表iVex和jVex:是与某条边依附
7、的两个顶点在顶点表中的下标。iLink:指向依附顶点iVex的下一条边。jLink:指向依附顶点jVex的下一条边。,21,vertex,firstedge,jvex,ivex,ilink,jlink,info,四、邻接多重表示法,22,0,3,1,2,4,第三部分,图的基本算法及应用,23,一、图的遍历,定义:按某种方式系统的访问图中的每个顶点而且仅访问一次的过程,也称为图的周游。因为图中的顶点代表一个实际问题中的格局或状态,边表示两个顶点之间的某种联系(某种规则、操作、算子、通道或者关系),从而可以将图的遍历转化为一次穷尽的状态空间搜索问题。一般的状态空间搜索方法有枚举、深度/广度优先搜索
8、、启发式搜索等等,24,一、图的遍历-深度优先搜索,算法思想:(1)访问初始顶点v并标记顶点v已访问。(2)查找顶点v的第一个邻接顶点w。(3)若顶点v的邻接顶点w存在,则继续执行;否则回溯到v,再找v的另外一个未访问过的邻接点。(4)若顶点w尚未被访问,则访问顶点w并标记顶点w为已访问。(5)继续查找顶点w的下一个邻接顶点wi,如果v取值wi转到步骤(3)。直到连通图中所有顶点全部访问过为止。例:如图深度优先搜索结果为:v1-v2-v4-v8-v5-v3-v6-v7根据生成树的性质可知,对于连通图G的深度优先遍历结果得到的是一棵深度优先生成树,25,一、图的遍历-深度优先搜索,算法实现:,2
9、6,一、图的遍历-广度优先搜索,算法思想:(1)顶点v入队列。(2)当队列非空时则继续执行,否则算法结束。(3)出队列取得队头顶点v;访问顶点v并标记顶点v已被访问。(4)查找顶点v的第一个邻接顶点col。(5)若v的邻接顶点col未被访问过的,则col入队列。(6)继续查找顶点v的另一个新的邻接顶点col,转到步骤(5)。直到顶点v的所有未被访问过的邻接点处理完。转到步骤(2)。例:如图广度优先搜索结果为:v1-v2-v3-v4-v5-v6-v7-v8根据生成树的性质可知,对于连通图的深度优先遍历结果得到的是一棵宽度优先生成树,27,一、图的遍历-广度优先搜索,算法实现:,28,二、最小生成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 Python

链接地址:https://www.31ppt.com/p-4589132.html