在给定矩阵中查找聚类边界

时间:2016-04-13 18:34:10

标签: matrix data-structures

给定矩阵包含许多聚类。群集由1&#39组成。

例如:

0 1 1 1 0

1 1 1 0 0

0 0 0 1 1

1 1 0 0 1

在此示例中,有3个群集(水平或垂直连接1'

现在假设矩阵大小非常大,并且它包含太多的簇。

现在我的问题是,我想知道所有集群的边界。

例如给定矩阵:

0 0 1 1 0

0 1 1 1 1

0 0 1 1 0

0 0 0 1 0

现在输出应该是粗体位置的坐标:

0 0 1 1 0

0 1 1 1 1

0 0 1 1 0

0 0 0 1 0

考虑到许多此类聚类的矩阵是巨大的,建议找到所有聚类边界的优化方法。

1 个答案:

答案 0 :(得分:0)

只有当1作为其直接邻居之一或者它在矩阵的轮廓上时,A 1才在某个簇的边界上,所以朴素方法将输出1&#的坐标39; s在轮廓上,然后遍历所有其他矩阵单元格并输出满足上述条件的1的坐标。

但是,看起来没有办法优化此算法。

假设我们有一个巨大的矩阵,里面只有一个随机1。没有经过每个单元格就无法找到它。

也没有办法按照它的轮廓跳过同一个群集中的1个 考虑这个例子:

0 0 0 1 1 1 1 1 1 1
0 0 0 1 0 0 0 0 0 1
0 1 1 1 1 1 0 1 0 1
0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 1 1 1 1

一个群集可以很容易地放在另一个群集中,因此无法选择大纲。