1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| function [ nNodes, closed ] = RechercheEnLargeur( NodeList, RootNode, TargetNode )
closed=zeros(1,100);
open=zeros(1,100);
open=[RootNode]; %liste des noeuds à visiter
closed=[RootNode]; %noeuds visités
nNodes=1;%initialisation du nombre de noeuds parcourus
i=1;
while(~isempty(open)) %tant que NodeList n'est pas vide
CurrentNode=open(1);
for j=1:length(NodeList(i).Neigh) % <- erreur apparemment le fait que la taille de j pose problème
if (NodeList(i).Neigh(j)==TargetNode) %<- erreur (je ne la comprends pas du tout celle là)
break;
end
for k=1:length(closed)
if(~(NodeList(i).Neigh(j)==closed(k))) %si un noeud voisin %<- erreur incoherence d'index entre closed et le champ Neigh de la structure NodeList
%ne correspond pas à un élément déjà visité
open(i+1)= NodeList(i).Neigh(j); %ajouter le voisin à open
end
closed(i+1)= CurrentNode;
end
end
open(1)=[]; %on supprime le premier element de open
i=i+1;
nNodes=nNodes+1;
end |
Partager