数据结构与算法分析:第6章 图.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第6章图6.1图的基本概念6.2图的存储结构6.3图的遍历6.4最小生成树6.5最短路径和拓扑排序6.1图的基本概念6.1.1图的定义图的定义:图可用二元组表示:Graph=(V,E),其中V表示元素(顶点)的非空有限集合;E表示元素之间关系(边)的有限集集合,边是顶点偶对。可以看出图的每个结点有任意多个前驱和后继结点。有向图和无向图子图6.1图的基本概念6.1.2常用术语完全图:在一个有n个顶点的无向图中,若每个顶点到其它(n-1)顶点都有一条边,则图中有n个顶点且有(n*(n-1)/2)条边的图称为无向完全图邻接点:对无向图G=(V,E),若有(V1,V2)〈E,则称V1和V2互为邻接点相关边:两个相邻接的点连成的边叫做这两个结点的相关边度:与每个顶点相连的边的数叫该点的度入度:对有向图中某结点的孤头数(边的终点)称为该结点的入度6.1图的基本概念出度:对有向图中某结点的孤尾数(边的终点)称为该结点的出度路径:在一图中若从某个顶点VP出发,沿着一些边经过顶点V1,V2,…,Vm到达Vg则称顶点序列(VP,V1,V2,…,Vm,Vg)为从Vp到Vg的路径回路:从一顶点出发又回到该顶点,则所经过的路径称为回路连通:在无向图中,若从顶点Vi到顶点Vj之间有路径则称这两个顶点是连通的权:有些图对应每条边有一相应的数值,这个数值称为该边的权网:带权的图称为网6.2图的存储结构6.2.1邻接矩阵表示法邻接矩阵是:设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是一个n*n的方阵,其中矩阵每一行分别对应图的各个顶点;矩阵的每一列分别对应图的各个顶点邻接矩阵的性质:1.图中各顶点序号确定后,图的邻接矩阵是唯一确定的;2.无向图和无向网的邻接矩阵是一个对称矩阵;3.无向图邻接矩阵中第i行(或第i列)的非0元素的个数即为第i个顶点的度;4.有向图邻接矩阵第i行非0元素个数为第i个顶点的出度,第i列非0元素个数为第i个顶点的入度,第i个顶点的度为第i行与第i列非0元素个数之和;5.无向图的边数等于邻接矩阵中非0元素个数之和的一半,有向图的弧数等于邻接矩阵中非0元素个数之和6.2图的存储结构6.2.2邻接表表示法在邻接表表示法中,用一个顺序存储区来存储图中各顶点的数据,并对图中每上顶点vi建立一个单链表(此单链表称之为的vi邻接表),把顶点vi的所有相邻顶点,即其后继顶点的序号链接起来邻接表与邻接矩阵的关系:1.对应于邻接矩阵的每一行有一个线形链接表;2.链接表的表头对应着邻接矩阵该行的顶点;3.链接表中的每个结点对应着邻接矩阵中该行的一个非零元素;4.对于无向图:一个非零元素表示与该行顶点相邻接的另一个顶点;5.对于有向图:非零元素则表示该行顶点为起点的一条边的终点。6.2图的存储结构邻接表的性质:1.图的邻接表表示不是唯一的,它与表结点的链入次序有关;2.无向图的邻接表中第i个边表的结点个数即为第i个顶点的度;3.有向图的邻接表中第i个出边表的结点个数即为第i个结点的出度,有向图的逆邻接表中第i个入边表的结点个数即为第i个结点的入度;4.无向图的边数等于邻接表中边表结点数的一半,有向图的弧数等于邻接表(逆邻接表)中出边表结点(入边表结点)的数目。6.2图的存储结构6.2.3关联矩阵图的另一种矩阵表示法为以顶点和边的关联关系为基础建立矩阵,这个矩阵称之为关联矩阵定义如下:图G=(V,E)的关联矩阵是一个矩阵,使得6.3图的遍历6.3.1深度优先搜索遍历从图中某个顶点出发访问图中所有顶点,且使得每一顶点仅被访问一次,这一过程称之为图的遍历假定给定图G的初态是所有顶点均未曾访问过,在G中任选一顶点v为初始出发点,则深度优先搜索可定义如下:从指定的起点v出发(先访问v,并将其标记为已访问过),访问它的任意相邻接的顶点w1,再访问w1的任一个未访问的相邻接顶点w2,如此下去,直到某顶点已无被访问过的邻接顶点或者它的所有邻接顶点都已经被访问过了,就回溯到它的前驱。如果这个访问和回溯过程返回到遍历开始的顶点,就结束遍历过程。如果图中仍存在一些未访问过的结点,就另选一个未访问过的结点重新开始深度优先搜索遍历。6.3图的遍历深度优先搜索遍历算法表示如下:DFS(v)num(v)=i++;for所有与v邻接的顶点uifnum(u)是0将edge(uv)连接到edges中;DFS(u);?depthFi

文档评论(0)

胖鸥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档