Dijkstra迪杰斯特拉算法及C++实现
Dijkstra算法是典型的最短路径路由算法,用来计算一个节点到其他所有节点的最短路径。算法的基本思想和流程是:
1. 初始化出发点到其它各点的距离dist[]以及各点的前一个访问点pre[];
2. for(i=2…n)
{
找出dist[]中未访问过点中的最小值,记录为best;
以dist[best]为基准更新dist[];
更新pre[];
}
从1出发,第一次找到最小点2,更新dist[],然后找到最小点4,以此类推,以当前最小为最优(贪心算法),列出下表:
迭代次数 | s | best | dist[2] | dist[3] | dist[4] | dist[5] |
---|---|---|---|---|---|---|
1(初始化) | {1} | - | 10 | max | 30 | 100 |
2 | {1,2} | 2 | 10 | 60 | 30 | 100 |
3 | {1,2,4} | 4 | 10 | 50 | 30 | 90 |
4 | {1,2,4,3} | 3 | 10 | 50 | 30 | 60 |
5 | {1,2,4,3,5} | 5 | 10 | 50 | 30 | 60 |
具体实现:
#include <iostream>
#include <vector>
const int maxdist = 9999;