变量'cc'似乎在每次循环迭代matlab上改变大小

时间:2014-02-06 22:37:13

标签: matlab tarjans-algorithm

我有使用Matlab的tarjan程序的这个代码源,当我运行prog时会出现此错误,我该如何修复它

function [C, S, idx, index, index_accessible] = strongconnect(C, G, v, S, idx, index,       index_accessible)
index(v) = idx;
index_accessible(v) = idx;
idx = idx+1;
S = push(S,v); %ajouter le sommet courant à la pile

% Liste les sommets adjacents au sommet courant
n = voisin(G,v);

% Parcours récursif
for i = 1:length(n)
    if(index(n(i)) == 0)
        [C, S, idx, index, index_accessible] = strongconnect(C, G, n(i), S, idx, index,  index_accessible);
        index_accessible(v) = min(index_accessible(v), index_accessible(n(i)));
    elseif (~isempty(find(S == n(i), 1)))
        index_accessible(v) = min(index_accessible(v), index(n(i)));
    end
end

% Le sommet est une racine, on calcule la composante fortement connexe associée
if(index_accessible(v) == index(v))
    cc = []; %composante fortement connexe issue du sommet
    if(~isempty(S))
        [tmp, S] = pop(S);
        cc = [cc tmp];
    end
    while(~isempty(S) && tmp ~= v)
        [tmp, S] = pop(S);
        ***cc*** = [cc tmp];
    end
    if(~isempty(cc))
        % Les composantes connexes n'ont pas toutes
        % la même longueur. On complète donc la ligne
        % avec des 0.
        C = [C ; cc zeros(1,size(G,1) - length(cc))];
    end
end
end

问题在于明星之间的cc

1 个答案:

答案 0 :(得分:0)

代码中没有错误。输入是一个图表矩阵,我使用随机生成的一个:

G=randi(10,20,20)==1;

现在调用函数:

C=tarjan(G);

C的每一行都包含一个组件。

如果这不能回答您的问题,请更新它,包括错误说明和输入数据。