public boolean hasCycles(DirectedGraph<T> graph) { for (Vertex<T> vertex : graph.getVertices()) { if (isCycle(graph, vertex)) { return true; } } return false; }
public boolean hasCycles(DirectedGraph<T> graph) { for (Vertex<T> vertex : graph.getVertices()) { if (isCycle(graph, vertex)) { return true; } } return false; }
public boolean hasCycles(DirectedGraph<T> graph) { for (Vertex<T> vertex : graph.getVertices()) { if (isCycle(graph, vertex)) { return true; } } return false; }
public List<Vertex<T>> sort(DirectedGraph<T> dag) throws CycleException { // perform the sort over the entire graph, calculating roots and references for all children Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<>(); List<Vertex<T>> roots = new ArrayList<>(); // first pass over the graph to collect vertex references and root vertices Set<Vertex<T>> vertices = dag.getVertices(); for (Vertex<T> v : vertices) { int incoming = dag.getIncomingEdges(v).size(); if (incoming == 0) { roots.add(v); } else { AtomicInteger count = new AtomicInteger(); count.set(incoming); vertexMap.put(v, count); } } // perform the sort return sort(dag, vertexMap, roots); }
public List<Vertex<T>> sort(DirectedGraph<T> dag) throws CycleException { // perform the sort over the entire graph, calculating roots and references for all children Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<Vertex<T>, AtomicInteger>(); List<Vertex<T>> roots = new ArrayList<Vertex<T>>(); // first pass over the graph to collect vertex references and root vertices Set<Vertex<T>> vertices = dag.getVertices(); for (Vertex<T> v : vertices) { int incoming = dag.getIncomingEdges(v).size(); if (incoming == 0) { roots.add(v); } else { AtomicInteger count = new AtomicInteger(); count.set(incoming); vertexMap.put(v, count); } } // perform the sort return sort(dag, vertexMap, roots); }
public List<Vertex<T>> sort(DirectedGraph<T> dag) throws CycleException { // perform the sort over the entire graph, calculating roots and references for all children Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<>(); List<Vertex<T>> roots = new ArrayList<>(); // first pass over the graph to collect vertex references and root vertices Set<Vertex<T>> vertices = dag.getVertices(); for (Vertex<T> v : vertices) { int incoming = dag.getIncomingEdges(v).size(); if (incoming == 0) { roots.add(v); } else { AtomicInteger count = new AtomicInteger(); count.set(incoming); vertexMap.put(v, count); } } // perform the sort return sort(dag, vertexMap, roots); }