圖產生器
不必每次手刻節點。NetworkX 內建經典圖與隨機模型,適合當教材、基準測試,或當還沒有真實資料時的替代品。
確定性的小圖
import networkx as nx
P = nx.path_graph(5) # 0—1—2—3—4
C = nx.cycle_graph(6) # 六邊形
K = nx.complete_graph(4) # 每對節點都有邊
S = nx.star_graph(5) # 中心 0 連到 1..5
G = nx.karate_club_graph() # Zachary 空手道社,社群偵測經典資料
path_graph、cycle_graph 這類函式回傳的是已經建好的 Graph,可直接拿去畫或跑演算法。
三個常用隨機模型
| 模型 | 函式 | 在模擬什麼 |
|---|---|---|
| Erdős–Rényi | erdos_renyi_graph(n, p) |
每對節點以機率 p 連邊 |
| Watts–Strogatz | watts_strogatz_graph(n, k, p) |
小世界:高群聚、短路徑 |
| Barabási–Albert | barabasi_albert_graph(n, m) |
無尺度:少數樞紐度很大 |
ER = nx.erdos_renyi_graph(20, 0.15, seed=1)
WS = nx.watts_strogatz_graph(20, 4, 0.3, seed=1)
BA = nx.barabasi_albert_graph(20, 2, seed=1)
seed= 能讓結果可重現。教學與測試請固定種子。
何時該用產生器
- 講解演算法時,小的
path_graph/karate_club_graph比真實大圖清楚。 - 比較「隨機 vs 小世界 vs 無尺度」的度分布、平均路徑時,用上面三個模型。
- 真實專案仍應讀自己的資料,見 讀寫檔案。