[英]inverse of adjacency list in O(|V | + |E|)
設G =(V,E)是有向圖,以鄰接列表格式給出。 定義有向圖G'=(V,E'),其中邊(u,v)∈E'當且僅當(v,u)∈E(即,G反轉G中每個邊的方向)。 描述在O(| V | + | E |)時間內獲得G'的鄰接列表表示的算法。
是否有一個簡單的方法反轉鄰接列表?
如果它是:
a-> b
b-> de
c-> c
d-> ab
e->
至:
a-> d
b-> ad
c-> c
d-> ab
e-> b
假設您按如下方式迭代圖中所有頂點的鄰接列表。
for each u in V:
for each v in adjacency_list[u]:
reverse_adjacency_list[v].append(u)
使用此方法,您可以遍歷所有| V |的鄰接列表 頂點,它為算法的整體時間復雜度貢獻O(| V |) 。 此外,當您遍歷所有這些鄰接列表時, 您可以有效地遍歷圖中的所有邊 。 換句話說,如果你連接了遍歷的所有鄰接列表,那么結果列表的長度將是| E |。 因此,另一個O(| E |)有助於整體復雜性。
因此,使用這種非常標准的方法時間復雜度將是O(| V | + | E |) ,並且您不需要設計任何特殊方法來實現這種復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.