我的 a* 路径查找算法仅适用于某些情况,但我不明白为什么。我的网格中的每个节点都是可步行的,因此理论上每条路径都应该有效。我相信错误在这一行:
PathFindingNode *neighbor = NULL;
if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];
最佳答案
在函数 -(void)addNeighbors:
中,该行
if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];
有错误,因为如果 curNode
位于边界上,它不会将邻居添加到队列中。这样算法永远不会到达四个角的endNode
(即[0,0], [gridX-1,0], [0,gridY-1], [gridX-1,gridY- 1])。
关于ios - A* 仅在某些情况下有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20834482/