Advertisement
Guest User

Untitled

a guest
Jun 15th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. package A08_GraphZusammenhängend;
  2.  
  3. import basisAlgorithmen.Graph;
  4. import basisAlgorithmen.WeightedEdge;
  5.  
  6. import java.util.LinkedHashSet;
  7. import java.util.Set;
  8. import java.util.Stack;
  9.  
  10. public class ConnectedComponents {
  11.  
  12. /**
  13. * Retourniert die Anzahl der zusammenhängenden Komponenten eines Graphen
  14. *
  15. * @param g zu prüfender Graph
  16. * @return Anzahl der Komponenten
  17. */
  18. public int getNumberOfComponents(Graph g) {
  19.  
  20. Stack<WeightedEdge> edges = new Stack<WeightedEdge>();
  21. Set<Integer> visited = new LinkedHashSet<Integer>();
  22. int counter = 0;
  23. int startVertex = 0;
  24.  
  25. while (visited.size() <= g.numVertices()) {
  26. while (visited.contains(startVertex)) {
  27. startVertex++;
  28. }
  29. if (startVertex >= g.numVertices())
  30. break;
  31. visited.add(startVertex);
  32. for (WeightedEdge edge : g.getEdges(startVertex)) {
  33. edges.push(edge);
  34. }
  35. while (edges.size() != 0) {
  36. WeightedEdge currentEdge;
  37.  
  38. currentEdge = edges.pop();
  39.  
  40.  
  41. for (WeightedEdge edge : g.getEdges(currentEdge.to_vertex)) {
  42. if (!visited.contains(edge.to_vertex))
  43. edges.push(edge);
  44. }
  45.  
  46. visited.add(currentEdge.from_vertex);
  47. visited.add(currentEdge.to_vertex);
  48. }
  49. counter++;
  50. }
  51. return counter;
  52. }
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement