我正在使用 JGraphT,并且正在使用 EdmondsKarpMFImpl。
问题是:如何定义整个边集什么是最小切割中的“参与”。
我尝试使用该 getCutEdges
方法,但它只返回 1 条边。
我有以下图表:
(所有边都有一个权重值(1)和一个剩余容量值(10))
public SimpleDirectedWeightedGraph generateAbilene(){
Supplier<Integer> vSupplier3 = new Supplier<Integer>() {
private int id = 1;
@Override
public Integer get() {
return id++;
}
};
SimpleDirectedWeightedGraph exGraph3 =
new SimpleDirectedWeightedGraph<Integer, MyDefaultWeightedEdge>(vSupplier3, MyUtil.createDefaultWeightedEdgeSupplier());
exGraph3.addVertex(1);
exGraph3.addVertex(2);
exGraph3.addVertex(3);
exGraph3.addVertex(4);
exGraph3.addVertex(5);
exGraph3.addVertex(6);
exGraph3.addVertex(7);
exGraph3.addVertex(8);
exGraph3.addVertex(9);
exGraph3.addVertex(10);
exGraph3.addVertex(11);
exGraph3.addEdge(1,2);
exGraph3.addEdge(1,7);
exGraph3.addEdge(2,3);
exGraph3.addEdge(3,4);
exGraph3.addEdge(4,5);
exGraph3.addEdge(6,7);
exGraph3.addEdge(10,7);
exGraph3.addEdge(7,8);
exGraph3.addEdge(8,5);
exGraph3.addEdge(8,9);
exGraph3.addEdge(8,11);
return exGraph3;
}
使用这种方法,我只能在 Source 节点 (1) 和 Sink 节点 (5) 之间获得前 2 条边 (1-2 & 1-7)
我想检索最小切割中的所有边缘。例如,在上面的情况下,它应该返回:1-2、1-7、2-3、7-8、3-4、8-5、4-5(关于边缘的顺序我不关心)
图表如下所示: