在下表中,左列包含标准图形算法的名称,右列包含算法的时间复杂度。将每种算法与其时间复杂度进行匹配。
1. Bellman-Ford algorithm 2. Kruskal’s algorithm 3. Floyd-Warshall algorithm 4. Topological sorting |
A : O ( m log n) B : O (n3) C : O (nm) D : O (n + m) |
(A) 1→C,2→A,3→B,4→D
(B) 1→B,2→D,3→C,4→A
(C) 1→C,2→D,3→A,4→B
(D) 1→B,2→A,3→C,4→D答案: (A)
解释:
- Bellman-Ford算法:时间复杂度:O(VE)
- Kruskal算法:时间复杂度: O(ElogE)或O(ElogV)。边缘排序需要O(ELogE)时间。排序后,我们遍历所有边缘并应用find-union算法。查找和联合操作最多需要O(LogV)时间。因此,总体复杂度为O(ELogE + ELogV)时间。 E的值最大为V ^ 2,因此O(LogV)等于O(LogE)。因此,整体时间复杂度为O(ElogE)或O(ElogV)
- Floyd-Warshall算法:时间复杂度:O(V ^ 3)
- 拓扑排序:时间复杂度:上面的算法只是带有额外堆栈的DFS。因此,时间复杂度与DFS相同,即O(V + E)。
这个问题的测验