c++ - 首先从 A 点通过最近邻点到达所有剩余点

标签 c++ c algorithm point nearest-neighbor

我在图片中表示了多个点。两个最近点之间的垂直距离(AB 之间,或 BC 之间,或 DE 等之间)是 distance_y .两个最近点之间的水平距离(在 AD 之间,等等)是 distance_x .

假设:

distance_y < distance_x < 2*distance_y

                distance_x
           A <-------------> D <-------------> G
           | 
distance_y |
           | 
           B <-------------> E <-------------> H

           -

           C <-------------> F <-------------> I

我将任意两点之间的距离公式化如下:

Distance(point P1, point P2) = m * distance_x + n * distance_y 

例如,对于点AB , m = 0n = 1;

问题是:从一个点P , 我怎样才能首先通过最近的邻居遍历所有剩余的点(即按照离点 P 的距离的降序排列)?

我不想计算从其他点到 P 的整个距离然后按照与 P 的距离降序对这些点进行排序因为这很耗时。我想搜索可以快速评估邻居位置而无需计算其他点位置的算法。

例如,从点 D , 将有以下几点

E (m= 0, n = 1),
A (m= 1, n = 0),
G (m= 1, n = 0),
F (m =0, n = 2),
B (m= 1, n = 1),
H (m= 1, n = 1),
C (m= 1, n = 2),
I (m= 1, n = 2).

如何确定 m 的顺序和 n搜索最近的邻居?

最佳答案

不确定我是否理解,但看起来像 Dijkstra 算法应用程序: http://en.wikipedia.org/wiki/Dijkstras_algorithm

关于c++ - 首先从 A 点通过最近邻点到达所有剩余点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745802/

相关文章:

c# - 矩形网格中角到角的最短路径

c++ - Eclipse 无法识别 std::stoi

c++ - 通过 CRTP 的基类引用访问派生类的 constexpr 成员变量

这个程序的 Python 内存模型

c - Windows C 运行时库没有像我预期的那样链接?

php - 需要从多组列表中获得最佳总和组合的算法(逻辑)

c++ - 如何在 linux 中将 libcurl 链接到我的 c++ 程序?

c++ - 帮助 WinAPI 工具栏

c - C 中的反向波兰计算器 : isdigit() issues

algorithm - 涉及日志的函数的大O复杂度是多少