回想一下邻接矩阵会在两个节点相连时给出 1,否则就是 0。我希望计算一个所有节点都处于活跃状态的普通图的矩阵和一个 同一张图 中有一些节点失败的矩阵。
我们考虑一个2x2节点的点阵网络。其邻接矩阵 (A) 如下:
导致这张图的结果如下:
现在,让我们移除节点
这是新的邻接矩阵 (A1) 的样子:
这是我创建2x2网络并生成邻接矩阵的方法:
我们考虑一个2x2节点的点阵网络。其邻接矩阵 (A) 如下:
0 1 1 0
1 0 0 1
1 0 0 1
0 1 1 0
导致这张图的结果如下:
![enter image description here](https://istack.dev59.com/djF3U.webp)
0
:G.remove_node(0)
这是新的邻接矩阵 (A1) 的样子:
0 0 1
0 0 1
1 1 0
现在,这两个矩阵在大小上明显不同。
我的问题:如何确保矩阵A1与矩阵A具有相同的大小?也就是说,如果节点0
不存在,因为它已经失败了,我希望在A1 中对应于0-th
行和列的位置放置一个0
,以使矩阵的大小保持不变。我需要这样做是为了比较和计算的目的。但是为了做到这一点,我认为我需要访问创建邻接矩阵的函数。我能不能用更简单的方法做到这一点?
节点0
失败的示例:
0 0 0 0
0 0 0 1
0 0 0 1
0 1 1 0
这是我创建2x2网络并生成邻接矩阵的方法:
import networkx as nx
N=2
G=nx.grid_2d_graph(N,N)
pos = dict( (n, n) for n in G.nodes() )
labels = dict( ((i,j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=True, node_size = 200)
A=nx.adjacency_matrix(G)
A.toarray()
#G.remove_node(i) to remove node i
pickle
呢?和我三个节点的例子一样,只是没有使用G.remove_node(0)
删除节点,而是基于不同的标准。如果与原始网络相比,我的pickle的邻接矩阵大小较小。你明白我的意思吗? - FaCoffee