algorithm - 连接二维矩阵中的孔:
问题描述
我的问题类似于这个关于寻找漏洞的问题。
但是,我还想加入孔以形成一个连续的区域。连接两个孔的“桥”的“伸展”应该是最小的。什么是最健壮和最快的算法?
我尝试解决的问题如下:
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。
解决方案
推荐阅读
- php - 试图理解 PDO 和数组
- angular - 在 ionic 应用程序中,我想将存储在 firebase firestore 中的数据显示到应用程序
- activemq-artemis - ActiveMQ Artemis - 地址自动删除
- r - 处理 R 错误:在 rep(value[[k]], length.out = n) 中:尝试复制“closure”类型的对象
- c# - 强制计算 A Duration To Year
- tfs - TFS 升级到 Azure DevOps - TF246017 和其他访问问题
- excel - VBA遍历二维数组的每个非空元素
- angular - 关闭 ngFor 循环中的所有角引导手风琴
- python-3.x - python - 如何通过Python中的Selenium在网页中双击选择文本?(不可用 Xpath、ID 等)
- firefox - SVG元素未在 Firefox、Safari、iOS 上显示