Python 有没有一种方法可以返回布尔值来查找节点及其组件是否已连接?
所以这是为了理解,我试图编码一种方法来识别哪里有联系,有点像节点的社会。基本上,如果我输入一个矩阵和一个节点,如果给定的节点有已经相关的组件,它将返回True或False 我曾尝试使用while循环来循环访问的集合,但在这个过程中我仍然迷失了方向。就理解而言,我觉得使用for循环更舒服。如果有一种方法可以迭代子矩阵列表,以找到节点之间的关系,这将很容易理解和调整Python 有没有一种方法可以返回布尔值来查找节点及其组件是否已连接?,python,Python,所以这是为了理解,我试图编码一种方法来识别哪里有联系,有点像节点的社会。基本上,如果我输入一个矩阵和一个节点,如果给定的节点有已经相关的组件,它将返回True或False 我曾尝试使用while循环来循环访问的集合,但在这个过程中我仍然迷失了方向。就理解而言,我觉得使用for循环更舒服。如果有一种方法可以迭代子矩阵列表,以找到节点之间的关系,这将很容易理解和调整 def society(graph_matrix, node): for item in (graph_matrix):
def society(graph_matrix, node):
for item in (graph_matrix):
for j in item:
if graph_matrix[item][j] and graph_matrix[item][node] and graph_matrix[j][node] == 1:
return True
return False
gmatrix = [ [0,1,1,1,0],
[1,0,0,1,0],
[1,0,0,0,1],
[1,1,0,0,0],
[0,0,1,0,0] ]
因此,如果我输入(society(gmatrix,0))
,答案应该返回True
,当您查看节点0时,您可以看到它与节点1和节点3的连接,并且节点1与节点3连接,这可以在gmatrix矩阵中观察到。有点像一个由节点组成的社会。我是
但是,
society(gmatrix,2)
应该返回False
,节点2连接到0,而节点4却没有连接到0和4。我认为,将图形设置为矩阵形式会使您的思考变得比需要的更困难。将边缘连接列表转换为连接节点的列表将使事情变得更简单(并且,作为奖励,在society()
返回False
的情况下,减少计算负载,随着节点数量的增加,这一点更为重要):
def到_映射(gmatrix):
返回[[k表示k,v表示枚举(边)中的v]如果v表示gmatrix中的边]
然后你就能做到:
def协会(图形地图,节点):
对于图\映射[节点]中的n:
如果n==节点:
持续
对于图_映射[n]中的nn:
如果nn!=节点和nn!=图\映射[节点]中的n和nn:
返回真值
返回错误
例如:
gmatrix=[[0,1,1,1,0],
[1,0,0,1,0],
[1,0,0,0,1],
[1,1,0,0,0],
[0,0,1,0,0] ]
gmap=到_映射(gmatrix)
印刷(社会(gmap,0))#真实
印刷品(学会(gmap,2))#假
我认为,将图形设置为矩阵形式会使思考变得比实际需要更困难。将边缘连接列表转换为连接节点的列表将使事情变得更简单(并且,作为奖励,在society()
返回False
的情况下,减少计算负载,随着节点数量的增加,这一点更为重要):
def到_映射(gmatrix):
返回[[k表示k,v表示枚举(边)中的v]如果v表示gmatrix中的边]
然后你就能做到:
def协会(图形地图,节点):
对于图\映射[节点]中的n:
如果n==节点:
持续
对于图_映射[n]中的nn:
如果nn!=节点和nn!=图\映射[节点]中的n和nn:
返回真值
返回错误
例如:
gmatrix=[[0,1,1,1,0],
[1,0,0,1,0],
[1,0,0,0,1],
[1,1,0,0,0],
[0,0,1,0,0] ]
gmap=到_映射(gmatrix)
印刷(社会(gmap,0))#真实
印刷品(学会(gmap,2))#假
在您的代码中,用于(图形矩阵)中的项:
,此处项
表示一个数字列表。
您不能使用数字列表作为如下矩阵索引:graph\u matrix[item][node]
据我所知,您想知道三个节点是否相互连接。为此,您可以通过以下方式修改代码:
def society(graph_matrix, node):
for i in range(len(graph_matrix[node])):
for j in range(len(graph_matrix[node])):
if graph_matrix[node][i] and graph_matrix[node][j] and graph_matrix[i][j] == 1:
return True
return False
gmatrix = [ [0,1,1,1,0],
[1,0,0,1,0],
[1,0,0,0,1],
[1,1,0,0,0],
[0,0,1,0,0] ]
print(society(gmatrix, 0));
这里,
len(graph\u matrix[node])
将返回graph\u matrix[node]
的长度,并且范围(len(graph\u matrix[node])
将在代码中从0迭代到length-1,中的项:
,此处项
表示一个数字列表。
您不能使用数字列表作为如下矩阵索引:graph\u matrix[item][node]
据我所知,您想知道三个节点是否相互连接。为此,您可以通过以下方式修改代码:
def society(graph_matrix, node):
for i in range(len(graph_matrix[node])):
for j in range(len(graph_matrix[node])):
if graph_matrix[node][i] and graph_matrix[node][j] and graph_matrix[i][j] == 1:
return True
return False
gmatrix = [ [0,1,1,1,0],
[1,0,0,1,0],
[1,0,0,0,1],
[1,1,0,0,0],
[0,0,1,0,0] ]
print(society(gmatrix, 0));
这里,
len(graph\u matrix[node])
将返回graph\u matrix[node]
的长度,而范围(len(graph\u matrix[node])
将从0迭代到length-1如何找到每个节点之间的连接?如何找到每个节点之间的连接?