迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。
它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。
图示
算法思路
- 指定一个节点,例如我们要计算 ‘A’ 到其他节点的最短路径;
- 定义两个数组($distance,$previous), distance包含已求出的最短路径点(以及相应的最短长度),previous包含最短顶点的前一个顶点
- 采用优先队列,顶点之间的距离从小到大入队,从小到大出队挨个进行比较;
- 通过前置顶点结果集找出终点对应点的集合;
PHP代码实现
1 | //优先队列 |
运行结果
1 | array(4) { |