/** * Queries the ch graph and checks if the graph's shortcuts match the given expected shortcuts. */ private void checkShortcuts(Shortcut... expectedShortcuts) { Set<Shortcut> expected = setOf(expectedShortcuts); if (expected.size() != expectedShortcuts.length) { fail("was given duplicate shortcuts"); } AllCHEdgesIterator iter = lg.getAllEdges(); Set<Shortcut> given = new HashSet<>(); while (iter.next()) { if (iter.isShortcut()) { given.add(new Shortcut( iter.getBaseNode(), iter.getAdjNode(), iter.getWeight(), iter.getDistance(), iter.isForward(encoder), iter.isBackward(encoder), iter.getSkippedEdge1(), iter.getSkippedEdge2())); } } assertEquals(expected, given); }
@Test public void testAddShortcutSkippedEdgesWriteRead() { graph = createGHStorage(); final EdgeIteratorState edge1 = graph.edge(1, 3, 10, true); final EdgeIteratorState edge2 = graph.edge(3, 4, 10, true); graph.freeze(); CHGraph lg = graph.getGraph(CHGraph.class); lg.shortcut(1, 4); AllCHEdgesIterator iter = lg.getAllEdges(); iter.next(); iter.next(); iter.next(); assertTrue(iter.isShortcut()); iter.setSkippedEdges(edge1.getEdge(), edge2.getEdge()); assertEquals(edge1.getEdge(), iter.getSkippedEdge1()); assertEquals(edge2.getEdge(), iter.getSkippedEdge2()); }
public static void printEdgeInfo(final Graph g, FlagEncoder encoder) { System.out.println("-- Graph nodes:" + g.getNodes() + " edges:" + g.getAllEdges().length() + " ---"); AllEdgesIterator iter = g.getAllEdges(); while (iter.next()) { String prefix = (iter instanceof AllCHEdgesIterator && ((AllCHEdgesIterator) iter).isShortcut()) ? "sc" : " "; String fwdStr = iter.isForward(encoder) ? "fwd" : " "; String bwdStr = iter.isBackward(encoder) ? "bwd" : " "; System.out.println(prefix + " " + iter + " " + fwdStr + " " + bwdStr + " " + iter.getDistance()); } }
assertTrue(iter.next()); assertFalse(iter.isShortcut()); assertEquals(0, iter.getEdge()); assertTrue(iter.next()); assertFalse(iter.isShortcut()); assertEquals(1, iter.getEdge()); assertTrue(iter.next()); assertTrue(iter.isShortcut()); assertEquals(2, iter.getEdge()); assertFalse(iter.next());
void contractNodes() { meanDegree = prepareGraph.getAllEdges().getMaxId() / prepareGraph.getNodes(); int level = 1; counter = 0;
@Test public void testAddShortcutSkippedEdgesWriteRead_writeWithCHEdgeIterator() { graph = createGHStorage(); final EdgeIteratorState edge1 = graph.edge(1, 3, 10, true); final EdgeIteratorState edge2 = graph.edge(3, 4, 10, true); graph.freeze(); CHGraph lg = graph.getGraph(CHGraph.class); CHEdgeIteratorState shortcut = lg.shortcut(1, 4); shortcut.setSkippedEdges(edge1.getEdge(), edge2.getEdge()); AllCHEdgesIterator iter = lg.getAllEdges(); iter.next(); iter.next(); iter.next(); assertTrue(iter.isShortcut()); assertEquals(edge1.getEdge(), iter.getSkippedEdge1()); assertEquals(edge2.getEdge(), iter.getSkippedEdge2()); }
public static void printEdgeInfo(final Graph g, FlagEncoder encoder) { System.out.println("-- Graph n:" + g.getNodes() + " e:" + g.getAllEdges().getMaxId() + " ---"); AllEdgesIterator iter = g.getAllEdges(); while (iter.next()) { String sc = ""; if (iter instanceof AllCHEdgesIterator) { AllCHEdgesIterator aeSkip = (AllCHEdgesIterator) iter; sc = aeSkip.isShortcut() ? "sc" : " "; } String fwdStr = iter.isForward(encoder) ? "fwd" : " "; String bckStr = iter.isBackward(encoder) ? "bckwd" : ""; System.out.println(sc + " " + iter + " " + fwdStr + " " + bckStr); } }
void contractNodes() meanDegree = prepareGraph.getAllEdges().getMaxId() / prepareGraph.getNodes(); int level = 1; counter = 0;
public static void printEdgeInfo(final Graph g, FlagEncoder encoder) { System.out.println("-- Graph nodes:" + g.getNodes() + " edges:" + g.getAllEdges().length() + " ---"); AllEdgesIterator iter = g.getAllEdges(); while (iter.next()) { String prefix = (iter instanceof AllCHEdgesIterator && ((AllCHEdgesIterator) iter).isShortcut()) ? "sc" : " "; String fwdStr = iter.isForward(encoder) ? "fwd" : " "; String bwdStr = iter.isBackward(encoder) ? "bwd" : " "; System.out.println(prefix + " " + iter + " " + fwdStr + " " + bwdStr + " " + iter.getDistance()); } }
public static void printEdgeInfo( final Graph g, FlagEncoder encoder ) { System.out.println("-- Graph n:" + g.getNodes() + " e:" + g.getAllEdges().getMaxId() + " ---"); AllEdgesIterator iter = g.getAllEdges(); while (iter.next()) { String sc = ""; if (iter instanceof AllCHEdgesIterator) { AllCHEdgesIterator aeSkip = (AllCHEdgesIterator) iter; sc = aeSkip.isShortcut() ? "sc" : " "; } String fwdStr = iter.isForward(encoder) ? "fwd" : " "; String bckStr = iter.isBackward(encoder) ? "bckwd" : ""; System.out.println(sc + " " + iter + " " + fwdStr + " " + bckStr); } }