算法复杂度 {\displaystyle \Theta (|E|+|V|\log |V|)}
记录从某个源到每个其他顶点的最短路径
- 设计两个list, 一个是访问过的节点(mark),一个是未访问过的节点(unmarked vertex)
- 再设计两个list,一个存储最小路径(distTo),一个储存访问的前一个节点
- A -> A 的距离是 0, A 到其他节点的距离是 无穷大
- 检查 A 的未访问的邻居,计算每个邻居到起始点的距离,如果比记录的最短距离小,则更新最小路径和访问的前一个节点
- 访问过的节点增加 A,未访问的节点删除 A, A访问完毕
- 选择记录距离最小的未访问过的节点,重复以上操作,直到 unvisited 节点没有了