在无向简单图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 )答案: (B)
说明:首先,您需要找到每个节点的双胞胎。您可以一次使用级别顺序遍历(即BFS)来执行此操作。 BFS的时间复杂度为Θ(m + n)。
而且,您必须使用链表进行表示,这是多余的空间(但此处的内存大小不受限制)。
最后,设置双指针的时间复杂度为Θ(m + n)。
选项(B)是正确的。
这个问题的测验