public ArcIterator outgoingIterator(Object vertex) { return digraph.outgoingIterator(vertex); } public ArcIterator incomingIterator(Object vertex) {
public DepthFirstSearch(DigraphIteration factory, Object firstVertex) { this.factory = factory; this.firstVertex = firstVertex; stack.push(factory.outgoingIterator(firstVertex)); seen.add(firstVertex); }
public ArcIterator incomingIterator(Object vertex) { return new ReversedArcIterator(wrappedIteration.outgoingIterator(vertex)); }
public void reset(Object newFirstVertex) { stack.clear(); seen.clear(); firstVertex = newFirstVertex; stack.push(factory.outgoingIterator(firstVertex)); seen.add(firstVertex); }
public ArcIterator outgoingIterator(Object vertex) { if (!acceptVertex.evaluate(vertex)) return ArcIterator.EMPTY_ITERATOR; return new FilterArcIterator(digraph.outgoingIterator(vertex), GraphUtils.TRUE_PREDICATE, acceptVertex, acceptArc); } public ArcIterator incomingIterator(Object vertex) {
for (Iterator j = origin.iterator(); j.hasNext();) { Object member = j.next(); for (ArcIterator k = digraph.outgoingIterator(member); k.hasNext();) { Object arc = k.next(); Object dst = k.getDestination();
public Object next() { ArcIterator i = factory.outgoingIterator(queue.remove()); Object origin = i.getOrigin(); Integer childLevelValue = new Integer(level.get(origin).hashCode() + 1); while (i.hasNext()) { i.next(); Object dst = i.getDestination(); if (seen.add(dst)) { queue.add(dst); level.set(dst, childLevelValue); } else validTree = false; } return origin; }
public Object next() { ArcIterator i = (ArcIterator)stack.pop(); Object origin = i.getOrigin(); while (i.hasNext()) { i.next(); //origin = i.getOrigin(); Object dst = i.getDestination(); if (seen.add(dst)) stack.push(factory.outgoingIterator(dst)); } return origin; } }
public static Map shiftLevelsDown(Map vertexLevelMap, DigraphIteration digraph, Object root) { int minChildLevel = Integer.MAX_VALUE; for (ArcIterator i = digraph.outgoingIterator(root); i.hasNext(); ) { i.next(); Object child = i.getDestination(); shiftLevelsDown(vertexLevelMap, digraph, child); MutableInteger childLevel = (MutableInteger)vertexLevelMap.get(child); minChildLevel = (minChildLevel <= childLevel.intValue() ? minChildLevel : childLevel.intValue()); } if (minChildLevel != Integer.MAX_VALUE) { MutableInteger rootLevel = (MutableInteger)vertexLevelMap.get(root); rootLevel.setValue(minChildLevel - 1); } return vertexLevelMap; }
public static Map computeLevels(Map vertexLevelMap, DigraphIteration digraph, Object root, boolean longest) { if (vertexLevelMap == null) vertexLevelMap = new HashMap(); MutableInteger rootLevel = (MutableInteger)vertexLevelMap.get(root); if (rootLevel == null) { rootLevel = new MutableInteger(0); vertexLevelMap.put(root, rootLevel); } for (ArcIterator i = digraph.outgoingIterator(root); i.hasNext(); ) { i.next(); Object child = i.getDestination(); int childLevelCandidate = rootLevel.intValue()+1; MutableInteger childLevel = (MutableInteger)vertexLevelMap.get(child); if (childLevel == null) { childLevel = new MutableInteger(childLevelCandidate); vertexLevelMap.put(child, childLevel); computeLevels(vertexLevelMap, digraph, child, longest); } else if ((longest && childLevel.intValue() < childLevelCandidate) || (!longest && childLevel.intValue() > childLevelCandidate)) { childLevel.setValue(childLevelCandidate); computeLevels(vertexLevelMap, digraph, child, longest); } } return vertexLevelMap; }
Object vertex = vertexIterator.next(); if (seen.add(vertex)) { stack.push(graph.outgoingIterator(vertex)); path.push(vertex); break; if (index < 0) { seen.add(dst); stack.push(graph.outgoingIterator(dst)); path.push(dst); subtreeIsTraversed = false;
public Object next() { Object currentVertex = queue.remove(); ArcIterator i = factory.outgoingIterator(currentVertex); Object origin = i.getOrigin(); while (i.hasNext()) { i.next(); Object dst = i.getDestination(); if (seen.add(dst)) queue.add(dst); } i = factory.incomingIterator(currentVertex); while (i.hasNext()) { i.next(); Object org = i.getOrigin(); if (seen.add(org)) queue.add(org); } return origin; }
stack.push(factory.outgoingIterator(dst));