二分匹配

时间:2011-08-24 15:44:47

标签: java graph graph-algorithm

我需要找到一个算法(最好用Java)来解决以下问题(希望能够清楚地表达出来):

给定1和0值的矩阵(不一定是正方形),如下所示:

Sample matrix

我必须能够确定最大单元格数,这样在所选择的单元格中没有一对单元格具有共同的行或列。

例如,如果选择了单元格(Row_A, Col_Y),则必须排除单元格(Row_A, Col_V)(Row_A, Col_S)(Row_C, Col_Y)(Row_G, Col_Y)

问题必须作为二分图来解决,其中节点的分区由行表示,而列由另一个表示。仅在各自单元格中具有1的节点之间存在链接。

所以我们将得到分区Part_Row,它将包含以下节点:A,B,C,D,E,F,G。而分区Part_Col将包含节点:Z,Y,X,W,V ,T,S,R,Q。 拱门将是:

A->Y, A-​​>S
B->Z, B->D
C->Y, C->X, C->S,
etc., etc.

如何确定最大细胞数? 将最大匹配问题解决为最大流量问题是否有意义?

0 个答案:

没有答案