我不能在这里使用graphshortestpath函数吗?

时间:2013-10-25 13:16:41

标签: matlab graph

我想计算图的直径,这意味着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

1 个答案:

答案 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