private Vertice getVerticeByInitialTime(List<Vertice> vertices, int time) { for (Vertice v : vertices) { if (v.getInitialTime() == time) { return v; } } return null; }
private void dfs() { init(); this.tempo = 0; List<Vertice> vertices = grafo.getVertices(); for (Vertice v : vertices) { if (v.getColor().equals(VerticeColor.WHITE)) { dfsVisit(v); } } }
public List<String> getConnectedComponents() { List<String> connectedComponents = new ArrayList<>(); List<Vertice> vertices = grafo.getVertices(); int currentTime = 1; Vertice initial = getVerticeByInitialTime(vertices, currentTime); while (initial != null) { connectedComponents.add(getConnectedComponent(vertices, initial)); initial = getVerticeByInitialTime(vertices, (initial.getFinalTime() + 1)); } return connectedComponents; }
private String getConnectedComponent(List<Vertice> vertices, Vertice initial) { String result = ""; List<Vertice> listToDelete = new ArrayList<>(); int finalTime = initial.getFinalTime(); for (Vertice v : vertices) { if (v.getFinalTime() <= finalTime) { result += v.getRotulo() + ","; listToDelete.add(v); } } vertices.removeAll(listToDelete); return result; }
private void dfsVisit(Vertice u) { u.setColor(VerticeColor.GREY); this.tempo++; u.setInitialTime(this.tempo); if (u.getAdjacentes() != null) { for (Vertice adjacente : u.getAdjacentes()) { if (adjacente.getColor().equals(VerticeColor.WHITE)) { // TODO Verificar sobre vértices pais adjacente.setFather(u); dfsVisit(adjacente); } } } u.setColor(VerticeColor.BLACK); this.tempo++; u.setFinalTime(this.tempo); outVertices.add(u); }
public void printRoutingVector() { List<Vertice> vertices = grafo.getVertices(); String rotulos = ""; String fathers = ""; String time = ""; String temp = ""; for (Vertice v : vertices) { if (v.getFather() != null) { temp = v.getFather().getRotulo(); } else { temp = " "; } rotulos += v.getRotulo() + " | "; fathers += temp + " | "; time += String.valueOf(v.getInitialTime()) + "/" + String.valueOf(v.getFinalTime()) + " | "; } System.out.println(rotulos); System.out.println(fathers); System.out.println(time); }
private void init() { List<Vertice> vertices = grafo.getVertices(); for (Vertice v : vertices) { v.setColor(VerticeColor.WHITE); } }