Java 二部匹配

Java 二部匹配,java,graph,graph-algorithm,Java,Graph,Graph Algorithm,我需要找到一个算法(最好是Java)来解决以下问题(希望能清楚地表达出来): 给定1和0值的矩阵(不一定是平方),如下所示: 我必须能够确定单元格的最大数量,以便在选定的单元格中没有一对具有相同行或列的单元格 例如,如果选择了单元格(行A,列Y),则必须排除单元格(行A,列V),(行A,列S),(行C,列Y),(行G,列Y) 这个问题必须作为一个二部图来解决,其中节点的分区由行和列表示。只有在各自单元中有1个节点的节点之间才有链接 因此我们将有一个分区部分_行,它将包含以下节点:A,B,C,D

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

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

我必须能够确定单元格的最大数量,以便在选定的单元格中没有一对具有相同行或列的单元格

例如,如果选择了单元格
(行A,列Y)
,则必须排除单元格
(行A,列V)
(行A,列S)
(行C,列Y)
(行G,列Y)

这个问题必须作为一个二部图来解决,其中节点的分区由行和列表示。只有在各自单元中有1个节点的节点之间才有链接

因此我们将有一个分区部分_行,它将包含以下节点:A,B,C,D,E,F,G。而分区部分_列将包含节点: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.
如何确定单元格的最大数量?
将最大匹配问题作为最大流量问题来解决有意义吗?

我不知道您是否看过以前的答案。这个框架是为C/C++设计的,但Java与IMHO并没有太大的不同。无论如何,这证明了你的想法,即它可以被视为最大流量。@hardmath谢谢,你的建议非常有用。当然,Fred。我认为计算图论是很好的东西。