簡體   English   中英

O(| V | + | E |)中鄰接列表的逆

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM