我有用Matlab的Tarjan程序这个代码源改变大小,这种错误出现时我运行PROG,如何解决它变量“抄送”似乎在每次循环迭代的matlab
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将使代码运行得更快。如果你知道'cc = []'这一行中cc的大小,你可以用'cc = nan(5,1)'这样的东西来初始化cc。这将创建一个大小为5的数组,稍后填充。 – Daniel
我还是一个matlab初学者,我想用matlab的Tarjan算法的源代码,我在这个链接[链接]找到代码[(http://glotin.univ-tln.fr/graphes/graphtook/ tarjan.html),我无法执行代码,我认为问题在于cc,但因为它只是一个警告,所以它不是主要错误。你能告诉我如何运行这些代码行,我输入的命令行和输入是什么结果,非常感谢你 – user3281660
我回滚了问题编辑,因为它删除了所有相关信息这个问题。确保问题依然清晰,即使您已经有了答案。 –