A *仅适用于某些情况

时间:2013-12-30 06:28:29

标签: ios objective-c path-finding shortest-path a-star

我的*路径查找算法仅适用于某些情况,但我不明白为什么。我的网格中的每个节点都是可以步行的,所以理论上每个路径都应该有效我相信错误就在这一行:

 PathFindingNode *neighbor = NULL;
            if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
             neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];

1 个答案:

答案 0 :(得分:2)

在功能-(void)addNeighbors:中,行

if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
    neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];

有bug,因为如果curNode在边界上,它不会在队列中添加邻居。因此算法永远不会在四个角落到endNode(即[0,0],[gridX-1,0],[0,gridY-1],[gridX-1,gridY-1])