public int outgoingSize(Object vertex) { return digraph.incomingSize(vertex); }
public IndegreeTopologicalSort(Digraph digraph) { this.digraph = digraph; for (Iterator i = digraph.vertexIterator(); i.hasNext();) { Object vertex = i.next(); vertices.add(vertex); inDegrees.put(vertex, new InDegree(digraph.incomingSize(vertex))); } current = vertices.listIterator(); }
public static Map shiftLevelsDown(Map vertexLevelMap, Digraph digraph) { for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) { Object rootCandidate = i.next(); if (digraph.incomingSize(rootCandidate) == 0) shiftLevelsDown(vertexLevelMap, digraph, rootCandidate); } return vertexLevelMap; }
public static Map computeLevels(Map vertexLevelMap, Digraph digraph, boolean longest) { if (vertexLevelMap == null) vertexLevelMap = new HashMap(digraph.order()); for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) { Object rootCandidate = i.next(); if (digraph.incomingSize(rootCandidate) == 0) computeLevels(vertexLevelMap, digraph, rootCandidate, longest); } return vertexLevelMap; }
public static boolean isTree(Digraph digraph) { Object root = null; for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) { Object vertex = i.next(); int inSize = digraph.incomingSize(vertex); if (inSize == 0) { root = vertex; break; } } //not a tree - no vertex with 0 in-degree if (root == null) return false; //try to reach all vertices from the root candidate BreadthFirstSearch traversal = new BreadthFirstSearch(digraph, root); while (traversal.isValidTree() && traversal.hasNext()) traversal.next(); //not a tree - one of vertices has been seen more than once by the BFS if (!traversal.isValidTree()) return false; //has every vertex been reached? Set seenVertices = traversal.getSeenVertices(); for (Iterator i = digraph.vertexIterator(); i.hasNext(); ) if (!seenVertices.contains(i.next())) return false; //all tests are passed - good! return true; }
private void minimizeDistancesToBarycentres() { // set center x, priorities for (int i = 0; i < levels.length; i++) { double previousCenterX = areaBounds.getMinX() - horizontalSpacing; double previousWidth = 0; for (int j = 0; j < levels[i].length; j++) { VertexWrapper box = levels[i][j]; // init x coordinate of box center box.setCenterX(previousCenterX + horizontalSpacing + (previousWidth + box.getWidth()) / 2); previousCenterX = box.getCenterX(); previousWidth = box.getWidth(); // set upper/lower priority box.setUpperConnectivity(wrapperDigraph.incomingSize(box)); box.setLowerConnectivity(wrapperDigraph.outgoingSize(box)); } } int passCount = Math.min(adjustingPassCount, levels.length - 1); for (int pass = 0; pass < adjustingPassCount; pass++) { // move down adjustMovingDown(pass + 1); // move up // if (pass != adjustingPassCount - 1) adjustMovingUp(levels.length - 2); } }
Object vertex = i.next(); vertexShapeMap.put(vertex, shapePattern.clone()); if (root == null && digraph.incomingSize(vertex) == 0) root = vertex;
if (wrapper == null) { wrapper = new LayerVertex( vertex, digraph.incomingSize(vertex), digraph.outgoingSize(vertex)); if (vertexShape != null) wrapper.setGeometry(vertexShape); if (dstWrapper == null) { dstWrapper = new LayerVertex( dst, digraph.incomingSize(dst), digraph.outgoingSize(dst)); if (vertexShape != null) dstWrapper.setGeometry(vertexShape);
private Table generateTable(Integer vertex, Digraph graph) { Table table = new Table(catalog, schemaName, "TABLE" + vertex); int outSize = graph.outgoingSize(vertex); int inSize = graph.incomingSize(vertex); if (outSize != 0 || (outSize == 0 && inSize == 0)) { Column pkColumn = new Column();