鄰接表為啥用邊存儲
發布時間: 2025-05-22 17:14:45
① 在用鄰接表表示圖時,對圖進行深度優先搜索遍歷的演算法的時間復雜度為()
因為當相鄰矩陣的大部分被破壞時,矩陣中的所有元素都需要掃並追蹤到,且元素個數為n^2,自然演算法為O(n^2)。
所以鄰接表只存儲邊或弧,如果掃描鄰接表,當然會得到O(n+e)其中n是頂點的數量,e的邊或弧的數量。
設有n個點,e條邊
鄰接矩陣:矩陣包含n^2個元素,在演算法中共n個頂點,對每個頂點都要遍歷n次,所以時間復雜度為O(n^2)。
鄰接表:包含n個頭結點和e個表結點,演算法中對所有結點都要遍歷一次,所以時間復雜度為O(n+e)順便,對於廣度優先演算法的時間復雜度,也是這樣。
(1)鄰接表為啥用邊存儲擴展閱讀:
鄰接表是圖的最重要的存儲結構之一,描述了圖上的每個點。創建一個容器對於每一個圖的頂點(n頂點n容器)和節點在第i個容器包含所有相鄰頂點的頂點Vi。事實上,我們經常使用的鄰接矩陣是一個鄰接表的邊集不離散化每一個點。
在有向圖中,描述每個點與另一個節點連接的邊(在a點->點B)。
在無向圖中,描述每個點上的所有邊(A點和B點的情況)
鄰接表對應的圖存儲方法稱為邊集表。此方法將所有邊存儲在容器中。
② 用鄰接表存儲圖所用的空間大小與什麼有關
用鄰接表存儲圖所用的空間大小與圖的頂點數和邊數有關。有一個圖有n個頂點和e條邊,則在對應的鄰接表中,表頭向量大小等於頂點數。此圖是無向圖,則每條邊在鄰接表中出現兩次,即需要2e個存儲單元。此圖是有向圖,則每條邊只在鄰接表中出現一次,即需要P個存儲單元。由此可知用鄰接表存儲圖所用的空間大小與圖的頂點數和邊數都有關系。
熱點內容