0

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

1 回答 1

1

我还没有测试过这个(我这里没有 MATLAB),但是如何制作cm sparse,并将其用作 的输入graphshortestpath

根据文档,“[第一个参数必须是表示图的] N×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
于 2013-10-25T13:20:16.683 回答