signfra ha scritto:
for j6=1:length(nodi_visitati)
%se il nodo non è stato trovato vedo i
%nodi adiacenti e li visito
vertices.conta_righe=vertices.conta_righe+1;
%se il nodo visitato è uguale a vb
display('nodo visitato 1');
display(nodi_visitati(j6));
display(vertices.conta_righe);
if vertices.conta_righe==1
for j=1:length(nodi_visitati)
self.vettore_percorso(vertices.conta_righe,j)=nodi_visitati(j6);
end
end
[n1,m1]=size(self.vettore_percorso);
%possibili sorgenti
conta_edge=0;
%dimensione riga e colonna
for j2=1:m1
%verifico che la sorgente esiste nel
%vettore_percorso
if nodi_visitati(j6)==self.vettore_percorso(n1,j2)
%se esiste prelevo tutte le destinazioni del nodo
if nodi_visitati(j6)~=vb
edges2=ver.connectedEdges(edges,nodi_visitati(j6));
%copio in un vettore in una nuova riga e nella stessa colonna il valore
%della destinazione
end
%tutte le destinazioni le imposto sorgenti
for j8=1:length(edges2)
conta_nodi_sorgenti=conta_nodi_sorgenti+1;
nodi_sorgenti(conta_nodi_sorgenti)=edges2(j8);
end
%copio tutte le destinazioni
for j=1:length(edges2)
if length(edges2)>=2
if vertices.conta_righe==1
conta_edge=conta_edge+1;
vertices.conta_colonne=conta_edge;
end
end
conta_edge=conta_edge+1;
%scorro le righe
for k=1:n1
%copio i valori in una nuova colonna
%dei valori in quanto esisite un
%nuovo percorso
if k==n1
self.vettore_percorso(k,m1+conta_edge)=self.vettore_percorso(n1,j2);
self.vettore_percorso(k+1,j2)=edges2(j);
end
end
end
end
end
end
end
Ho provato con questo con i vettori ma nn ci riesco, qualche suggerimento?
function [vertice,nodi]=DFS_Visit(edges,vertices,self,nodi_visitati,vb,conta_impo_colore,conta_nodo_trovato)
%con un ciclo copio sul vettore nodi_sorgenti tutte le destinazioni
%raggiugibili da dove poi viene passatto come terzo parametro alla chiamata
%DFS_Visit(edges,vertices,self,nodi_visitati,vb,conta_impo_colore,conta_nodo_trovato)
for j6=1:length(nodi_visitati)
vertices.conta_righe=vertices.conta_righe+1;
%copio tutte le possibili destinazioni sul vettore
%percorso solo una volta
display(vertices.conta_righe);
if vertices.conta_righe==1
for j=1:length(nodi_visitati)
self.vettore_percorso(vertices.conta_righe,j)=nodi_visitati(j6);
display(self.vettore_percorso);
end
end
[n1,m1]=size(self.vettore_percorso);
for j2=1:m1
if nodi_visitati(j6)==self.vettore_percorso(n1,j2)
if nodi_visitati(j6)~=vb
%possibili sorgenti
conta_edge=0;
conta_nodi_sorgenti=0;
%dimensione riga e colonna
[n1,m1]=size(self.vettore_percorso);
display(self.vettore_percorso);
%se esiste prelevo tutte le destinazioni del nodo
edges2=ver.connectedEdges(edges,nodi_visitati(j6));
for j8=1:length(edges2)
%contatore nodi sorgenti
conta_nodi_sorgenti=conta_nodi_sorgenti+1;
nodi_sorgenti(conta_nodi_sorgenti)=edges2(j8);
if nodi_sorgenti(conta_nodi_sorgenti)==vb
indice=conta_nodi_sorgenti;
end
%copio in un vettore in una nuova riga e nella stessa colonna il valore
%della destinazione
display('edg');
display(edges2);
end
[n2,m2]=size(self.vettore_percorso);
%copio sul vettore tutti i valori pari a
%valore delle destinazioni nella colonna j2
%trovata da dove risiede la sorgente trovata
if self.vettore_percorso(n1,j2)~=vb
for k=1:n2
for j=1:length(edges2)
self.vettore_percorso(k,m2+j)=self.vettore_percorso(k,j2);
display(self.vettore_percorso);
end
if k==n2
for k3=1:length(edges2)
%copio su tutti
%ivettori le
%destinazioni
%ragggiungibili
%sul vettore
%self.vettore_percorso
self.vettore_percorso(n2+1,m2+k3)=edges2(k3);
end
end
end
end
end
end
end
end
[n,m]=size(self.vettore_percorso);
%chiamata della funzione DFS
for j=1:length(nodi_sorgenti)
if nodi_sorgenti(j)~=vb
self.conta_v=1;
display(conta_visita);
display('nkl');
display(conta_visita);
display(nodi_sorgenti);
else
self.conta_v=0;
end
end
if self.conta_v==0
DFS.DFS_Visit(edges,vertices,self,nodi_sorgenti,vb,conta_impo_colore,0);
end
end
%copio sul vettore tutte i percorsi fino a raggiungere
%la destinazione
[n3,m3]=size(self.vettore_percorso);
for j3=1:m3
if self.vettore_percorso(j4,j3)==vb
conta_nodo_trovato=1;
[n3,m3]=size(self.vettore_percorso);
display('j3');
conta_visita=1;
display(j3);
conta_percorso=conta_percorso+1;
for j7=1:m3
if j7==j3
for j8=1:n3
vettore_nuovo_percorso(conta_percorso,j8)=self.vettore_percorso(j8,j3);
display(vb);
end
end
end
end
end
end
vettore_nuovo_percorso =
1 2 3 4
nodi
nodi =
1 2 3 4
nodi_sorgenti =
1 4
'BLACK'
'BLACK'
'BLACK'
'BLACK'
ans =
1 1 1 1 1 1 1
0 2 3 2 2 2 2
0 0 0 3 4 3 3
0 0 0 0 0 1 4
conta_nodo_trovato =
0
ans =
1 1 1
0 2 3
nodi_sorgenti =
2 3
vettore_nuovo_percorso =
[]
nodi
nodi =
[]
nodi_sorgenti =
2 3
'BLACK'
'BLACK'
'BLACK'
'WHITE'
ans =
1 1 1
0 2 3
nodi =
[]
perchè mi cancalla il vettore?