Premetto che Java non lo tocco da una vita.
Mi trovo alle prese con un grafo, dal quale dati due vertici devo restituire tutti i percorsi esistenti tra questi due.
Nessun problema nel trovare i percorsi, il problema lo sto avendo con la restituzione dei percorsi.
I vertici sono oggetti Vertex<String>
Attualmente la funzione mi stampa semplicemente i percorsi trovati in questo modo
codice:
public void bfs(Graph<String,Integer> g, LinkedList<Vertex<String>> visited, Vertex<String> destination) {
Collection<Vertex<String>> nodes = g.outVertices(visited.getLast()); //nodi raggiungibili da quello dato
// esamina i vertici adiacenti
for (Vertex<String> node : nodes) {
if (visited.contains(node)) {
continue;
}
if (node.equals(destination)) {
visited.add(node);
//stampa i vertici contenuti in visited, sono i vertici appartenenti al percorso
printPath(visited);
visited.removeLast();
break;
}
}
//ricorsione per la BFS
for (Vertex<String> node : nodes) {
if (visited.contains(node) || node.equals(destination)) {
continue;
}
visited.addLast(node);
bfs(g, visited, destination);
visited.removeLast();
}
}
Al posto dell'istruzione printPath(visited) dovrei inserire la variabile visited in una struttura dati da ritornare in seguito.
Un'idea potrebbe essere l'uso di un array, ma non so a priori quanti percorsi verranno trovati.
Cosa potrei usare per raccogliere tutti i percorsi in una variabile da restituire al metodo chiamante?