ehehhe esattamente....solo qui possiamo fare certi es!!
allora io praticamente dato un grafo, che ho poi rappresentato con matrice; devo controllare che da un dato inizio si possa raggiungere ad una data fine... ES da A voglio raggiungere E.
Se ad es ho questi collegamenti ab, ac, bc, cd, de allora tutto funziona ma se per caso analizzando il primo percorso possibile(cioè passando da b) e supponendo che b non fosse collegato a nulla devo fare in modo che il mio algoritmo torni ad analizzare il secondo percorso disponibile(cioe passando da c).
ora io sono riuscita a risolvere il caso in cui da A passando dal primo collegamento possa raggiungere il verticeE, facendo alcuni controlli...
ora pero nn riesco a capire come fare ad analizzare tutta la mia colonna,perchè ad ora appena trova un primo valore l'algoritmo scorre perdendo gli eventuali nodi successivi(ad es se da A posso raggiungere sia D che E lui si ferma a D e non mi dice che il percorso è gia possibile da li...
)
forse son stato un po lungo...spero hai capito cosa voglio dire...comunque ecco il mio codice:
{
public static void main(String[] args)
{
int grafo[][] = new int [5][5];
grafo[0][0]=0;//riga A
grafo[0][1]=1;
grafo[0][2]=1;
grafo[0][3]=0;
grafo[0][4]=0;
grafo[1][0]=0;//riga B
grafo[1][1]=0;
grafo[1][2]=1;
grafo[1][3]=0;
grafo[1][4]=0;
grafo[2][0]=0;//riga C
grafo[2][1]=0;
grafo[2][2]=0;
grafo[2][3]=1;
grafo[2][4]=1;
grafo[3][0]=0;//riga D
grafo[3][1]=0;
grafo[3][2]=0;
grafo[3][3]=0;
grafo[3][4]=1;
grafo[4][0]=0;//riga E
grafo[4][1]=0;
grafo[4][2]=0;
grafo[4][3]=0;
grafo[4][4]=0;
/* stampa la matrice */
for(int i=0; i<=4; i=i+1)
{
for(int j=0; j<=4; j=j+1)
{
if( grafo[i][j]==0 )
{
System.out.print("[ ]");
}
else
{
System.out.print("[*]");
}
}
System.out.println("");
}
scegliNodo(0,4, grafo);
}
public static void scegliNodo (int inizio,int fine, int grafo[][])
{
int posizioni_nodo[] = new int[25];
int ind_posizioni = 0;
int inizio_utente=inizio;
boolean trovato=false;
int contatore=5;
for(; inizio<5; inizio++){
for(int j=0; j<5; j=j+1)
{
if( grafo[inizio][j] == 1)
{
System.out.println("Nella riga "+inizio+" ho trovato un nodo in posizione:");
System.out.println(+j);
contatore--;
if(ind_posizioni<25)
{
posizioni_nodo [ind_posizioni] = j;
ind_posizioni++;
}
//System.out.println("inizio " + ind_posizioni);
if(j==fine && posizioni_nodo [inizio]==fine )
{
System.out.println("Dal nodo "+inizio_utente+" e' raggiungibile il nodo "+fine);
trovato=true;
break;
}
inizio=j;
if (contatore==5)
{
break;
}
}
}//chiudo for interno
}//chiudo for esterno
} //chiudo funzione sceglinodo
} //chiudo il main
grazie mille

Rispondi quotando