%% 图论 % Dijkstra算法下的解法 c = inf * ones(6,6); %初始赋值矩阵 % 各点之间距离 c(1,2) = 4; c(1,3) = 6; c(2,3) = 5; c(2,4) = 4; c(2,5) = 8; c(2,6) = 9; c(3,5) = 7; c(3,6) = 15; c(4,6) = 5; c(5,6) = 6; % 赋值各个点之间进行循环推到距离计算 for i = 1:6 for j = 1:6 if c(i,j) == inf c(j,i) = c(i,j); end end end for i = 1:6 c(i,j) = 0; end % 算法迭代更新距离 for test = 1:4 % 任意两个节点之间最多经历4个顶点 for i = 1:6 for j = 1:6 for k = 1:6 if c(i,k) + c(k,j) <= c(i,j) c(i,j) = c(i,k) + c(k,j); c(j,i) = c(i,k) + c(k,j); end end end end end c
时间: 2024-04-09 19:31:34 浏览: 71
Dijkstra算法图解1
这是一个使用Dijkstra算法解决图论问题的示例代码。该代码使用一个6x6的矩阵c来表示各个节点之间的距离。初始时,所有节点之间的距离被设置为无穷大。
然后,通过循环遍历矩阵c,将节点i和节点j之间的距离设置为节点j和节点i之间的距离(如果之前未设置过)。
接下来,通过迭代更新距离的方式,计算任意两个节点之间的最短距离。迭代次数为4次,表示最多经过4个顶点。
在每次迭代中,通过三重循环遍历所有节点的组合,如果通过节点k可以缩短节点i和节点j之间的距离,则更新距离矩阵c。
最后,返回计算得到的距离矩阵c,其中c(i,j)表示节点i到节点j的最短距离。
阅读全文