我们在生活中经常会遇到这样的问题,你要从家里去图书馆,去健身房,去公司,那么走哪一条路会最省时间,或者路程最短?你可能会先走xxx路,在转到yyy路,最后转了一圈终于走到了目的地,也可以直接开车上高速然后直达,其实这就是最短路径的问题,哪一条路径可以让你走的路最少,这也是最短路径问题的单源最短路径问题,因为你的起点都固定是从家里出发。
一般情况下的最短路径分为三种:
1> 确定了起点的最短路径问题
2> 确定了终点的最短路径问题,该问题其实也就是确定了起点的最短路径问题的逆问题
3>确定了起点和终点的问题,该问题是上述两个问题的其中一种,即终点由多个变为单纯明确的一个
4>不确定起点和终点的全局最短路径问题,即任意两个地方之间的最短路径
解决上述问题的算法有很多,比如Dijkstra算法, Floyd算法,Bellman_ford 算法,A*算法, SPFA算法等........ 这里我们讲解DIjkstra算法,该算法是解决单源最短路径最常用的算法, 所谓的单源最短路径是指从某一个固定的起点开始到任意一个地方的最短路径。比如你从家里到公司的最短路径,从家里到健身房的最短路径,这些任意可以是任何你想去的地