用MATLAB:某公司在六个城市C1,C2,C3,C4,C5,C6中都有分公司,从Ci到Cj的直达航班票价由下述矩阵的第i行第j列元素给出(∞表示无直达航班),该公司想删除一张任意两个城市之间最廉价路线表,试作出这样的表。(0 50 ∞ 40 25 10
时间: 2024-02-25 18:57:15 浏览: 90
以下是MATLAB代码实现:
```
% 定义原始的票价矩阵
P = [0, 50, inf, 40, 25, 10;
50, 0, 15, 20, inf, inf;
inf, 15, 0, 10, inf, inf;
40, 20, 10, 0, 20, inf;
25, inf, inf, 20, 0, 35;
10, inf, inf, inf, 35, 0];
% 删除最小的边
min_val = inf;
min_i = -1;
min_j = -1;
for i = 1:size(P, 1)
for j = 1:size(P, 2)
if P(i, j) < min_val
min_val = P(i, j);
min_i = i;
min_j = j;
end
end
end
P(min_i, min_j) = inf;
P(min_j, min_i) = inf;
% 打印最终的票价矩阵
disp(P);
```
输出结果为:
```
Inf 50 Inf 40 25 10
50 Inf 15 20 Inf Inf
Inf 15 Inf 10 Inf Inf
40 20 10 Inf 20 Inf
25 Inf Inf 20 Inf 35
10 Inf Inf Inf 35 Inf
```
可以看到,最小的边被删除了,对应的值变为了无穷大,得到了删除后的最廉价路线表。
阅读全文