/** * */ protected void drawShortest() { if (mFrom == null || mTo == null) { return; } BFSDistanceLabeler<String,Number> bdl = new BFSDistanceLabeler<String,Number>(); bdl.labelDistances(mGraph, mFrom); mPred = new HashSet<String>(); // grab a predecessor String v = mTo; Set<String> prd = bdl.getPredecessors(v); mPred.add( mTo ); while( prd != null && prd.size() > 0) { v = prd.iterator().next(); mPred.add( v ); if ( v == mFrom ) return; prd = bdl.getPredecessors(v); } }
private void visitNewVertex(V predecessor, V neighbor, int distance, List<V> newList) { if (mUnvisitedVertices.contains(neighbor)) { distanceDecorator.put(neighbor, new Integer(distance)); newList.add(neighbor); mVerticesInOrderVisited.add(neighbor); mUnvisitedVertices.remove(neighbor); } int predecessorDistance = distanceDecorator.get(predecessor).intValue(); int successorDistance = distanceDecorator.get(neighbor).intValue(); if (predecessorDistance < successorDistance) { addPredecessor(predecessor,neighbor); } }
BFSDistanceLabeler<N> labeler = new BFSDistanceLabeler<N>(); labeler.labelDistances(mGraph, source); distances = labeler.getDistanceDecorator(); Map<N, Integer> currentSourceSPMap = new HashMap<N, Integer>(); Map<N, N> currentSourcePredMap = new HashMap<N, N>();
/** * Computes the distances of all the node from the starting root nodes. If there is more than one root node * the minimum distance from each root node is used as the designated distance to a given node. Also keeps track * of the predecessors of each node traversed as well as the order of nodes traversed. * @param graph the graph to label * @param rootSet the set of starting vertices to traverse from */ public void labelDistances(Hypergraph<V,E> graph, Set<V> rootSet) { initialize(graph,rootSet); int distance = 1; while (true) { List<V> newList = new ArrayList<V>(); for(V currentVertex : mCurrentList) { if(graph.containsVertex(currentVertex)) { for(V next : graph.getSuccessors(currentVertex)) { visitNewVertex(currentVertex,next, distance, newList); } } } if (newList.size() == 0) break; mCurrentList = newList; distance++; } for(V v : mUnvisitedVertices) { distanceDecorator.put(v,new Integer(-1)); } }
/** * Computes the distances of all the node from the specified root node. Also keeps track * of the predecessors of each node traversed as well as the order of nodes traversed. * @param graph the graph to label * @param root the single starting vertex to traverse from */ public void labelDistances(Hypergraph<V,E> graph, V root) { labelDistances(graph, Collections.singleton(root)); }
initialize(graph, rootSet); if (graph.nodes().contains(currentNode)) { for (N next : graph.successors(currentNode)) { visitNewNode(currentNode, next, distance, newList);
BFSDistanceLabeler<V,E> labeler = new BFSDistanceLabeler<V,E>(); labeler.labelDistances(mGraph, source); distances = labeler.getDistanceDecorator(); Map<V,Number> currentSourceSPMap = new HashMap<V,Number>(); Map<V,E> currentSourceEdgeMap = new HashMap<V,E>();
/** * Computes the distances of all the node from the starting root nodes. If there is more than one root node * the minimum distance from each root node is used as the designated distance to a given node. Also keeps track * of the predecessors of each node traversed as well as the order of nodes traversed. * @param graph the graph to label * @param rootSet the set of starting vertices to traverse from */ public void labelDistances(Hypergraph<V,E> graph, Set<V> rootSet) { initialize(graph,rootSet); int distance = 1; while (true) { List<V> newList = new ArrayList<V>(); for(V currentVertex : mCurrentList) { if(graph.containsVertex(currentVertex)) { for(V next : graph.getSuccessors(currentVertex)) { visitNewVertex(currentVertex,next, distance, newList); } } } if (newList.size() == 0) break; mCurrentList = newList; distance++; } for(V v : mUnvisitedVertices) { distanceDecorator.put(v,new Integer(-1)); } }
/** * Computes the distances of all the node from the specified root node. Also keeps track of the * predecessors of each node traversed as well as the order of nodes traversed. * * @param graph the graph to label * @param root the single starting node to traverse from */ public void labelDistances(Graph<N> graph, N root) { labelDistances(graph, Collections.singleton(root)); }
BFSDistanceLabeler<V,E> labeler = new BFSDistanceLabeler<V,E>(); labeler.labelDistances(mGraph, source); distances = labeler.getDistanceDecorator(); Map<V,Number> currentSourceSPMap = new HashMap<V,Number>(); Map<V,E> currentSourceEdgeMap = new HashMap<V,E>();
/** */ protected void drawShortest() { if (mFrom == null || mTo == null) { return; } BFSDistanceLabeler<String> bdl = new BFSDistanceLabeler<>(); bdl.labelDistances(mGraph.asGraph(), mFrom); mPred = new HashSet<>(); // grab a predecessor String v = mTo; Set<String> prd = bdl.getPredecessors(v); mPred.add(mTo); while (prd != null && prd.size() > 0) { v = prd.iterator().next(); mPred.add(v); if (v.equals(mFrom)) { return; } prd = bdl.getPredecessors(v); } }
initialize(graph, rootSet); if (graph.containsVertex(currentVertex)) { for (V next : graph.getSuccessors(currentVertex)) { visitNewVertex(currentVertex, next, distance, newList);
/** * Computes the distances of all the node from the specified root node. Also keeps track * of the predecessors of each node traversed as well as the order of nodes traversed. * @param graph the graph to label * @param root the single starting vertex to traverse from */ public void labelDistances(Hypergraph<V,E> graph, V root) { labelDistances(graph, Collections.singleton(root)); }
private void visitNewNode(N predecessor, N neighbor, int distance, List<N> newList) { if (mUnvisitedNodes.contains(neighbor)) { distanceDecorator.put(neighbor, distance); newList.add(neighbor); mNodesInOrderVisited.add(neighbor); mUnvisitedNodes.remove(neighbor); } int predecessorDistance = distanceDecorator.get(predecessor).intValue(); int successorDistance = distanceDecorator.get(neighbor).intValue(); if (predecessorDistance < successorDistance) { addPredecessor(predecessor, neighbor); } }
BFSDistanceLabeler<V, E> labeler = new BFSDistanceLabeler<V, E>(); labeler.labelDistances(mGraph, source); distances = labeler.getDistanceDecorator(); Map<V, Number> currentSourceSPMap = new HashMap<V, Number>(); Map<V, E> currentSourceEdgeMap = new HashMap<V, E>();
return mOrderedPred; BFSDistanceLabeler<String, String> bdl = new BFSDistanceLabeler<String, String>(); bdl.labelDistances(aGraph, aFrom); Set<String> prd = bdl.getPredecessors(v); mPred.add(aTo); while (prd != null && prd.size() > 0) { prd = bdl.getPredecessors(v);
/** * Computes the distances of all the node from the specified root node. Also * keeps track of the predecessors of each node traversed as well as the * order of nodes traversed. * * @param graph * the graph to label * @param root * the single starting vertex to traverse from */ public void labelDistances(Hypergraph<V, E> graph, V root) { labelDistances(graph, Collections.singleton(root)); }
private void visitNewVertex(V predecessor, V neighbor, int distance, List<V> newList) { if (mUnvisitedVertices.contains(neighbor)) { distanceDecorator.put(neighbor, new Integer(distance)); newList.add(neighbor); mVerticesInOrderVisited.add(neighbor); mUnvisitedVertices.remove(neighbor); } int predecessorDistance = distanceDecorator.get(predecessor).intValue(); int successorDistance = distanceDecorator.get(neighbor).intValue(); if (predecessorDistance < successorDistance) { addPredecessor(predecessor,neighbor); } }
private void visitNewVertex(V predecessor, V neighbor, int distance, List<V> newList) { if (mUnvisitedVertices.contains(neighbor)) { distanceDecorator.put(neighbor, Integer.valueOf(distance)); newList.add(neighbor); mVerticesInOrderVisited.add(neighbor); mUnvisitedVertices.remove(neighbor); } int predecessorDistance = distanceDecorator.get(predecessor).intValue(); int successorDistance = distanceDecorator.get(neighbor).intValue(); if (predecessorDistance < successorDistance) { addPredecessor(predecessor, neighbor); } }