最佳路径算法dijkstra代码
时间: 2023-11-10 09:49:42 浏览: 40
以下是Dijkstra算法的示例代码:
```java
import java.util.*;
public class DijkstraAlgorithm {
private static final int INFINITY = Integer.MAX_VALUE;
public static int[] dijkstra(int[][] graph, int start) {
int n = graph.length; int[] dist = new int[n];
boolean[] visited = new boolean[n];
Arrays.fill(dist, INFINITY);
dist[start = 0;
for (int i = 0; i < n - 1; i++) {
int minDist = INFINITY;
int minIndex = -1;
for (int j = 0; j < n; j++) {
if (!visited[j && dist[j < minDist) {
minDist = dist[j];
minIndex = j;
}
}
visited[minIndex = true;
for (int j = 0; j < n; j++) {
if (!visited[j && graph[minIndex][j != 0 && dist[minIndex != INFINITY &&
dist[minIndex + graph[minIndex][j < dist[j]) {
dist[j = dist[minIndex + graph[minIndex][j];
}
}
}
return dist;
}
public static void main(String[] args) {
int[][] graph = {
{0, 2, 3, 6, 2048, 2048},
{2, 0, 2048, 1, 2048, 2048},
{3, 2048, 0, 1, 2048, 2048},
{6, 1, 1, 0, 1, 3},
{2048, 2048, 2048, 1, 0, 2},
{2048, 2048, 2048, 3, 2, 0}
};
int start = 0;
int[] shortestDistances = dijkstra(graph, start);
System.out.println("Shortest distances from node " + start + ":");
for (int i = 0; i < shortestDistances.length; i++) {
System.out.println("Node " + i + ": " + shortestDistances[i]);
}
}
}
```
这段代码演示了如何使用Dijkstra算法来求解给定节点到其他节点的最短路径。在这个例子中,我们使用一个邻接矩阵来表示图的结构,其中0表示节点之间没有直接连接。通过调用`dijkstra`函数,可以得到从起始节点到其他节点的最短距离。最终,我们将打印出从起始节点到每个节点的最短距离。
请注意,上述代码仅包含最短距离的计算,如需获得路径信息,您可以在代码中添加一个额外的数组来存储节点的前驱节点,并在计算最短距离的过程中更新该数组。这样,您就可以根据前驱节点数组来获取任意节点的最优路径。