- 1、本文档共108页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.1 图的基本概念 定义: 图是由顶点集合(vertex)及边的集合组成的一种数据结构: Graph=( V, E ) 其中 V = { x | x ? 某个数据对象} 是顶点的有穷非空集合; E = {(x, y) | x, y ? V } 是顶点之间关系的有穷集合,也叫做边(edge)集 合。例如:E={ A,B,C,D,A.D,B,C} 有向图与无向图 若图G中的每条边都是有方向的,则称G为有向图。有向边也称为弧。若图G中的每条边都是没有方向的,则称G为无向图。 完全图 对有n个顶点的图,若为无向图且边数为n(n-1)/2,则称其为无向完全图;若为有向图且边数为n(n-1) ,则称其为有向完全图。 稠密图、稀疏图 生成森林: 由非连通图的每个连通分量可以分别得到一棵生成树,各个连通分量的生成树组合构成一个生成森林(Spanning Forest). 8. 2 图的存储结构 常用的图结构存储方法: 邻接矩阵表示法 邻接表表示法。 2. 邻接表 (Adjacency List) 无向图的邻接表 有向图的邻接表和逆邻接表 网 (带权图) 的邻接表 for (i=0;in;++i) //初始化顶点表 { adjlist[i].data= vexs[i]; adjlist[i].firstedge=0; } for(k=0; ke; ++k ) //依次输入所有的边的信息 { cinvavb; // 输入一条边两个顶点的序号 p=new EdgeNode; //产生第一个表结点 p-adjvex=vb; p-nextedge=adjlist[va].firstedge; // 插在表头 adjlist[va].firstedge=p; p=new EdgeNode; p-adjvex=va; p-nextedge=adjlist[vb].firstedge; // 插在表头 adjlist[vb].firstedge=p; } } 8.3 图的遍历 从图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历 ( Graph Traversal )。 图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。 为了避免重复访问,可设置一个标志顶点是否被访问过的辅助数组 visited [ ],它的初始状态为 0,在图的遍历过程中,一旦某一个顶点 i 被访问,就立即让 visited [i] 为 1,防止它被多次访问。 图的遍历方法 主要分为两种: 深度优先搜索 广度优先搜索。 深度优先搜索DFS ( Depth First Search ) 深度优先搜索的示例 图的深度优先搜索类似于树的先根遍历,其搜索规则可递归定义如下: ① 假设初始状态是图中所有顶点都未被访问,则可从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至所有与v有通路的顶点都被访问到; ② 若此时图中还有顶点未被访问到,则选该未被访问的顶点为起点,重复上述步骤①,直到图中所有顶点都被访问到为止。 基于DFS算法,我们可以“判断一个图是否连通”或“求解一个非连通图中的连通分量个数”。 广度优先搜索BFS ( Breadth First Search ) 广度优先搜索的示例 8.4 最小生成树 ( minimum cost spanning tree ) 2. 最小生成树的求解算法 普里姆(Prim)算法 克鲁斯卡尔 (Kruskal) 算法 (1) 普里姆(Prim)算法: 普里姆算法的基本思想: 从连通网 N = { V, E }中的某一顶点 u0 出发,选择与它关联的具有最小权值的边(u0, v),将其顶点加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u, v),把它的顶点加入到集合U中。如此继续下去,直到网络中的 所有顶点都加入到集合U中为止。 ① 从连通网N={V, E}中的选择任一顶点v0加入到生成树T的顶点集合U中,并为集合V?U中的各顶点置最小权值边。 ② while (生成树T中顶点数目n) { 从集合V?U中各顶点对应的最小权值边中选取最短边(u,v); 将边(u,v) 及其在集合V?U中的顶点 v加到生成树T中; 调整集合V?U中各顶点对应的最小权值边; }
您可能关注的文档
最近下载
- 妊娠期间孕妇心理护理.pptx VIP
- 2025山东威海热电集团有限公司招聘37人考试备考题库及答案解析.docx VIP
- 2025山东威海热电集团有限公司招聘37人笔试参考题库附答案解析.docx VIP
- 2025山东威海热电集团有限公司招聘37人笔试备考试题及答案解析.docx VIP
- 2025山东威海热电集团有限公司招聘37人笔试模拟试题及答案解析.docx VIP
- 伤口造口失禁专科护士.docx VIP
- 伤口造口专科护士试题 造口试题 .pdf VIP
- 施工脚手架通用规范完整版2024.pdf VIP
- 临床执业医师妇产科学复习指导.pdf VIP
- NY∕T 391-2021 绿色食品 产地环境质量.pdf
文档评论(0)