成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你了解鄰接表和鄰接矩陣嗎?圖的世界從這里開始!

開發
圖的表示是學習圖論的第一步,選對了數據結構,算法才能高效執行。無論是遍歷、最短路徑,還是拓撲排序,理解鄰接表和鄰接矩陣的差異都是基礎能力。?

在算法和數據結構的學習中,圖 是一個比樹更為復雜、但也更貼近實際問題的結構。比如社交網絡、電網布局、地圖導航系統、任務調度等,底層都依賴于圖的結構來建模。

而在正式編寫圖的算法之前,我們必須先搞懂:如何用代碼來表示圖?

一、什么是圖?

圖(Graph)是一種由**節點(頂點)和邊(連接)**組成的結構。每個節點可以和多個節點連接。

圖可以是:

  • 有向圖(邊有方向)
  • 無向圖(邊沒有方向)
  • 帶權圖(邊上有權重,比如距離、成本)

二、圖的兩種常見表示法

在實際應用中,我們常用以下兩種方式來表示圖:

1. 鄰接矩陣(Adjacency Matrix)

鄰接矩陣使用一個 N x N 的二維數組來表示頂點之間的連接關系。

# 頂點列表:0, 1, 2
# 邊:0->1,1->2
graph = [
    [0, 1, 0],  # 0 到 1 有邊
    [0, 0, 1],  # 1 到 2 有邊
    [0, 0, 0]   # 2 沒有出邊
]

每個 graph[i][j] = 1 表示節點 i 指向節點 j。

優缺點:

優點

缺點

查找兩點是否相鄰非常快(O(1))

空間浪費嚴重,尤其是稀疏圖(O(n2))

2. 鄰接表(Adjacency List)

鄰接表使用一個字典(或列表)存儲每個節點的相鄰節點列表,更節省空間。

graph = {
    0: [1],
    1: [2],
    2: []
}

每個 key 表示一個節點,對應的 value 是它指向的節點集合。

優缺點:

優點

缺點

更節省空間,適合稀疏圖(O(n + m))

查找相鄰關系較慢(O(k))

三、使用類封裝圖結構(推薦做法)

在大型項目或算法中,封裝為類能更方便維護:

class Graph:
    def __init__(self, num_nodes):
        self.num_nodes = num_nodes
        self.adj_list = {i: [] for i in range(num_nodes)}

    def add_edge(self, src, dest):
        self.adj_list[src].append(dest)

    def __str__(self):
        return "\n".join(f"{k} -> {v}" for k, v in self.adj_list.items())

# 示例:
g = Graph(3)
g.add_edge(0, 1)
g.add_edge(1, 2)
print(g)

輸出結果:

0 -> [1]
1 -> [2]
2 -> []

四、選用哪種表示方式?

情況

推薦方式

稠密圖(邊接近 n2)

鄰接矩陣

稀疏圖(邊遠少于 n2)

鄰接表

頻繁查是否存在一條邊

鄰接矩陣

節點較多但連接較少(常見場景)

鄰接表

五、小結

圖的表示是學習圖論的第一步,選對了數據結構,算法才能高效執行。無論是遍歷、最短路徑,還是拓撲排序,理解鄰接表和鄰接矩陣的差異都是基礎能力。

責任編輯:趙寧寧 來源: Ssoul肥魚
相關推薦

2023-04-13 08:14:53

數據結構算法存儲

2017-02-08 10:00:29

大數據hadoopHDFS

2009-01-05 10:47:50

2019-06-04 08:09:39

物聯網工程師物聯網IOT

2020-11-23 16:57:50

數據泄漏/個人身份信息

2011-06-30 15:09:37

QT 繪制 圖形

2022-01-17 16:58:39

進程調度端口

2020-06-01 08:46:35

機器學習數學Python

2015-05-05 09:06:59

2023-05-16 08:35:22

2014-04-08 15:52:03

算法碼農

2013-11-01 10:51:10

OSPF鄰居鄰接

2022-03-14 07:53:27

ELTETL大數據

2017-10-25 09:44:06

人工智能布局世界各國

2020-08-21 08:22:24

SpringMVC

2019-10-31 08:36:59

線程內存操作系統

2024-06-04 07:58:31

架構本質微服務

2019-09-09 10:41:24

網絡職業網絡工程師網絡

2020-07-23 18:31:55

開源數據庫PostgreSQL

2020-11-25 03:11:17

網絡安全網絡安全技術周刊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品美女久久久久久免费 | 9191av| 精品一级电影 | 高清一区二区 | 亚洲欧美日韩精品久久亚洲区 | 天堂资源 | 亚洲精品成人av久久 | 欧美日韩在线电影 | 国产激情91久久精品导航 | 亚洲免费网址 | 国产91av视频在线观看 | 综合国产 | 亚洲欧洲成人av每日更新 | 欧美精品国产一区二区 | 一区二区视频 | av大片| 91精品国产一区二区三区动漫 | 日韩字幕一区 | 91不卡| 免费在线观看av | 久草在线 | 亚洲狠狠 | av官网在线 | 国产精品一二区 | 在线播放国产一区二区三区 | 男人天堂色 | 国产1区| 秋霞影院一区二区 | 99这里只有精品视频 | 天天色图 | 午夜成人在线视频 | 国产精品久久久久久福利一牛影视 | 国产分类视频 | 欧美成人一区二区三区片免费 | 一级黄色片在线看 | 久久国产婷婷国产香蕉 | 成人精品免费视频 | 国产精品久久久久久久久久妇女 | 国产又爽又黄的视频 | 欧美一区二区三区在线视频 | 亚洲福利视频一区二区 |