【发布时间】:2017-12-07 16:30:05
【问题描述】:
我正在寻找一种枚举算法来搜索围绕给定起点“旋转”的 3D 数组。
给定一个大小为NxNxN 的数组a,其中每个N 是2^k,对于某些k,以及该数组中的一个点p。我正在寻找的算法应该执行以下操作:如果a[p] 满足某个谓词,则算法停止并返回p。否则检查下一个点q,其中q 是数组中最接近p 并且尚未访问过的另一个点。如果这也不匹配,则检查下一个q',以此类推,直到在最坏的情况下搜索整个数组。
这里的“最近”是完美的解决方案是点q 与p 的欧几里得距离最小。由于只需要考虑离散点,也许一些聪明的枚举算法 woukd 使这成为可能。但是,如果这变得太复杂,那么最小的曼哈顿距离也可以。如果有几个最近的点,那么接下来应该考虑哪一个都没有关系。
是否已有可用于此任务的算法?
【问题讨论】:
-
您正在混合任务和解决方案。并且您固定的解决方案部分不适合这个问题。谁说过一步一步你会找到最近的“好”细胞?相反,下一个距离层的单元格将大部分被分离。
-
@fafl:我查看了 R-tres,但我不知道如何使用它为给定的
p找到最近的q。 AFAIU,在 R-tree 中搜索决定了某个分支,然后会在该分支中找到最近的点,如果您选择了错误的分支,则不一定是所有分支中的最近点。
标签: algorithm search multidimensional-array