- 1、本文档共106页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 图遍历的应用 无向图的连通性 欧拉回路 有向图的连通性 拓扑排序 * 拓扑排序 设G=(V,E)是一个具有n个顶点的有向无环图。V中的顶点序列V1,V2,…,Vn称为一个拓扑序列,当且仅当该序列满足下列条件:若在G中,从Vi到Vj有一条路径,则序列中Vi必须排在Vj的前面。 * 下述集合 M 代表课程的集合 1 代表数学, 2 代表程序设计, 3 代表离散数学, 4 代表汇编程序设计, 5 代表数据结构, 6 代表结构化程序设计, 7 代表编译原理 关系R表示课程学习的先后关系,如数学必须在离散数学之前学习。要求排一张学习的先后次序表。 拓扑排序的应用 * 1 3 2 7 5 6 4 数学 程序设计 离散数学 汇编程序设计 数据结构 结构化程序设计 编译原理 用有向图表示关系R。节点集为课程集合。如果课程i和j有关系R,则有一条边。 * 可行的排课: 方案1: 1,2,3,4,5,6,7 方案2: 1,2,3,5,6,4,7 方案3: 1,2,3,5,6,7,4 。。。 1 3 2 7 5 6 4 数学 程序设计 离散数学 汇编程序设计 数据结构 结构化程序设计 编译原理 * 找出拓扑排序的过程 第一个输出的结点(序列中的第一个元素): 必须无前驱,即入度为0 后驱:必须等到它的前驱输出之后才输出。 无前驱及后件的结点:任何时候都可输出。 逻辑删除法:当某个节点被输出后,就作为该节点被删除。所有以该节点作为前驱的所有节点的入度减1。 * 1 3 2 7 5 6 4 数学0 程序设计1 离散数学1 汇编程序设计1 数据结构2 结构化程序设计1 编译原理3 * 0 0 0 1 1 1 汇编程序设计 0 0 1 1 1 结构化程序设计 0 1 2 2 数据结构 0 1 2 2 3 3 编译原理 0 0 1 程序设计 0 1 离散数学 0 数学 输出: 数学, 离散数学, 程序设计, 数据结构, 结构化程序设计, 编译原理, 汇编程序设计 * 拓扑排序的实现 计算每个结点的入度,保存在数组inDegree中; 检查inDegree中的每个元素,将入度为0的结点入队; 不断从队列中将入度为0的结点出队,输出此结点,并将该结点的后继结点的入度减1;如果某个邻接点的入度为0,则将其入队。 * template class TypeOfVer, class TypeOfEdge void adjListGraphTypeOfVer, TypeOfEdge::topSort( ) const { linkQueueint q; edgeNode *p; int current, *inDegree = new int[Vers]; for (int i = 0; i Vers; ++i) inDegree[i] = 0; for ( i = 0; i Vers; ++i) for (p = verList[i].head; p != NULL; p = p-next) ++inDegree[p-end]; } for (i = 0; i Vers; ++i) if (inDegree[i] == 0) q.enQueue(i); cout 拓扑排序为: endl; while( !q.isEmpty( ) ){ current = q.deQueue( ); cout verList[current].ver \t; for (p = verList[current].head; p != NULL; p = p-next) if( --inDegree[p-end] == 0 ) q.enQueue( p-end ); } cout endl; } * 时间复杂度 如果图以邻接表表示 计算入度需要O(|V|+|E|)的时间,有哪些信誉好的足球投注网站入度为0的结点需要O(|V|)的时间。每个结点入一次队、出一次队。每出一次队,需要检查它的所有后继结点,因此也需要O(|V|+|E|)的时间。所以总的执行时间也是O(|V|+|E|) * 总结 图是一种最一般的数据结构,有着广泛的用途。 图可以用邻接矩阵、邻接表和其他方法来存储 图的遍历:深度优先有哪些信誉好的足球投注网站和广度优先有哪些信誉好的足球投注网站,并给出了它们在邻接表的存储方式下的实现。 图的应用: 检测无向图的连通性 寻找无向图的欧拉回路 寻找有向图的强连通分量 拓扑排序 * * * * * * * * * * * * * * 广度优先有哪些信誉好的足球投注网站的实现 需要记录每个结点是否已被访问 需要记住每个已被访问的结点的后继结点,然后依次访问
文档评论(0)