鄰接矩陣和鄰接表


示例圖:

鄰接矩陣

實現圖的最簡單的方法之一是使用二維矩陣。在該矩陣實現中,每個行和列表示圖中的頂點。存儲在行 v 和列 w 的交叉點處的單元中的值表示是否存在從頂點 v 到頂點 w 的邊。
當兩個頂點通過邊連接時,我們說它們是相鄰的。
單元格中的值表示從頂點 v 到頂點 w 的邊的權重。

鄰接矩陣的優點是簡單,對於小圖,很容易看到哪些節點連接到其他節點。 然而,注意矩陣中的大多數單元格是空的。 因為大多數單元格是空的,我們說這個矩陣是“稀疏的”。矩陣不是一種非常有效的方式來存儲稀疏數據。
由於圖中每個頂點有一行和一列,填充矩陣所需的邊數為\({\left| V \right|^2}\)​​。 當每個頂點連接到每個其他頂點時,矩陣是滿的。

鄰接表

實現稀疏連接圖的更空間高效的方法是使用鄰接表。在鄰接表實現中,我們保存Graph 對象中的所有頂點的主列表,然后圖中的每個頂點對象維護連接到的其他頂點的列表。
在我們的頂點類的實現中,我們將使用字典而不是列表,其中字典鍵是頂點,值是權重。

鄰接表實現的優點是它允許我們緊湊地表示稀疏圖。 鄰接表還允許我們容易找到直接連接到特定頂點的所有鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM