• 最短路径——Dijkstra算法


    最短路径——Dijkstra算法

    BFS算法的局限性

    Dijkstra算法

    第一轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=true;

    检查所有邻接自vi的顶点,若其final值为false,则更新dist和path的信息

    第二轮:循环遍历所有结点,找到还没却确定最短路径,且dist最小的顶点vi,令final[i]=ture;

    检查所有邻接自vi的顶点,若其final值为false,则更新dist和path信息

    第三轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=true;

    检查所有邻接自vi的顶点,若其final值为false,则更新dist和path信息

    第四轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=ture;

    Dijkstra算法的时间复杂度

    初始:若从v0开始,令final[0]=ture;dist[0]=0;path[0]=-1.

    ​ 其余顶点final[k]=false;dist[k]=arcs[0] [k];path[k]=(arcs[0] [k]==∞)?-1:0

    n-1轮处理: 循环遍历所有顶点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=ture。并检查所有邻接自vi的顶点,对于邻接自vi的顶点vj,若final[j]==false 且 dist[i]+arcs[i] [j]<dist[j],则令dist[j]=dist[i]+arcs[i] [j];path[j]=i。(注:arcs[i] [j] 表示vi到vj的弧的权值)

    负权值带权图

  • 相关阅读:
    数据类型基本用法二
    数据类型基本用法一
    循环
    python数据类型简介
    语言发展与python
    LeetCode429-N叉树的层次遍历(队列)
    实验室做过的东西
    使用ajax处理表单提交信息
    LeetCode415-字符串相机(水题)
    《UML大战需求分析》-读后感一
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13213483.html
Copyright © 2020-2023  润新知