问题描述
我有一个加权图和非二部图,并希望获得最大的权重匹配。我已经完成了python networkx库的任务,并正在寻找Java的替代库。我调查了JGraphT库,但找不到解决方案。
LoggerService
解决方法
这是使用JGraphT的解决方案:
Graph<Integer,DefaultWeightedEdge> g = new SimpleWeightedGraph<>(SupplierUtil.createIntegerSupplier(1),SupplierUtil.createDefaultWeightedEdgeSupplier());
Integer v1=g.addVertex();
Integer v2=g.addVertex();
Integer v3=g.addVertex();
Integer v4=g.addVertex();
Graphs.addEdge(g,v1,v2,30);
Graphs.addEdge(g,v3,100);
Graphs.addEdge(g,v4,0);
Graphs.addEdge(g,30);
MatchingAlgorithm<Integer,DefaultWeightedEdge> alg = new KolmogorovWeightedMatching<>(g,ObjectiveSense.MAXIMIZE);
System.out.println(alg.getMatching());
输出:
Matching [edges=[(1 : 3),(2 : 4)],weight=130.0]