Algorithm 求矩阵中的群大小
所以我想知道,有没有一种简单的方法来检测矩阵中相邻相同值的大小?例如,当查看以下0到12之间的值矩阵时: [0,4]处的组大小为14,因为有14个5相互连接。但是1和4没有连接Algorithm 求矩阵中的群大小,algorithm,matrix,cluster-computing,detection,Algorithm,Matrix,Cluster Computing,Detection,所以我想知道,有没有一种简单的方法来检测矩阵中相邻相同值的大小?例如,当查看以下0到12之间的值矩阵时: [0,4]处的组大小为14,因为有14个5相互连接。但是1和4没有连接 我认为可以使用呼吸优先搜索(好吧,尝试将矩阵可视化为一棵树) 这里是一个伪python实现。就是这样。这对你有用吗?你心里有复杂的想法吗 代码 解释 假设您从一个节点开始,开始分支出您以前从未访问过的访问节点。这样做直到没有遇到相同值的新单元格。由于设置了逻辑,每个节点保证只有一个父节点。因此,没有单元格被重复计数。那么
我认为可以使用呼吸优先搜索(好吧,尝试将矩阵可视化为一棵树) 这里是一个伪python实现。就是这样。这对你有用吗?你心里有复杂的想法吗 代码 解释
假设您从一个节点开始,开始分支出您以前从未访问过的访问节点。这样做直到没有遇到相同值的新单元格。由于设置了逻辑,每个节点保证只有一个父节点。因此,没有单元格被重复计数。那么平方中的值是不相关的?@Srini我只想在矩阵中找到相同的值,所以如果8和5接触,它们不会一起计数,但只有5和8(应该选择更好的矩阵示例)啊,我知道了。我花了一段时间才注意到所有值都有一个唯一的颜色:)。谢谢你的澄清啊,是的,这很有意义!一定会试试的!
visited_nodes = set()
def find_adjacent_vals(target_val, cell_row, cell_column):
if inside_matrix(cell_row, cell_column)
cell = matrix(cell_row, cell_column)
if cell not in visited_nodes:
visited_nodes.add(cell)
if cell.value == target_val:
return (1 +
find_adjacent_vals(target_val, cell_row + 1, cell_column) # below
+find_adjacent_vals(target_val, cell_row - 1, cell_column) # above
+find_adjacent_vals(target_val, cell_row, cell_column -1) # left
+find_adjacent_vals(target_val, cell_row, cell_column +1) # right
))
print "Adjacent values count: " + str(find_adjacent_vals(target_val, target_row, target_column))