首页 > 解决方案 > 连接二维矩阵中的孔:

问题描述

我的问题类似于这个关于寻找漏洞的问题

但是,我还想加入孔以形成一个连续的区域。连接两个孔的“桥”的“伸展”应该是最小的。什么是最健壮和最快的算法?

我尝试解决的问题如下:

for each row in matrix :
  for each element in row :
     e = element
     d = a large number
     for each row in matrix :
       for each element in row :
         f = element 
         if ( f != e && f != background && e != background) :
            d_temp = calculate distance between e & f
            if (d_temp < d) :
               d = dtemp;
               mark location of e & f
join the marked locations

很明显,给定大小为 N×M 的矩阵,该算法的复杂度为 O(N²M²)。

有没有更好的办法?谢谢你。

请注意,我希望算法首先是健壮的(即永远不会失败或退化) - 当满足该条件时,我希望它很快。

PS:如果相关的话,我正在使用 D。

标签: algorithmsearchflood-fill

解决方案


推荐阅读