current = layers.get(index - 1); previous = layers.get(index); improved = doTranspose(current, previous, edges); current = layers.get(index); previous = layers.get(index - 1); improved = doTranspose(current, previous, edges);
this.verticesTransposer.transpose(virtualized, edges, i); if (this.crossingCount.crossing(best, edges) > this.crossingCount.crossing(virtualized, edges)) { best = clone(virtualized);
@Test public void testTwoSeparateTrees() { final LayeredGraph graph = new LayeredGraph(Graphs.TwoSeparateTreesFromRoots); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assertions.assertThat(graph.getLayers()) .as("TwoSeparateTreesFromRoots graph vertices should be placed into three layers") .hasSize(3); }
@Test public void testFullGraph() { final LayeredGraph graph = new LayeredGraph(Graphs.Full); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assertions.assertThat(graph.getLayers()) .as("Full graph vertices should be in 4 layers") .hasSize(4); } }
@Test public void testSimpleReorder() { final LayeredGraph graph = new LayeredGraph(); graph.addEdge("A", "D"); graph.addEdge("B", "C"); final GraphLayerImpl layer01 = new GraphLayerImpl(1); layer01.addNewVertex("A"); layer01.addNewVertex("B"); graph.getLayers().add(layer01); final GraphLayerImpl layer02 = new GraphLayerImpl(2); layer02.addNewVertex("C"); layer02.addNewVertex("D"); graph.getLayers().add(layer02); final MedianVertexLayerPositioning median = new MedianVertexLayerPositioning(); final LayerCrossingCount layersCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(layersCount); final DefaultVertexOrdering ordering = new DefaultVertexOrdering(median, layersCount, verticesTransposer); ordering.orderVertices(graph); Assertions.assertThat(graph.getLayers().get(0).getVertices()) .extracting(Vertex::getId) .containsExactly("A", "B"); Assertions.assertThat(graph.getLayers().get(1).getVertices()) .extracting(Vertex::getId) .containsExactly("D", "C"); }
@Test public void testRealCase1() { final LayeredGraph graph = new LayeredGraph(Graphs.REAL_CASE_1); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assert.assertEquals(6, graph.getLayers().size()); final DefaultVertexPositioning defaultVertexPositioning = new DefaultVertexPositioning(); defaultVertexPositioning.calculateVerticesPositions(graph, LayerArrangement.TopDown); }
final VerticesTransposer verticesTransposer = new VerticesTransposer(layersCount); final DefaultVertexOrdering ordering = new DefaultVertexOrdering(median, layersCount,