这似乎是一个简单的问题,但我坚持这个问题。问题是我有一个大小为X x Y
的矩阵。 (i,j)可能有一些点。然而,并非所有位置(i,j)都必须具有一个点(即,存在< XY点)。我该如何选择这些点的最大子集,使得所选子集中的点没有相同的i(行号)或j(列号)
答案 0 :(得分:3)
这是maximum matching问题,它是多时间可解决的。给定一个问题实例,构造一个二分图,其节点为a 1 ,..., X ,b 1 ,...,b Y ,边缘a i b j 表示有点的所有(i,j)。取最大匹配边缘对应的点。
答案 1 :(得分:2)
构建图表。点是图的顶点。每个顶点都与同一行和同一列中的所有顶点连接 - 图的边。您的问题是选择最大独立顶点集(没有公共边)。
这个问题相当于补图中的最大团问题,因此可以使用Bron-Kerbosch算法。
http://en.wikipedia.org/wiki/Clique_problem#Finding_maximum_cliques_in_arbitrary_graphs