BFS算法并不直接计算最短路径,但是可以修改算法来实现。我们可以通过引入一个队列来记录每个节点的距离,并在遍历每个节点时更新距离。最后,我们可以返回终点节点的距离作为最短路径。
以下是在Java中实现该算法的示例代码:
import java.util.*;
public class BFS {
public int findShortestPath(int[][] graph, int start, int end) {
Queue queue = new LinkedList<>();
boolean[] visited = new boolean[graph.length];
int[] distances = new int[graph.length];
Arrays.fill(distances, -1);
queue.offer(start);
visited[start] = true;
distances[start] = 0;
while (!queue.isEmpty()) {
int current = queue.poll();
for (int neighbor = 0; neighbor < graph.length; neighbor++) {
if (graph[current][neighbor] == 1 && !visited[neighbor]) {
visited[neighbor] = true;
distances[neighbor] = distances[current] + 1;
queue.offer(neighbor);
}
}
}
return distances[end];
}
}
在该示例代码中,我们使用一个邻接矩阵来表示图,其中1表示两个节点之间有一条边。我们还使用一个布尔数组来跟踪是否已访问每个节点,并使用一个距离数组来记录每个节点与起始节点的距离。
最后,我们按照标准的广度优先搜索算法遍历了整个图,并更新了距离数组的值。最后返回终点节点的距离作为最短路径。
请注意,如果某些节点不可达,则距离将保留为-1。