我有使用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
答案 0 :(得分:0)
代码中没有错误。输入是一个图表矩阵,我使用随机生成的一个:
G=randi(10,20,20)==1;
现在调用函数:
C=tarjan(G);
C的每一行都包含一个组件。
如果这不能回答您的问题,请更新它,包括错误说明和输入数据。