【答案解析】王老师家住在A地,一周内他需要对B、C、D、E、F、G、H七个地方的大学进行访问,A、B、C、D、E、F、G、H这八个地点的位置及每两个地方之间的路径长度(两点之间边上的值表示这两点之间的路径长度),如图所示。
由于从A地到其他各个地方的路径不止一条,为了减少出游的里程数,王老师需要事先计算出最优化路径。所以在访问前,王老师首先需要计算出从他所在的A地(源点)到其他各地方的最短路径(也就是路径长度之和最小),此时,Dijkstra(迪杰斯特拉)算法可以很好地解决这个问题。它的原理是对于源顶点V0,首先选择其直接相邻的顶点中长度最短的顶点Vi,那么根据已知可得,由V0经过Vi到达与Vi直接相邻的顶点Vj的最短距离dist[j]为matrix[V0][j]与dist[i]+matrix[i][j]中的最小值,即dist[j]=min{matrix[V0][j],dist[i]+matrix[i][j]}。