一般,我們用鄰接矩陣 A 作為圖的中節點和邊關系的數學表達,例如在無權圖中, A_{ij}=1 表示節點 i 和節點 j 存在邊連接,否則 A_{ij}=0 。在無權圖中, A_{ij}in(0,infty] 表示節點 i 和節點 j 存在邊連接,且邊的權重值為 A_{ij} ,否則 A_{ij}=0。下面將詳細介紹五種圖的數學特征,其中 N 表示圖的節點總數, L 表示圖的所有邊的總數, I(·) 表示示性函數。
(1)無向無權圖的數學特征為 A_{ii}=0,A_{ij}=A_{ji},L=frac{1}{2}sum_{i,j=1}^{N}A_{ij} tag1 (2)對於有向無權圖的數學特征為
A_{ii}=0,A_{ij}ne A_{ji},L=frac{1}{2}sum_{i,j=1}^{N}A_{ij} tag2 (3)對於無向加權圖的數學特征為
A_{ii}=0,A_{ij}ne A_{ji},L=frac{1}{2}sum_{i,j=1}^{N}A_{ij} tag3 (4)對於有向無權圖的數學特征為
A_{ii}=0,A_{ij}ne A_{ji},L=frac{1}{2}sum_{i,j=1}^{N}I(A_{ij}ne0) tag4 (5)對於自環無向無權圖的數學特征為A_{ii}ne0,A_{ij}= A_{ji},L=frac{1}{2}sum_{i,j=1}^{N}A_{ij}+sum_{i}^{N}A_{ii} tag5
以下用代碼進行圖的創建和可視化表示。
# 添加無向無權圖圖
import networkx as nx
G = nx.Graph() # 創建圖
G.add_nodes_from([1,2,3,4]) # 添加節點
G.add_edges_from([(1,2),(1,3),(2,3),(2,4)]) # 添加邊
nx.draw(G, node_size=500, with_labels=True)
As = nx.adjacency_matrix(G)
# print(As)
A = As.todense() # 轉換為鄰接矩陣的形式
print(A)
# 添加無向有權圖
G1 = nx.Graph()
G1.add_weighted_edges_from([(0,1,3.0),(1,2,4.0),(0,2,1.2)])
As = nx.adjacency_matrix(G1)
print(As.todense())
# 添加有向無權圖
G2 = nx.DiGraph()
G2.add_nodes_from([1,2,3,4])
G2.add_edges_from([(1,2),(1,3),(2,3),(3,4)])
nx.draw(G2, node_size=700, with_labels=True)
下一篇
dio,就是嚣张傲慢,又玩世不恭的感觉。 源自《JoJo的奇妙冒险》第三部星辰十字军中的反派角色之一的迪奥·布兰度(dio),迪 ...