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
Al posto dell'istruzione printPath(visited) dovrei inserire la variabile visited in una struttura dati da ritornare in seguito.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(); } }
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?

Rispondi quotando