我正在使用DFS在有向图上实现拓扑排序而不修改图。所以我选择了时间测量方法。
IMO,只要布尔标志指示所有顶点开始或完成就足够了。
但是互联网上的所有文本都只是用来衡量时间数,所以我不确定我的意见是对的。 (我是自学者,不擅长算法)我错过了什么吗?或者这仅仅是一个概念性描述?
答案 0 :(得分:0)
使用DFS时,测量此问题的时间复杂度很容易。由于排序实现的时间与DFS相同,时间复杂度为O(V + E),因此总体拓扑排序也为O(V + E),因为它仅向实现中添加了一个堆栈。
拓扑排序图通常使用邻接表实现,这意味着您可以通过在线性时间O(V)中遍历列表来发现每个顶点的邻居。由于这是有向图,因此每个顶点的列表的总大小为其边缘的总数O(E)。由于您同时执行两个过程,因此将获得O(V + E)。
考虑到您现在的时间复杂度为O(V + E),如果可以找到V和E,则可以更准确地测量程序的时间。