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,怎么求最短路径呢?

      看下表:

      

      

      

  • 相关阅读:
    int 和 Integer 有什么区别
    Exception、Error、运行时异常与一般异常有何异同
    Redis存储系统
    MySpring-06.基于XML的IOC的案例
    Spring MVC技术之【上机】
    MySpring-05.基于XML的IOC的案例1
    MySpring-04.Spring的常用注解
    MySpring-03.Spring的 IOC 和 DI
    MySpring-02.程序间耦合
    Spring框架之【上机】
  • 原文地址:https://www.cnblogs.com/wangbaojun/p/11443559.html
Copyright © 2011-2022 走看看