我想从宽度优先搜索构建最短路径。我已经在Java代码中实现了BFS(如下所示),但是现在我不知道如何重建路径以获得实现代码的最短路径。BFS重建路径以获得最短路径
虽然我知道我必须保留一组父母,但我不知道把它放在我的代码中。基本上,我想从起点到目标点使用BFS追溯最短路径。请注意,我正在使用二维数组。
我做得对吗?有人可以帮助我吗?
public ArrayList<Point> shortestPath=new ArrayList<>();
public ArrayList<Point> BFS(Point start, Point end){
int[][] distanceBoard=new int[50][50]; Point current,parent;
for(int i=0;i<distanceBoard.length;i++)
for(int j=0;j<distanceBoard.length;j++) distanceBoard[i][j]=Integer.MAX_VALUE;
distanceBoard[start.getX()][start.getY()]=0;
LinkedList<Point> q=new LinkedList<>();
q.addFirst(start);
while(!q.isEmpty()){
current=q.getFirst();
if((new Point(current.getX(),current.getY()))==end) return shortestPath;
q.removeFirst();
for(Point point:current.getNeighbours()){
if(distanceBoard[point.getX()][point.getY()]==Integer.MAX_VALUE){
distanceBoard[point.getX()][point.getY()]=distanceBoard[current.getX()][current.getY()]+1;
parent=current;
q.addLast(point);
}
shortestPath.add(current);
}
}return null;
}
有点困惑,我这样做在相同的功能或在一个新的功能? – Amine
我编辑的帖子... while循环之后的相同函数 –