首页 > 解决方案 > 如何直接找到一个点旁边的所有点?

问题描述

我有一组坐标。我正在寻找一种方法来获取给定坐标的所有周围邻居。我正在寻找它旁边的所有点,这样您就不需要“穿越”另一个点来到达那里。

我最初只用 K-nearest neighbors 尝试了这个,但它给出了每一个最近的点,即使它不是直接在你旁边

一个例子:

如果我有这样的坐标网格:

A
                      E
             C   D
      B
      F

我想要一个结果,如果你是 A,你会返回 B。我不能去 C 或 F,因为 B 在路上

在 B 你返回 A、C 和 F

在 C 你返回 B 和 D

在 D 你返回 C 和 E

在 E 你返回 D

有这样的算法名称吗?还是我可以使用的某种方法?

标签: algorithmcoordinatesdistance

解决方案


首先获取最大坐标位置,例如 (3,4),假设它是 0 索引,然后创建一个大小为 max+1 的 2d 矩阵(网格),在我们的示例中为 (4,5),并填写您的坐标。

要获取特定坐标的邻居,请在所有 4 个方向上移动并获取您在每个方向上找到的第一个邻居。

注意:不要忘记使用默认值初始化您的二维矩阵,它将帮助您找到邻居。


推荐阅读