Allora, provo con questa domanda. Ho un digrafo (la sua implementazione è in 1 altra discussione che ho aperto a cui nessuno ha risposto, si chiama Algoritmo digrafo o qualcosa di simile).
Devo fare questo:
Dato il grafo,un nodo sorgente ed un int x, resituire la Set<Integer> di nodi raggiungibili dal
nodo sorgente attraversando al massimo x archi. Consigli?
Il mio primo approccio (che non funziona granché) è questo:
codice:public Set<Integer> maxHops(Graph g, int source, int max) { List<Edge5R> e_visited = new ArrayList<Edge5R>(); List<Integer> v_visited = new ArrayList<Edge5R>(); Set<Integer> ris = new HashSet<Integer>(); dfs(g,source,max,e_visited,v_visited,ris,0); return ris; } public void dfs(Graph g, int source, int max, List<Edge5R> e_visited, List<Integer> v_visited, Set<Integer> ris, int cont) { v_visited.add(source); if(cont <= max) { if(!ris.contains(source)) { ris.add(source); } } for(Edge5R edge : Graph.outEdges(source)) { if(!e_visited.contains(edge)) { Integer w = edge.getDestination(); if(!v_visited.contains(w)) { e_visited.add(edge); dfs(g,w,max,e_visited,v_visited,ris,cont++); } } } }

Rispondi quotando