算法步骤Floyd算法参考CSDN文章 Dijkstra Floyd 代码12345678910111213141516171819202122232425262728293031% 定义图的边和权重s = [9 9 1 1 3 3 3 2 2 5 5 7 7 8]; % 起始节点编号t = [1 2 2 3 4 6 7 4 5 4 7 6 8 6]; % 终止节点编号w = [4 8 3 8 2 7 4 1 6 6 2 14 10 9]; % 边的权重% 创建一个图形对象 GG = graph(s,t,w);% 绘制图形 G,并将边的权重添加到图形上% G.Edges.Weight 表示图形对象 G 中所有边的权重值,'EdgeLabel' 表示在图形上显示这些权重值plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2)% 隐藏图形的坐标轴set( gca, 'XTick', [], 'YTick', [] );% shortestpath 函数计算从节点 9 到节点 8 的最短路径和路径长度,并将路径和路径长度分别存储在 P 和 d 中[P,d] = shortestpath(G, 9, 8)% 在图形 G 中高亮显示最短路径% highlight 函数高亮图形对象 myplot 中的路径 P,'EdgeColor', 'r' 表示将路径颜色设置为红色。myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2);highlight(myplot, P, 'EdgeColor', 'r')% 计算图形 G 中任意两点之间的最短路径矩阵D = distances(G)% 输出 1 到 2 的最短路径D(1,2)% 输出 9 到 4 的最短路径D(9,4)% 找出图形 G 中距离节点 2 不超过 10 的所有节点[nodeIDs,dist] = nearest(G, 2, 10) 代码输出结果 123P = 1×7 9 1 2 4 3 7 8d = 24 12345678910D = 9×9 0 3 6 4 9 13 10 20 4 3 0 3 1 6 10 7 17 7 6 3 0 2 6 7 4 14 10 4 1 2 0 6 9 6 16 8 9 6 6 6 0 13 2 12 13 13 10 7 9 13 0 11 9 17 10 7 4 6 2 11 0 10 14 20 17 14 16 12 9 10 0 24 4 7 10 8 13 17 14 24 0 1ans = 3 1ans = 8 12345678910111213141516nodeIDs = 7×1 4 1 3 5 7 9 6dist = 7×1 1 3 3 6 7 7 10