【发布时间】:2018-06-30 18:13:36
【问题描述】:
想象一下,我在一个数组中表示了以下结构:
蓝色单元格代表“边界”,红色单元格代表结构起源。我有一个函数可以计算每个内部单元格(不是边界的单元格)到其最近边界和原点的距离。
目前我使用嵌套的 for 循环来执行此操作,该循环基本上测试所有单元格位置到我当前位置并选择距离最小的单元格,该单元格也被标记为边界单元格。
对于小型数据集,这没问题,但是当您有大量可能的点要迭代时,这会非常缓慢。
我正在寻找一种更快但更准确的解决方案。目前,我能够将最接近的边界单元返回到任何给定的内部单元,但我只需要一个最接近的单元的近似值。
数组中的每个单元格都已包含以下信息:
- 任意位置(用于距离计算)
- 是一个边界单元
- 邻居列表(共享边的任何单元格)
注意事项:
- 结构不一定符合任何类型的特定多边形形状
- 数组不一定按任何逻辑方式排序
- 阵列是平面的(即 1D)
我想到的可能解决方案(但未经测试):
- A* 方法(因为每个单元都知道它的邻居,所以我可以这样做,但我认为它的性能会比我目前的蛮力方法更差
- 一个优先级队列,从与原点的距离从最小到最大排序(但不确定如何获得近似最近的边界)
【问题讨论】:
-
您需要解释如何定义两个单元格之间的距离。
-
3D 空间中两点之间的欧式距离。虽然我对边界单元本身的返回比它们之间的距离更感兴趣(因为边界单元具有我需要读取的属性)
-
那么每个单元格都有一个区别点,你用它们来确定距离吗?
标签: arrays cell polygon approximation boundary