0
我試圖做一個HopcroftKarpBipartiteMatching但沒有任何演示或我真的找不到其他任何東西來幫助我使用庫。我無法從文檔中找出如何以及實例化HopcroftKarpBipartiteMatching類所需的內容?我有一組表示頂點的字符串。它是從頂點的每條路徑的列表。舉一個例子:JAVA Jgrapht Hopcroft Karp Bipartite匹配
Array{(V1,V7), (V1,V8), (V1,V6)]
Array{(V2,V8), (V2,V5), (V2, V6)]
Array{(V3, V4),(V3, V8)}
與JApplet的可能的解決方法
public class GraphDemo extends JApplet{
private static final long serialVersionUID = 2202072534703043194L;
private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);
private JGraphXAdapter<String, DefaultEdge> jgxAdapter;
public static void main(String[] args) {
JGraphAdapterDemo applet = new JGraphAdapterDemo();
applet.init();
JFrame frame = new JFrame();
frame.getContentPane().add(applet);
frame.setTitle("JGraphT Adapter to JGraph Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public void init()
{
UndirectedGraph<String, DefaultEdge> g =
new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
jgxAdapter = new JGraphXAdapter<String, DefaultEdge>(g);
getContentPane().add(new mxGraphComponent(jgxAdapter));
resize(DEFAULT_SIZE);
String x1 = "x1";
String x2 = "x2";
String x3 = "x3";
String y1 = "y1";
String y2 = "y2";
String y3 = "y3";
String y4 = "y5";
g.addVertex(x1);
g.addVertex(x2);
g.addVertex(x3);
g.addVertex(y1);
g.addVertex(y2);
g.addVertex(y3);
g.addVertex(y4);
g.addEdge(x1, y1);
g.addEdge(x1, y2);
g.addEdge(x2, y1);
g.addEdge(x2, y4);
g.addEdge(x3, y2);
g.addEdge(x3, y3);
Set<String> p1 = new HashSet<String>(Arrays.asList(x1, x2, x3));
Set<String> p2 = new HashSet<String>(Arrays.asList(y1, y2, y3, y4));
HopcroftKarpBipartiteMatching<String, DefaultEdge> alg =
new HopcroftKarpBipartiteMatching<String, DefaultEdge>(g, p1, p2);
Set<DefaultEdge> match = alg.getMatching();
mxCircleLayout layout = new mxCircleLayout(jgxAdapter);
layout.execute(jgxAdapter.getDefaultParent());
System.out.println(g.toString());
System.out.println(match);
}
}
感謝您的支持!我嘗試在japplet中實現您的解決方案以可視化。我可能不會爲我正在考慮的特定雙方使用正確的功能。我希望有更多類似的可視化,比如我上面發佈的圖片,但我得到了一個邊緣圖。有什麼建議麼?我是否正確實施了JApplet for twopartite?我用japplet的擴展發佈了你的代碼。 – MAXGEN
@MAXGEN你原來的問題是關於初始化和使用'HopcroftKarpBipartiteMatching'。你究竟在想什麼?另外,關於'JApplet',你在'JFrame'中顯示它。嘗試用特定的細節編輯你的問題。你將這個答案中的樣本複製到你的問題中,沒有任何解釋。也許這是另一個問題。 – tenorsax
我想你確實回答了這個問題。如果您有機會可能幫助解答,我會提出另一個問題。 https://stackoverflow.com/questions/22703918/java-jgraph-applet-visualize-bipartite-graph – MAXGEN