源码参见github:https://github.com/silenceMg/multiShortestPath
手绘了半天图实在是没精力对dijkstra做基本介绍了,本文默认大家对dijkstra已经有了基本的了解。然后就是看图说话了:
1.原始的图,圆圈中的数字代表节点编号
2.接下来是多条最短路径dijkstra算法的运行过程图解,圆圈中第一个数字是走到当前节点时花费的cost总和,代码中记为costTillNow,后面括号中的数表示当前节点的所有前向节点(大家比照着上面的原图看,这里因为空间原因不能给每个节点标号了)。绿色多边形表示集合S,绿色多边形之外的节点表示优先队列中的节点,整个dijkstra就是把队列中的节点pop到集合S中的过程。测试用例附在源代码中。