final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
final Digraph g1 = new Digraph(); g1.addVertex(objects[i]); g1.addEdge(references[i][1], references[i][0]); g1.freeze(); final Digraph g2 = new Digraph(); List<Object> resortedVertexes = g1.idsByDFSFinishTime(false); for (Iterator<Object> it = resortedVertexes.iterator(); it.hasNext();) g2.addVertex(it.next()); g2.addEdge(references[i][0], references[i][1]); g2.freeze(); List<Object> sortedProjectList = g2.idsByDFSFinishTime(true); Object[] orderedNodes = new Object[sortedProjectList.size()]; sortedProjectList.toArray(orderedNodes); Object[][] knots; boolean hasCycles = g2.containsCycles(); if (hasCycles) { List<Object[]> knotList = g2.nonTrivialComponents(); knots = knotList.toArray(new Object[knotList.size()][]); } else {
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }
/** * Freezes this graph. No more vertexes or edges can be added to this * graph after this method is called. Has no effect if the graph is * already frozen. */ public void freeze() { if (!initialized) { initialized = true; // only perform depth-first-search once DFS(); } }