【算法】 最短路径算法——Dijikstra算法

前言

       去年大二的时候学习了数据结构和离散数学,记得当时对各种遍历算法、最短路径、排序算法都有一定的掌握,尤其是几种经典的算法都比较熟悉,那时候还没记笔记的习惯,把算法用到具体的编程实战中的机会较少,一直在纸上谈兵。今天学习计算机网络,在通信网络中,路由器与路由器之间最短路径算法,又对这些算法感兴趣了。大二时那种觉悟还没感到数据结构和算法的有用性,(知道有用 但是不知道这么有用),现在遇到的前辈都说,于是从头再过一遍data  structure.

还是像往常一样,先从网络上找点这方面的介绍,安逸。

来源于百度百科

算法介绍

迪杰斯特拉(Dijikstra)算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。使用广度优先(BFS)搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。

算法思路

Dijikstra算法其实是贪心策略的一个应用,主要用于解决图中的最短路径问题。

算法是递归得到一个最小生成树,直到找到最终的终点即可。

主要做的事为每次选择最短的邻边进行遍历,判断,加和,递归。

首先从起始点开始,按照一定的时针顺序,遍历其到每一个顶点连线的距离,将这些距离进行列,然后选出最短的一条,到达对应的顶点,然后接着执行这个顺序,直到到达最终的点即可。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值