在无向简单图 G = (V, E) 的邻接表表示中,每条边 (u, v) 都有两个邻接表条目:u 的邻接表中的 [v] 和 u 的邻接表中的 [u] v. 这些被称为彼此的双胞胎。孪生指针是从邻接表条目到其孪生的指针。如果|E| = m 和 |V | = n,并且内存大小不是约束,在每个邻接表的每个条目中设置孪生指针的最有效算法的时间复杂度是多少?
(A) Θ(n 2 )
(B) Θ(m+n)
(C) Θ(m 2 )
(D) Θ(n 4 )答案:(乙)
说明:首先你需要找到每个节点的孪生。您可以使用一次级别顺序遍历(即 BFS)来完成此操作。 BFS 的时间复杂度是 Θ(m +n)。
而且你必须使用链表来表示这是额外的空间(但内存大小在这里不是限制)。
最后,设置双指针的时间复杂度为 Θ(m + n)。
选项(B)是正确的。
这个问题的测验