我正在使用DFS在不修改图形的情况下对有向图进行拓扑排序。所以我选择了一种时间测量方法。
在我看来,仅仅用布尔标志来表示所有顶点的开始或结束就足够了。
但是互联网上所有的文本都说要测量时间数字,所以我不确定我的观点是否正确。(我是自学者,不擅长算法)我错过了什么吗?还是这只是一个概念描述?
当使用DFS时,测量这个问题的时间复杂度是容易的。由于排序实现了与DFS相同的搜索,DFS的时间复杂度是O(V E ),所以整体拓扑排序也是O(V E ),因为它只在实现中添加了一个栈。
拓扑排序图通常使用邻接列表来实现,这意味着您可以通过线性时间遍历列表一次来发现每个顶点的邻居,O(V)。由于这是一个有向图,因此每个顶点列表的总和就是它的总边数O(E)。由于您执行这两个过程,您将得到O(V E)。
考虑到你的时间复杂度现在是O(V E ),如果你能找到你的V和E,你就能更精确地测量你程序的时间。