在矩阵中查找组大小

时间:2018-04-02 17:30:14

标签: algorithm matrix cluster-computing detection

所以我想知道,是否有一种简单的方法来检测矩阵中相邻相同值的大小?例如,当查看下面0到12之间的值矩阵时: 在[0,4]处的组的大小是14,因为有14个5彼此连接。但是1和4没有连接。

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为你可以先使用呼吸搜索(很好,尝试将矩阵可视化为树)

这是一个伪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个父节点。因此,没有细胞被重复计算。