我对 MATLAB 相当陌生,并且有一段代码可以创建距离矩阵。更准确地说,它在无向图上的点之间创建距离矩阵 D,使得 Dij 是该图上点之间的最短路径。这个矩阵显然是对称的(因为图是无向的),下面是我用来创建它的代码片段:
D = zeros(size(data,1));
for i = 1:size(data, 1)
for j = 1:size(data, 1)
[D(i, j), ~, ~] = graphshortestpath(G, i, j, 'Directed', false);
end
end
这显然是非常浪费的,因为我没有利用矩阵的对称性。有什么方法可以只计算矩阵的上三角部分,然后以某种方式将下三角部分“附加”到它,这样我就可以将计算从 n^2 减少到 n^2 / 2?
任何帮助表示赞赏,
杰森