【发布时间】:2020-05-01 08:08:01
【问题描述】:
我正在寻找一种算法来找到二维点列表中最近的两个点(每个点都有一个 x 和 y 属性)。
一种比蛮力更好的方法是将空间量化为重叠的块(沿着 2D 卷积的线)并蛮力计算每个块内的距离。
也就是说,我认为也许对 kd-trees 或高维索引(例如为创建近似最近邻查找树而生成的排序)了解更多的人可能是解决此问题的更好方法,所以我想问一下:
是否有智能/已知算法可以有效计算(2D)分布中最近的两个点?其他人在这方面可以提供的任何建议都会非常有帮助!
【问题讨论】:
-
对我来说,这看起来像是寻路算法的工作。
-
如果你想找到多个点之间的最短路径(3个或更多)我不认为有一个非常快速的算法,我相信你在谈论Traveling salesman problem
-
谢谢!有没有更聪明的方法可以在线性时间内运行?我觉得量化确实可能是一种非常快速的技术
-
恕我直言,这仅在您的数据没有歪斜并且您可以以某种方式猜测足够的框大小时才有效。首先构建分层索引结构可以为您解决这些问题,但也会花费 O(N log N)