指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”,即Dijkstra算法。
单源什么意思?
- 从一个顶点出发,Dijkstra算法只能求一个顶点到其他点的最短距离而不能任意两点。
Dijkstra算法的标记和结构与prim算法的用法十分相似,它们两者都会从余下顶点的优先队列中选择下一个顶点来构造一颗扩展树。但千万不要把它们混淆了,它们解决的是不同的问题。因此,所操作的优先级也是以不同的方式计算的:Dijkstra算法比较路径的长度,因此必须把边的权重相加,而prim算法则直接比较给定的权重。
Dijkstra在处理具体实例的应用还是很多的,因为具体的问题其实带权更多一些。
比如一个城市有多个乡镇,乡镇可能有道路,也可能没有,整个乡镇联通,如果想计算每个乡镇到a镇的最短路径,那么Dijkstra就派上了用场。
判断一个问题是否适合用Dijkstra算法解决,要看该问题是否满足这个前提
- 一个连通图,若干节点,节点可能有数值,但是
路径
一定有权值
。并且路径不能为负。
如果该问题不满足这个前提