美文网首页
dijkstra算法解析

dijkstra算法解析

作者: 杭州痞老板 | 来源:发表于2018-05-31 09:36 被阅读0次

用一维数组int [] dis 记录V0顶点到各个顶点的最短路径,初始化dis数组后,这个dis数组中储存的每个值都是未定的最短路径值(不知道是不是最短),之后算法的目的是:通过判断和调整dis ,使得最终这个dis数组储存的是V0到每个顶点的确定的最短路径。

判断的依据:在所有未定的最短路径值中,最小未定的最短路径值一定是一个确定的最短路径。

    public static void main(String[] args) {
        int MAX=65536;
        boolean[] isFixed = {true,false,false,false,false,false}; 
// 使用邻接矩阵来存储图
        int[][] weight = {
            {0,7,9,MAX,MAX,14},
            {7,0,10,15,MAX,MAX},
            {9,10,0,11,MAX,2},
            {MAX,15,11,0,6,MAX},
            {MAX,MAX,MAX,6,0,9},
            {14,MAX,2,MAX,9,0}
        };
//初始化最短路径数组
        int dis[] = {0,7,9,MAX,MAX,14};
        
        for(int l1=1;l1<weight.length;l1++) {
            int minWeight=MAX;
            int fixedNode=0;
// 从未定值中找出最小的一个未定值
            for(int l2=0;l2<weight.length;l2++) {
                if(!isFixed[l2]&&minWeight>dis[l2]) {
                    minWeight=dis[l2];
                    fixedNode=l2;
                }
            }
// 最小未定值一定是一个确定的值
            isFixed[fixedNode]=true;
// 对最小未定值连接的边进行松弛操作,更新dis数组
// 在所有剩下的未定值中,只需确保dis数组中下一个最小未定值是正确的即可
            for(int l2=0;l2<weight.length;l2++) {
                if((weight[fixedNode][l2]+dis[fixedNode])<dis[l2]) {
                    dis[l2]=weight[fixedNode][l2]+dis[fixedNode];
                }
            }
        }
// 输出
        for(int l1=0;l1<dis.length;l1++) {
            System.out.println(dis[l1]);
        }
    }


相关文章

  • dijkstra算法解析

    用一维数组int [] dis 记录V0顶点到各个顶点的最短路径,初始化dis数组后,这个dis数组中储存的每个值...

  • 图的最短路径

    Dijkstra算法&Floyd算法 一、Dijkstra算法 Dijkstra算法思想: 只计算v0出发到其他顶...

  • 深入解析Dijkstra's Algorithm ——

    什么是Dijkstra算法? Dijkstra算法是用来寻找最短路径最著名的算法之一。具体来说,Dijkstra算...

  • Dijkstra 算法

    Dijkstra 算法 前言 为了达到任意两结点的最短路径,我们有几种算法可以实现:Dijkstra 算法、Flo...

  • 寻找最短路径

    这方面的经典算法,有Dijkstra算法和Floyd算法。 下面简单说一下基于Dijkstra算法略作小改动的一个...

  • 7.8图的应用:最短路径问题

    最短路径问题:Dijkstra算法 ❖解决带权最短路径问题的经典算法是以发明者命名的“Dijkstra算法”❖这是...

  • 最短路径

    两种最短路径算法:Dijkstra和Bellman 学习资料:《啊哈!算法》 Dijkstra 问题:在一张图中,...

  • 模板

    并查集 拓扑排序 Floyd算法 Dijkstra算法

  • 最短路径解决方法

    Floyd算法;Dijkstra算法;Bellman-Ford算法;动态规划算法

  • 最短路径算法(旅游规划实例java语言)

    Dijkstra算法 简介 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点(不是...

网友评论

      本文标题:dijkstra算法解析

      本文链接:https://www.haomeiwen.com/subject/sllalftx.html