• Dijkstra算法


    Dijkstra算法是一种单源最短路径搜索算法。

    算法步骤:

    开始的结构我们称为初始节点。Y距离为Y点到初始节点的距离。Dijkstra算法会给定Y距离的初始值。并且一步步的优化他

    1.给定每个节点一个不可靠的值(需要被跟新的。或者可能被跟新的),初始节点为0.其他节点为无穷大。

    2.设置一个数组标志每个节点不可见(除了初始节点)。设置初始节点为当前节点。

    3.考虑当前节点的所有不可见邻节点、并且计算它们的实验值。如果当前节点标志的距离是6,并且有一邻节点B的距离是2,所以距离B(通过A)就是6+2=8.

    如果这个值小于以前记录的不可靠数值。那么就更新他。

    4.当我们考虑了所有该节点的邻节点后。设置当前节点为可见的,重不可见数组中移除。可见节点不会重新计算。

    5.如果目的节点已经可见。或者所有所有不可见节点都为无穷大。算法结束。

    6.选择当前节点不可见的最短的节点。设置为当前节点,重复步骤3.


    看算法比较麻烦不好懂。下面实例分析下,大家就应该懂了。let us go。

    这是我们的有向图。


    算法过程


    第一步:设置不可靠的值。

    s为可见的节点。设置好所有的初始值。因为初始一栏里面最小的是10.所以选择2节点为当前节点。2节点邻节点只有3.10+30 < maxint,更新他。到达第二栏。

    再选择最小的节点是30(当前节点已经在可见里面了,不需要再算)也就是节点4.设置节点4为当前节点。节点4到3为30 + 20 < 50 更新。节点4到5 30 + 60 < 100,更新为90.就这样一直算下去。

    算到最后所有的节点都是可见的就结束。


    实例2:Dijkstra's algorithm runtime 实例3.


    代码就不上了。


  • 相关阅读:
    【Django】Django 定时任务实现(django-crontab+command)
    【Django】Django web项目部署(Nginx+uwsgi)
    【python】pandas & matplotlib 数据处理 绘制曲面图
    Struts2的简单使用
    Servlet,jsp,JSP技术 ,JSP编程
    Servlet、JSP中页面跳转的方式
    html/京东项目/京东网页高仿/js/jq/css/java web/
    Java ResourceBundle类的使用
    sql语句executeQuery和executeUpdate之间的区别
    jdbc/DAO模式
  • 原文地址:https://www.cnblogs.com/xiaokangzi/p/3576150.html
Copyright © 2020-2023  润新知