Skip to content

建立 2026-09-14 更新 2026-09-14

圖的基本概念

圖論(graph theory)把「實體」與「關係」抽象成兩種東西:節點(node / vertex)與邊(edge / link)。NetworkX 就是把這套語言變成 Python 物件。

節點與邊

  • 節點:人、城市、網頁、基因……任何你想追蹤的實體。
  • :兩個節點之間的關係,例如朋友、航線、超連結、蛋白質交互作用。

一張圖就是「一組節點」加上「一組已標明的節點對」。

有向或無向

  • 無向圖:邊沒有方向。A 是 B 的朋友,通常也代表 B 是 A 的朋友。
  • 有向圖(directed graph):邊有方向。A 追蹤 B,不代表 B 追蹤 A。網頁連結、引用關係、單向道路都屬這類。

選錯類型,後續的鄰居、出入度、最短路徑都會算錯。

權重與多重邊

  • 權重(weight):邊上的數字,可表示距離、成本、流量、互動次數。許多演算法預設讀取屬性名稱 weight
  • 平行邊(multiedge):同一對節點之間可以有多條邊,例如兩城市之間有多條航線。這時要用 MultiGraph / MultiDiGraph
  • 自環(self-loop):邊連回自己,例如某人轉發自己的貼文。

度(degree)

一個節點的是連到它的邊數。有向圖再拆成:

  • 出度(out-degree):指出去的邊數。
  • 入度(in-degree):指進來的邊數。

度是最便宜、也最常用的「誰比較重要」指標。

路徑與連通

  • 路徑(path):一串不重複的節點,相鄰者有邊相連。
  • 連通(connected):無向圖裡任意兩點都能走到。否則圖會裂成多個連通元件(connected component)。
  • 弱/強連通:有向圖常用「忽略方向後能否走到」(弱)與「順著箭頭能否走到」(強)。

這些詞會在 最短路徑連通性 再展開。

為什麼用 NetworkX

節點可以是字串、數字、甚至自訂物件;邊上可以掛任意 Python 物件。這種彈性讓它很適合教學與中小型分析,也是它成為 Python 圖分析預設入口的原因。