private Graph<V, DefaultEdge> asDirectedGraph(Matching<V, E> matching) { GraphBuilder<V, DefaultEdge, ? extends DefaultDirectedGraph<V, DefaultEdge>> builder = DefaultDirectedGraph.createBuilder(DefaultEdge.class); graph.vertexSet().forEach((v) -> { builder.addVertex(v); }); graph.edgeSet().forEach((e) -> { V v1 = graph.getEdgeSource(e); V v2 = graph.getEdgeTarget(e); if (partition1.contains(v1)) { builder.addEdge(v1, v2); if (matching.getEdges().contains(e)) { builder.addEdge(v2, v1); } } else { builder.addEdge(v2, v1); if (matching.getEdges().contains(e)) { builder.addEdge(v1, v2); } } }); return builder.build(); }
private Graph<E, DefaultEdge> asDirectedEdgeGraph(Matching<V, E> matching, Set<V> subset) DefaultDirectedGraph.createBuilder(DefaultEdge.class); for (E e : graph.edgeSet()) { V v1 = graph.getEdgeSource(e);