我试图实现一个简单的邻接矩阵,以跟踪无向图中哪些节点连接到哪些节点。但是,我的邻接矩阵通过更改整个列而不是单个单元格来不断搞砸。这是我的代码:
def setup_adj_matrix(size, edges):
# initialize matrix with zeros
adj_matrix = [[0] * size] * size
# edges is a list of tuples, representing 2 nodes connected by an edge
for edge in edges:
v1 = edge[0]
v2 = edge[1]
adj_matrix[v1][v2] = 1
adj_matrix[v2][v1] = 1
for row in adj_matrix:
print row
对于具有3个节点(0,1,2)和边线[[0,1),(0,2),(1,2)]的图,我应该得到
[[0,1,1],
[1,0,1],
[1,1,0]]
但是,我得到全1。有什么想法可能是问题所在吗?
这些列表都是彼此的浅表副本,因此,当您编辑一个列表时,实际上是在编辑每一行。尝试使用以下方法初始化矩阵:
adj_matrix = [[0] * size for i in range(size)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句