C++图的拓扑排序是什么


本文小编为大家详细介绍“C++图的拓扑排序是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++图的拓扑排序是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。且该序列必须满足下面两个条件:每个顶点出现且只出现一次。若存在一条从顶点 x到顶点 y的路径,那么在序列中顶点 x 出现在顶点 y的前面。拓扑排序只适用于 AOV网 (有向无环图)若图中有环,则一定不存在拓扑序。可以证明,一个有向无环图,一定存在一个拓扑序列。有向无环图,又被称为拓扑图。入度: 即有多少条边指向自己这个节点。出度: 即有多少条边从自己这个节点指出去。算法流程:用队列来执行 ,初始化所有入度为0的顶点入队。主要由以下两步循环执行,直到不存在入度为 0 的顶点为止选择一个入度为 0 的顶点,并将它输出;删除图中从顶点连出的所有边循环结束若输出的顶点数小于图中的顶点数,则表示该图存在回路,即无法拓扑排序,否则,输出的就是拓扑序列 (不唯一)模板如下:1.数组模拟队列实现拓扑排序2.使用STL queue实现拓扑排序时间复杂度 O(n+m), n表示点数,m表示边数给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。思路我们每次找到入读为0的点,然后把他插入到队列里,然后将这个点删除,这也就意味着这个点连接的下一个点(可能是多个)的入度就会减1。这个时候,我们就进入了下一轮。我们因为前面将一个点删除了,那么它指向的点的入度就会都减去1,所以,就会出现新的点的入度为0,这个点显然是因为它的入度小,所以它理所应当的排在拓扑序里面在第二位。当前面的一个点没有了被删除了,那它就要首当其冲了。和图的BFS思路很像,但是加了搜索的规则(即入度为零的先被搜索)可以看点这里AC代码读到这里,这篇“免费云主机域名C++图的拓扑排序是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: Node.js开发的知识点有哪些

这篇文章主要介绍“Node.js开发的知识点有哪些”,在日常操作中,相信很多人在Node.js开发的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js开发的知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/08 10:55
Next 05/08 10:55

相关推荐