在矩阵中查找组大小
Finding group sizes in matrices
所以我想知道,有没有一种简单的方法可以检测矩阵中相邻相同值的大小?例如,当查看下面 0 到 12 之间的值矩阵时:
[0,4] 处的组大小为 14,因为有 14 个 5 相互连接。但是1和4没有连接。
我认为你可以使用呼吸优先搜索(好吧,尝试将矩阵想象成一棵树)
这是一个伪 python 实现。这样做。这对你有用吗?你有没有考虑到复杂性?
代码
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))
说明
假设您从一个节点开始,您开始分支出之前未访问过的访问节点。你这样做直到你没有遇到相同值的新单元格。由于设置逻辑,每个节点保证只有 1 个父节点。因此没有细胞被重复计算。
所以我想知道,有没有一种简单的方法可以检测矩阵中相邻相同值的大小?例如,当查看下面 0 到 12 之间的值矩阵时: [0,4] 处的组大小为 14,因为有 14 个 5 相互连接。但是1和4没有连接。
我认为你可以使用呼吸优先搜索(好吧,尝试将矩阵想象成一棵树)
这是一个伪 python 实现。这样做。这对你有用吗?你有没有考虑到复杂性?
代码
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))
说明
假设您从一个节点开始,您开始分支出之前未访问过的访问节点。你这样做直到你没有遇到相同值的新单元格。由于设置逻辑,每个节点保证只有 1 个父节点。因此没有细胞被重复计算。