我们给出了多图的邻接列表,G =(V,E)并且需要找到O(V + E)算法来计算等效(简单)无向图的邻接列表。
我在另一篇文章中找到了以下解决方案(它是问题部分的一部分因此我的转发):
" [H]获得大小| V |的数组以便在adj [u]中标记至少遇到过一次的顶点,从而防止重复。在遍历每个adj [u]之前重置数组。"
原谅我的无知,但我不确定这是怎么回事(| V | + | E |)。重置长度| V |的成本是多少数组| V |次?
谢谢。
答案 0 :(得分:1)
您不需要实际重置数组。
假设数组存储int。顶点标记为iff mark[u] == v
,其中v
是当前顶点的索引或id。
当您移动到下一个顶点时,v
的值会发生变化,并且数组中的所有条目都将计算为false,而不必更改数组中的值。