想象一下,我在数组中表示了以下结构:
<小时/>
蓝色细胞代表&#34;边界&#34;红细胞代表结构起源。我有一个函数来计算每个内部单元格(不是边界的单元格)到最近边界和原点的距离。
目前我使用嵌套的for循环执行此操作,该循环基本上测试所有单元格位置到当前位置,并选择距离最小的单元格,也标记为边界单元格。
对于小型数据集,这是可以的,但是当你有大量可能的点来迭代时,这很慢。
我正在寻找一种更快但交易准确性更高的解决方案。目前我能够将确切的最接近的边界单元返回到任何给定的内部单元格,但我只需要近似接近哪个单元格最接近。
阵列中的每个单元格都有以下信息:
注意事项:
我想到的可能的解决方案(但未经测试):
答案 0 :(得分:0)
我假设细胞无关紧要。一切都取决于细胞中的显着点。找到到原点的距离是一次计算,无法改进。所以你的问题减少到:你有红点和白点(坚持你的配色方案),你想找到每个白点最近的蓝点。
这是nearest-neighbor search的版本。有广泛的 关于这个问题的文献,以及近似最近邻搜索等变体。这篇论文可以引导你到其他人:
康纳,迈克尔和Piyush Kumar。 &#34;飞机上的实际最近邻搜索。&#34; SEA 。 2010.(Springer link。)
底线是,通过适当的数据结构,您可以实现 O(log n)每个白点的查询时间,比天真的线性搜索快得多。