Ios A*仅在某些情况下有效

Ios A*仅在某些情况下有效,ios,objective-c,path-finding,shortest-path,a-star,Ios,Objective C,Path Finding,Shortest Path,A Star,我的a*路径查找算法只适用于某些情况,但我不明白为什么。我的网格中的每个节点都是可行走的,因此理论上每条路径都应该有效。我认为错误在于这一行: PathFindingNode *neighbor = NULL; if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1)) neighbor = [[grid object

我的a*路径查找算法只适用于某些情况,但我不明白为什么。我的网格中的每个节点都是可行走的,因此理论上每条路径都应该有效。我认为错误在于这一行:

 PathFindingNode *neighbor = NULL;
            if ((y > 0 && x > 0) && (y < gridY - 1 && x < gridX - 1))
             neighbor = [[grid objectAtIndex:x + dx] objectAtIndex:y +dy];
PathFindingNode*邻居=NULL;
如果((y>0&&x>0)和((y
在函数
-(void)addneighbories:
中,行

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

存在错误,因为如果
curNode
位于边界上,它不会将邻居添加到队列中。这样算法就永远不会到达四个角的
endNode
(即[0,0],[gridX-1,0],[0,gridY-1],[gridX-1,gridY-1])。

谢谢你指出这一点,如果可以,我会投你一票,但我没有足够的声誉。这是你在晚上盯着某物看了6个小时后错过的那些虫子之一!对于那些感兴趣的人,我将我的节点邻居存储在node类本身中,因此当我检查邻居时,我不需要使用double For循环,我只需要在给定的nodes-neights数组中循环。再次感谢你,伙计!