NxN矩阵为1s和0s

时间:2016-09-21 08:03:26

标签: algorithm

我遇到了任务问题 我给NxN矩阵只有1s和0s。在每个步骤中,我连续生成随机1,并关闭此1的列。我需要找到0到1的最小更改次数,以确保每行都能有一个1。 例如

00

00

我需要2个更改才能成为

10

01

000

110

000

我需要进行3次更改

110

110

001

所以我可以在第一行中选择第一个或第二个1。排在第二排的第一排或第二排第一排选择,第三排排第三位。

1 个答案:

答案 0 :(得分:2)

将您的问题视为二分图,我们左边是工人,右边是工作,右边是工人可以找工作。

然后计算具有作业的工人的最大匹配(例如,使用the Hopcroft-Karp algorithm)。

如果匹配的大小为x,那么我们已经成功地将x个工作者与x个作业配对。然后我们需要花费n-x钱来培训无与伦比的工人来完成无与伦比的工作。