一.简介
迪克斯特拉算法又名Dijkstra算法(属于贪心算法)。Dijkstra算法是从一节点到其余各节点最短路径计算方法。
迪杰斯特拉算法以起始点为中心向外层层扩展,直到扩展到终点为止。
算法思想:
1.设S集合表示开始节点到其余节点的最短路径,U集合表示还未加入S集合的开始节点到其余各节点的距离(没有与开始节点直接连通的节点表示为无穷大),初始时S集合只有开始节点一个,其自身到自身距离设为0
2.设L(s,u)表示开始节点s到节点u的最短路径,从U集合选择离开始节点s最短的一个节点加入S集合,并更新U集合中开始节点到其余节点的路径min(L(s,u),L(s,k)+L(k,u))
二.实现
package com.vincent;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
char[] datas = {
'a','b','c','d','e','f'};
int[][] graph = new int[datas.length][];
final int M = Integer.MAX_VALUE;
//M表示节点之间没有直接连通
graph[0] = new int[]{