我正在寻找发现问题的路径。我有一个均匀间隔的节点的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)
而且我认为有更好的解决方法。
任何帮助都会很棒!
答案 0 :(得分:4)
一个简单的选择是将节点本身存储在由节点的x和y坐标索引的二维数组中。这样,你可以通过索引到数组并查看那里的内容,对位于(x,y)位置的节点进行O(1)随机访问。
或者,如果您的节点是稀疏的,则可以考虑将节点存储在由(x,y)位置键入的哈希表中。这也给O(1)随机访问给定位置的节点,并且使用简单的双for循环可以列出所有八个邻居。
希望这有帮助!