Я пытаюсь реализовать поиск глубины в scilab, чтобы найти все пути между двумя узлами.scilab error 21 при поиске глубины поиска
Я получаю сообщение об ошибке: error 21 Invalid index
. Я попытался найти решение здесь и в некоторых других местах, и я не смог его найти.
Мой вопрос: может ли кто-нибудь найти ошибку в моем коде? Или, альтернативно, я неправильно делаю метод, и я должен делать это по-другому. Моя конечная цель заключается в использовании этого метода , чтобы найти все пути между двумя узлами в графике около 1800 узлов.
Мой код:
function [x] = dfs(node)
if node==j then
//print path to file
[nrRows,nrCols]=size(path)
for counter=1:nrCols
mfprintf(o1,'%d ',path(1,counter))
end
mfprintf(o1,'\n')
else
visited(1,node)=1;
path=[path,node]
for nr=1:n
if v(node,nr)==1 then //node en nr zijn neighbours
if visited(1,nr)==0 then
[y]=dfs(nr)
end
visited(1,nr)=0
path(:,$)=[] //verwijder laatste element uit path
end
end //for nr
end
x=1
endfunction
И я называю это так:
n=4;
v=[ 0 1 1 0;
1 0 1 0;
1 1 0 1;
0 0 1 0];
i=1; //starting node
j=3; //end node
visited=zeros(1,n);
path=zeros(1,1);
o1 = mopen('pathsBetweenTwoNodes', 'w');
[a]=dfs(i);
Asides: Я новичок в StackOverflow. Если я делаю что-то против правил или обычаев, пожалуйста, скажите мне, и я сделаю все возможное, чтобы исправить это сейчас или в будущем.
Заранее благодарим за любые советы. Paulien
Быстро попытался воспроизвести вашу ошибку, я увидел, что строка 'visited (1, node) = 1;' делает 'visited' единственным значением. Теперь я должен понять, почему. Vreemd .... – spoorcc