某公司在六个城市c1,c2,…,c6中有分公司,从ci到cj的直接航程票价记在下述矩阵的(i,j)位置上。(∞表示无直接航路),请帮助该公司设计一张城市c1到其它城市间的票价最便宜的路线图。
%% Matlab作无向图
%(1)无权重(每条边的权重默认为1);
% 函数graph(s,t):可在 s 和 t 中的对应节点之间创建边,并生成一个图;
% s 和 t 都必须具有相同的元素数;这些节点必须都是从1开始的正整数,或都是字符串元胞数组。
% 注意:编号应从1开始连续编号,注意:连续编号!(可以尝试一下不连续编号哦~)
s1 = [1,1,1,1,2,2,2,3,3,4,4,5];
t1 = [2,4,5,6,3,4,6,4,5,5,6,6];
G1 = graph(s1, t1);
plot(G1);
% plot(G1,'linewidth',2); %设置线的宽度
% set(gca,'XTick',[],'Ttick',[]); %绘图后不显示坐标
%(2)有权重
% 函数graph(s,t,w):可在 s 和 t 中的对应节点之间以w的权重创建边,并生成一个图
s2 = [1,1,1,1,2,2,2,3,3,4,4,5];
t2 = [2,4,5,6,3,4,6,4,5,5,6,6];
w = [50,40,25,10,15,20,25,10,20,10,25,55];
G2 = graph(s2, t2, w);
plot(G2, 'EdgeLabel', G2.Edges.Weight, 'linewidth', 2);
求第一个城市到其它城市的最短路径的Matlab代码如下: