前言
去年大二的时候学习了数据结构和离散数学,记得当时对各种遍历算法、最短路径、排序算法都有一定的掌握,尤其是几种经典的算法都比较熟悉,那时候还没记笔记的习惯,把算法用到具体的编程实战中的机会较少,一直在纸上谈兵。今天学习计算机网络,在通信网络中,路由器与路由器之间最短路径算法,又对这些算法感兴趣了。大二时那种觉悟还没感到数据结构和算法的有用性,(知道有用 但是不知道这么有用),现在遇到的前辈都说,于是从头再过一遍data structure.
还是像往常一样,先从网络上找点这方面的介绍,安逸。
来源于百度百科
算法介绍
迪杰斯特拉(Dijikstra)算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。使用广度优先(BFS)搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。
算法思路
Dijikstra算法其实是贪心策略的一个应用,主要用于解决图中的最短路径问题。
算法是递归得到一个最小生成树,直到找到最终的终点即可。
主要做的事为每次选择最短的邻边进行遍历,判断,加和,递归。
首先从起始点开始,按照一定的时针顺序,遍历其到每一个顶点连线的距离,将这些距离进行排列,然后选出最短的一条,到达对应的顶点,然后接着执行这个顺序,直到到达最终的点即可。