zoukankan      html  css  js  c++  java
  • Dijkstra(迪杰斯特拉)算法

    Dijkstra是什么算法

      Dijkstra是典型最短路径算法,用于计算一个节点到其他节点的最短路径。该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点。

    什么是最短路径问题

       给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。

    Dijkstra的原理

       (1)初始化时,S只含有源节点;
        (2)从U中选取一个距离v最小的顶点k加入S中(该选定的距离就是v到k的最短路径长度);
        (3)以k为新考虑的中间点,修改U中各顶点的距离;若从源节点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值是顶点k的距离加上k到u的距离;
        (4)重复步骤(2)和(3),直到所有顶点都包含在S中。
        具体图例与算法执行步骤:(就从A开始,到各节点的最短路径)。

    Dijkstra的应用场景

      在OSI七层网络模型中第三层是网络层, 网络层的典型路由协议就有OSPF(Open Shortest Path First开放式最短路径优先)协议, 是对链路状态路由协议的一种实现, 而OSPF使用的就是Dijkstra算法

    Dijkstra问题模型示意图

      

        

      上图就是一个带权的有向图  我们如果要求从V0到V6,怎么求最短路径呢?

      看下表:

      

      

      

  • 相关阅读:
    java第四次作业
    JAVA第三次作业
    Java第二次作业
    Java第一次作业
    android studio下载
    Android面试常问到的知识点
    [Java基础]List,Map集合总结
    搞ACM的你伤不起[转自RoBa]------(看一次,笑一次)
    06.5.1.Functions
    05.virsh命令的常用操作(kvm)
  • 原文地址:https://www.cnblogs.com/wangbaojun/p/11443559.html
Copyright © 2011-2022 走看看