Advertisement
heavenriver

2011_11_11.java (ex. 3)

Jan 10th, 2013
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.03 KB | None | 0 0
  1. // Esame dell'11 novembre 2011, esercizio 3
  2. // Ricordarsi di specificare sempre, nei commenti al codice, l'utilità di ogni metodo.
  3. // Per le implementazioni standard di un grafo riferirsi a GraphImplementations.java
  4.  
  5. class Graph has Vertex root;
  6.  
  7. public int pruneUnreachable()
  8.     {
  9.     HashSet<Vertex> visited = new HashSet<Vertex>();
  10.     DFSRemoval(root, visited); // Questa implementazione prevede che esista una variabile d'istanza Vertex<V> root, che è il q0 dell'ASF
  11.     int previousSize = vertices.size();
  12.     for(Vertex v : vertices)
  13.         {
  14.         if(!visited.contains(v))
  15.             vertices.remove(v); // Se v non appartiene a visited ma si trova in vertices, ossia è irraggiungibile, viene rimosso
  16.         }
  17.     return previousSize - visited.size(); // La differenza tra la size() di vertices e di visited da' il numero degli stati (vertici) rimossi
  18.     }
  19.  
  20. public void DFSRemoval(Vertex v, HashSet<Vertex> visited)
  21.     {
  22.     visited.put(v);
  23.     for(Edge e : incidentEdges(v))
  24.         {
  25.         Vertex w = opposite(e, v);
  26.         if(!visited.contains(v))
  27.             DFSRemoval(w, visited);
  28.         }
  29.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement