Bruder_Jin
2023-07-19
来自广东
【思考题】 (1)弗洛伊德算法 ①是一种动态规划算法,通过比较任意两点之间的距离来不断更新距离矩阵,直到求得任意两点之间的最短路径。 ②具体实现过程中,弗洛伊德算法需要先构建出邻接矩阵表示图的连接情况,然后利用两个循环嵌套的方式,遍历每一个节点,同时更新任意两点之间的距离。 ③该算法的时间复杂度为 O(N^3),适用于较小的图。(N即顶点个数) (2)迪杰斯特拉算法 ①是一种贪心算法,通过从起点开始遍历图中的每个节点,找出距离起点最近的节点,并将其加入到最短路径集合中,然后以该节点为基础,更新起点到其他节点的距离。 ②具体实现过程中,迪杰斯特拉算法需要利用一个距离矩阵和一个 visited 数组来表示节点之间的距离和是否被访问过。 ③该算法的时间复杂度为 O(N^2),适用于较大的图。(N即顶点个数)
1