我有以下用于拓扑排序的伪代码
Repeat:
Find a vertex with no successor
Remove it from graph
Put It at beginning of list
Until graph is empty
我的问题是,是否应将其修改为“找到没有前任的顶点”?
答案 0 :(得分:1)
是的,它应该。后继是没有意义的,除非你在执行拓扑排序之前颠倒所有边缘。
答案 1 :(得分:0)
拓扑排序是一种绘制所有边缘(水平)向前的图的方法。假设您有一个图形G(G应该是DAG),并且想要进行拓扑处理。用于拓扑排序的伪代码: 重复: 查找没有传入边的顶点 删除G中的顶点和边 把它放在列表的开头 直到图形为空
您还可以使用DFS进行拓扑排序。这是在G上运行DFS,每次完成一个顶点时,都会将其标识符插入拓扑排序列表的开头。找到G中的所有顶点后,完成的列表就是拓扑排序。该算法的时间复杂度与DFS相同,后者为(V + E)的大O。