问题如下:流浪者从网格坐标(x,y)开始,并希望到达坐标(0,0)。从每个gridpoint,流浪者可向北走8步或向南走3步或向东走5步或向西走6步(8N/3S/5E/6W)。
如何使用宽度优先搜索找到从(X,Y)到(0,0)的最短路径?
澄清:
发布于 2010-11-27 19:12:17
我将继续回答我自己的问题,以供将来参考。
Psuedocode:
while (true) {
if (destination reached)
break;
addToQueue(go north);
addToQueue(go south);
addToQueue(go east);
addToQueue(go west);
getNextFromQueue;
}还应该注意到,这个应用程序的执行时间增长非常非常快,所以用小的坐标值来测试它。例如,坐标(1,1)提供7级宽度,需要16384次迭代。
发布于 2010-11-21 12:37:42
这个问题的算法是:
对于每个轴,向它迈进,直到你在另一个轴上的位置是0。
伪码:
while (x!=0) {
if (x>0) x-=6;
else x+=5;
}
while (y!=0) {
if (y>0) y-=8;
else y+=3;
}不过,我不明白你为什么要找一条路--没那么复杂。
发布于 2010-11-21 12:47:42
正如“As”所说,没有必要进行搜索,但您的任务需要搜索。
合理的方法是
干杯.
https://stackoverflow.com/questions/4237818
复制相似问题