【问题标题】:Can't I use graphshortestpath function at here?我不能在这里使用 graphshortestpath 函数吗?
【发布时间】:2013-10-25 21:28:11
【问题描述】:

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

【问题讨论】:

    标签: matlab graph


    【解决方案1】:

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

    根据documentation,“[第一个参数必须是表示图形的] 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多