在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
摘要:本文简要介绍了拓扑排序算法的原理,并给出了基于邻接矩阵实现的拓扑排序c++源码 关键字:拓扑排序,topological sort,AOV网络 最近在论坛上看到一个百度的笔试题,大概意思是给定N个有依赖关系但是没有循环依赖的源码文 件,要求给这些源文件确定一个合适的编译顺序。这个跟选修课程的先后顺序一样,是个典型的拓扑排序 问题。拓扑排序针对的是AOV网络,即Activity on Vertex Network,这种模型在有向图中若以顶点表示活 动,有向边表示活动之间的先后关系。下面给出这类问题的一种基于邻接矩阵 的通用算法: 1)用一个矩阵Matrix[N][N]保存结点的前驱关系,即如果i是j的前驱结点,则Matrix[i][j]=1, 否则,Matrix[i][j]=0;(其中i表示行,j表示列) 2) 用一个以为数组into[N]保存每个节点的入度; 3) for i = 1 to N //循环N次 j = 0; while(j < N && into[j] != 0) j++;//寻找入度为0的结点j 输出节点j 将into[j]设为N以免再次输出; for k = 1 to N //遍历矩阵的第j行 if (Matrix[j][k] == 1) into[k]–; 该算法的时间复杂度是O(N^2)。 算法的c++实例源码如下:(VC++6.0编译测试通过)
参考资料 [1]信息技术竞赛辅导,作者不详 [2]百度百科,拓扑排序 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13