从矩阵中选择点的算法

时间:2011-11-17 13:02:19

标签: algorithm data-structures graph

这似乎是一个简单的问题,但我坚持这个问题。问题是我有一个大小为X x Y的矩阵。 (i,j)可能有一些点。然而,并非所有位置(i,j)都必须具有一个点(即,存在< XY点)。我该如何选择这些点的最大子集,使得所选子集中的点没有相同的i(行号)或j(列号)

2 个答案:

答案 0 :(得分:3)

这是maximum matching问题,它是多时间可解决的。给定一个问题实例,构造一个二分图,其节点为a 1 ,..., X ,b 1 ,...,b Y ,边缘a i b j 表示有点的所有(i,j)。取最大匹配边缘对应的点。

答案 1 :(得分:2)

构建图表。点是图的顶点。每个顶点都与同一行和同一列中的所有顶点连接 - 图的边。您的问题是选择最大独立顶点集(没有公共边)。

Independent_set

这个问题相当于补图中的最大团问题,因此可以使用Bron-Kerbosch算法。

http://en.wikipedia.org/wiki/Clique_problem#Finding_maximum_cliques_in_arbitrary_graphs

http://en.wikipedia.org/wiki/Complement_graph

Bron-Kerbosch algorithm