1. Dijkstra
无图警告
1.1 思路
Dijkstra的来历不必多讲,但是需要知道的,是Dijkstra是一种基于“贪心“的求“单源最短路”算法,和最小生成树中的Prim是类似的。(如果你不知道什么是单源最短路,建议百度一下再来)
粗略来讲,Dijkstra的做法就是:
以起始点为中心向外层层扩展,直到扩展到终点为止 ——百度百科
既然是这样,我们的松弛操作就该登场了
1.2 最短路的灵魂——松弛
何谓松弛?简单讲,一根变成两根,它不就松了吗?也就是说,把一条边用几条比它更短的边来替代,就是松弛了。
于是就出现了诸如这样的代码块:
if(d[i] > d[j] + w[i, j])
{
d[i] = d[j] + w[i, j];
}