假設有2個網頁,並且平均每個網頁具有2個超鏈接。考慮如果在頂點所代表的網頁之間存在超鏈接,那麼每個網頁具有一個頂點和兩個頂點之間的邊的有向圖。使用鄰接矩陣表示圖表需要多少太字節?使用鄰接列表?我的問題是列表和矩陣之間的主要區別是什麼?使用鄰接列表和鄰接矩陣的圖的大小?
1
A
回答
3
要回答你的問題,「矩陣的列表表示和矩陣表示之間的主要區別是什麼?」
A 列表表示通常是一個元組列表,其中列表的每個元素是一個節點,元組是連接到它的節點。說,我們有3個節點A
,B
,C
,所以我們將具有長度3的列表說存在從A
一個節點 - >B
,然後在第A
位置元件,比方說第一個元素,將包含節點B
。假設還有一個從A
- >C
的鏈接,第一個元素將包含B
和C
。鄰接列表所需的總空間是(表示節點的空間)*(邊的數量)。
另一方面,矩陣表示是一個矩陣,通常實現爲一個二維數組,其中每個節點都列在行和列軸上。如果在2個節點之間存在鏈接,則在矩陣中標記該點。例如,如果我們有3個節點A
,B
,C
,我們有一個3x3陣列array
。讓我們把A
=指數0
,B
=指數1
,C
=指數2
,並假設我們有一個鏈接從A
- >B
,然後在1
在array[0][1]
填寫。如果我們的圖表沒有定向,我們還會在array[1][0]
處添加一個1
。所需的總空間是每個鏈接所需空間N^2倍的節點數(可以用1位,0
或1
來完成),因此總數= N^2。
一個列表很適合稀疏圖,因爲它不需要任何額外的存儲空間。也就是說,不存在的鏈接不代表任何事物。相比之下,如果我們的圖表非常密集,則表示更好,因爲每個可能的鏈接僅由1位(0或1)表示。從上面的示例中可以看出,列表表示所需的總空間是的邊數的函數,而矩陣表示的空間是節點數的函數。
現在想想你的具體問題。你會有多少個節點?總邊緣?這看起來稀疏或密集?
相關問題
- 1. 鄰接矩陣vs有向加權圖的鄰接列表
- 2. 鄰接矩陣VS鄰接表排序
- 3. 使用鄰接矩陣或列表的圖的最小尺寸
- 4. 鄰接矩陣
- 5. 鄰接矩陣和鄰接表的時間/空間複雜度
- 6. 的R - 構建鄰接矩陣基於其它鄰接矩陣
- 7. 鄰接矩陣圖實現
- 8. 代表鄰接矩陣/列表
- 9. 社交網絡圖是如何實現的?鄰接列表或鄰接矩陣
- 10. 試圖將鄰接列表轉換爲Python中的鄰接矩陣
- 11. 從列表中鄰接矩陣
- 12. k陣列樹生成鄰接矩陣
- 13. 漸變圖像的鄰接矩陣
- 14. Neo4j中圖的鄰接矩陣
- 15. 圖的鄰接矩陣實現
- 16. matlab將鄰接矩陣轉換爲鄰接表
- 17. 如何從鄰接矩陣建立鄰接表?
- 18. 如何將鄰接列表轉換爲R中的鄰接矩陣?
- 19. 從列表,其中鄰接裝置相等的元素生成鄰接矩陣
- 20. 發現鄰接矩陣
- 21. 鄰接矩陣實現
- 22. 索引鄰接矩陣
- 23. c#鄰接矩陣蠍子
- 24. 從python中的矩陣創建鄰接列表圖表
- 25. 鄰接表和圖
- 26. 得到了使用鄰接矩陣
- 27. 如何使用鄰接矩陣
- 28. 使用鄰接矩陣表示有向圖的Java方法
- 29. 從JUNG圖創建鄰接矩陣
- 30. 鄰接矩陣 - >定向圖 - > DFS
這是功課嗎?你有沒有試圖找出每種方法需要多少存儲空間? – Flexo 2011-02-10 21:47:07