成人免费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

2011-06-30 15:09:37

QT 繪制 圖形

2020-11-23 16:57:50

數據泄漏/個人身份信息

2022-01-17 16:58:39

進程調度端口

2020-06-01 08:46:35

機器學習數學Python

2023-05-16 08:35:22

2015-05-05 09:06:59

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

2020-11-25 03:11:17

網絡安全網絡安全技術周刊

2019-10-31 08:36:59

線程內存操作系統

2024-06-04 07:58:31

架構本質微服務

2020-07-23 18:31:55

開源數據庫PostgreSQL

2019-09-09 10:41:24

網絡職業網絡工程師網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产99免费视频 | 日韩在线视频免费观看 | 久久久噜噜噜久久中文字幕色伊伊 | 天天狠狠 | 国产激情片在线观看 | 亚洲精品大片 | 91亚洲国产 | 欧美福利| 亚洲欧美一区二区三区国产精品 | 国产视频一二三区 | 涩爱av一区二区三区 | 成人av免费在线观看 | 国产成人精品一区二区三区 | 美女爽到呻吟久久久久 | 久草视频网站 | 日韩高清av | 国产精品久久久久久亚洲调教 | 日干夜操 | 久久久久久久国产精品视频 | 国产激情一区二区三区 | 天天色天天射天天干 | av毛片 | 久久99精品久久久久久秒播九色 | 一区二区视频 | 日韩在线视频一区二区三区 | 一级大黄色片 | 国产精品无码久久久久 | 亚洲精品日韩精品 | 青青草这里只有精品 | 欧美日韩亚洲二区 | 国产精品久久久久久久岛一牛影视 | 国产清纯白嫩初高生视频在线观看 | 福利av在线 | 91中文字幕在线 | 欧美精品tv | 久久狠狠 | 91精品国产91久久久久福利 | 一区欧美 | 在线高清免费观看视频 | 亚洲精品在线观看网站 | 久久国内精品 |