在图连通算法中查找邻居节点

时间:2012-02-01 03:28:15

标签: algorithm data-structures graph nodes

我正在寻找发现问题的路径。我有一个均匀间隔的节点的2D网格。我需要一个算法来查找每个节点的所有8个邻居(如果存在),这样我就可以找到所有邻居连接。

我知道如何做的唯一方法就是这样:

for each node
 for every other node
     check position to find if it is neighboring if so add it to the nodes connection list

我担心的是效率很低O(n^2)而且我认为有更好的解决方法。

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:4)

一个简单的选择是将节点本身存储在由节点的x和y坐标索引的二维数组中。这样,你可以通过索引到数组并查看那里的内容,对位于(x,y)位置的节点进行O(1)随机访问。

或者,如果您的节点是稀疏的,则可以考虑将节点存储在由(x,y)位置键入的哈希表中。这也给O(1)随机访问给定位置的节点,并且使用简单的双for循环可以列出所有八个邻居。

希望这有帮助!