PDA

View Full Version : DFS per grafo a matrice di adiacenza


Dhavamba
11-09-2009, 10:25
Ho fatto un grafo che ogni nodo racchiude una stringa ed ora pensavo di usare il DFS per trovare il tragitto di due stringhe..ma non ci riesco, cosa ho sbagliato...ecco qua il codice:

allora la legenda:
GRAFO_M1 è la classe grafo
getNodi() è il metodo che mi dà la lista su cui è appoggiata la classe Grafo
il resto credo che sia capibile...cosa ho mai sbagliato???



class DFS_1 {
protected enum Stato { INESPLORATO, APERTO, CHIUSO }
protected Grafo_M1 g;
protected Stato[] stato;
protected String[] prev;
protected int numero_vertici;
protected String partenza,destinazione;
protected int i;

public DFS_1 (Grafo_M1 g) {
i = 0;
this.g = g;
numero_vertici = g.getNodi().getSize();
stato = new Stato[numero_vertici];
prev = new String[numero_vertici];
}

public String[] visita (String a, String b) {
this.partenza = a;
this.destinazione = b;
for (int i = 0; i < g.getNodi().getSize(); i++) {
stato[i] = Stato.INESPLORATO;
prev[i] = null; }
int i = 0;
return DFSvisit(a);
}

public String[] DFSvisit(String a) {
stato[g.getNodi().Search_Indice(a)] = Stato.APERTO;
prev[i] = g.getNodi().Search_Nodo(a).getInfo();
if (a.equals(destinazione)) return prev;
else {
for (int r = 0; r < numero_vertici; r++) {
System.out.println(prev[i]);
if (stato[i] == Stato.INESPLORATO && g.getMatrice([g.getNodi().Search_Indice(a)][i] != 0) {
String f = g.getNodi().Search(i);
i++;
DFSvisit(f); } } }
return prev;

}
}