import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
2. 求图的拉普拉斯矩阵
# 求图的拉普拉斯矩阵 L = D - Adeflaplacian_matrix(graph):# 求邻接矩阵
A = np.array(nx.adjacency_matrix(graph).todense())
A =-A
for i inrange(len(A)):# 求顶点的度
degree_i = graph.degree(i+1)# 节点编号从1开始,若从0开始,将i+1改为i
A[i][i]= A[i][i]+ degree_i
return A
3. 完整程序
import math
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 构造图defgenerate_graph():
graph = nx.Graph()
graph.add_edge(1,2)
graph.add_edge(2,3)
graph.add_edge(1,4)
graph.add_edge(1,5)
graph.add_edge(2,5)
graph.add_edge(4,5)return graph
# 打印图 输入一个图defprint_graph(graph):
nx.draw(graph, with_labels=True)
plt.show()# 求图的拉普拉斯矩阵 L = D - Adeflaplacian_matrix(graph):# 求邻接矩阵
A = np.array(nx.adjacency_matrix(graph).todense())
A =-A
for i inrange(len(A)):# 求顶点的度
degree_i = graph.degree(i+1)# 节点编号从1开始,若从0开始,将i+1改为i
A[i][i]= A[i][i]+ degree_i
return A
# 主方法if __name__ =="__main__":
graph = generate_graph()
print_graph(graph)print("拉普拉斯矩阵如下所示;")
L_M = laplacian_matrix(graph)print(L_M)
1. 导包import networkx as nximport numpy as npimport matplotlib.pyplot as plt2. 求图的拉普拉斯矩阵# 求图的拉普拉斯矩阵 L = D - Adef laplacian_matrix(graph): # 求邻接矩阵 A = np.array(nx.adjacency_matrix(graph).todense()) A = -A for i in range(len(A)): # 求顶点的度