Step-by-step

2021-01-06

2021-01-06  本文已影响0人  预眸丶

迪杰拉斯算法:单源-----[O(n^2)]    全图-----[O(n^3)]

需要构造结点去记录信息:该点下标,起始点到该点花费多少,该点其来源点。通过优先队列排列起始点到其他点的花费,来获得现阶段到该点的最短路径,则为实际的最短路径。通过设置visited标记是否已经找到最短,则在队列中拥有相同下标的点无效。同时用数组记录所有点的father,最后直接通过回溯求得路径。


佛洛依德算法:[O(n^3)]

无需其他内容,直接三层循环,k,i,j arr[i][j] = min(arr[i][j],arr[i][k]+arr[k][j]),来获得最短路径,同时使用arr<string>来获得路径。注意路径重叠处应该消去。

上一篇下一篇

猜你喜欢

热点阅读