我想计算图的直径,这意味着G的任意两个顶点之间的最大距离。
cm是图的连通矩阵,图的直径应该是变量a。 但MATLAB给了我一些错误信息'输入参数应该是一个稀疏数组。'
我不能使用graphshortestpath函数来计算直径吗?那我该怎么做呢?
cm = [0,1,1,1,0;1,0,0,1,0;0,1,0,0,0;1,0,0,0,0;0,0,0,0,0];
bg = biograph(cm);
a = 1;
for i = 1:4
for j = (i+1):5
[dist,path,pred] = graphshortestpath(bg,i,j)
if a<=dist
a = dist
end
end
end
答案 0 :(得分:1)
我没有测试过这个(我这里没有MATLAB),但是如何制作cm
sparse,并将其用作graphshortestpath
的输入?
根据documentation,“[第一个参数必须是] N-by-N稀疏矩阵表示图形。矩阵G中的非零项表示边缘的权重。”因此,你不应该使用传记作为输入。
查看文档中的第一个示例,它解释得非常好!
cm_full = [0,1,1,1,0;1,0,0,1,0;0,1,0,0,0;1,0,0,0,0;0,0,0,0,0];
cm = sparse(cm_full);
bg = biograph(cm);
a = 1;
for i = 1:4
for j = (i+1):5
[dist,path,pred] = graphshortestpath(cm,i,j)
if a<=dist
a = dist
end
end
end
end