public List<Vertex<T>> reverseSort(DirectedGraph<T> dag) throws CycleException { List<Vertex<T>> sortSequence = sort(dag); Collections.reverse(sortSequence); return sortSequence; }
public List<Vertex<T>> reverseSort(DirectedGraph<T> dag, Vertex<T> start) throws CycleException { List<Vertex<T>> sorted = sort(dag, start); Collections.reverse(sorted); return sorted; }
public List<Vertex<T>> reverseSort(DirectedGraph<T> dag) throws CycleException { List<Vertex<T>> sortSequence = sort(dag); Collections.reverse(sortSequence); return sortSequence; }
public List<Vertex<T>> reverseSort(DirectedGraph<T> dag, Vertex<T> start) throws CycleException { List<Vertex<T>> sorted = sort(dag, start); Collections.reverse(sorted); return sorted; }
public List<Vertex<T>> reverseSort(DirectedGraph<T> dag) throws CycleException { List<Vertex<T>> sortSequence = sort(dag); Collections.reverse(sortSequence); return sortSequence; }
public List<Vertex<T>> reverseSort(DirectedGraph<T> dag, Vertex<T> start) throws CycleException { List<Vertex<T>> sorted = sort(dag, start); Collections.reverse(sorted); return sorted; }
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<>(); 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, Vertex<T> start) throws CycleException { // perform the sort over the subgraph graph formed from the given vertex, calculating roots and references // for its children DepthFirstTraverser<T> dfs = new DepthFirstTraverserImpl<>(); Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<>(); List<Vertex<T>> vertices = dfs.traverse(dag, start); for (Vertex<T> v : vertices) { List<Vertex<T>> outgoing = dag.getOutgoingAdjacentVertices(v); for (Vertex<T> child : outgoing) { AtomicInteger count = vertexMap.get(child); if (count == null) { count = new AtomicInteger(); vertexMap.put(child, count); } count.incrementAndGet(); } } List<Vertex<T>> roots = new ArrayList<>(); roots.add(start); // perform the sort return sort(dag, vertexMap, roots); }
public List<Vertex<T>> sort(DirectedGraph<T> dag, Vertex<T> start) throws CycleException { // perform the sort over the subgraph graph formed from the given vertex, calculating roots and references // for its children DepthFirstTraverser<T> dfs = new DepthFirstTraverserImpl<T>(); Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<Vertex<T>, AtomicInteger>(); List<Vertex<T>> vertices = dfs.traverse(dag, start); for (Vertex<T> v : vertices) { List<Vertex<T>> outgoing = dag.getOutgoingAdjacentVertices(v); for (Vertex<T> child : outgoing) { AtomicInteger count = vertexMap.get(child); if (count == null) { count = new AtomicInteger(); vertexMap.put(child, count); } count.incrementAndGet(); } } List<Vertex<T>> roots = new ArrayList<Vertex<T>>(); roots.add(start); // perform the sort return sort(dag, vertexMap, roots); }
public List<Vertex<T>> sort(DirectedGraph<T> dag, Vertex<T> start) throws CycleException { // perform the sort over the subgraph graph formed from the given vertex, calculating roots and references // for its children DepthFirstTraverser<T> dfs = new DepthFirstTraverserImpl<>(); Map<Vertex<T>, AtomicInteger> vertexMap = new HashMap<>(); List<Vertex<T>> vertices = dfs.traverse(dag, start); for (Vertex<T> v : vertices) { List<Vertex<T>> outgoing = dag.getOutgoingAdjacentVertices(v); for (Vertex<T> child : outgoing) { AtomicInteger count = vertexMap.get(child); if (count == null) { count = new AtomicInteger(); vertexMap.put(child, count); } count.incrementAndGet(); } } List<Vertex<T>> roots = new ArrayList<>(); roots.add(start); // perform the sort return sort(dag, vertexMap, roots); }