我遇到了任务问题 我给NxN矩阵只有1s和0s。在每个步骤中,我连续生成随机1,并关闭此1的列。我需要找到0到1的最小更改次数,以确保每行都能有一个1。 例如
00
00
我需要2个更改才能成为
10
01
或
000
110
000
我需要进行3次更改
110
110
001
所以我可以在第一行中选择第一个或第二个1。排在第二排的第一排或第二排第一排选择,第三排排第三位。
答案 0 :(得分:2)
将您的问题视为二分图,我们左边是工人,右边是工作,右边是工人可以找工作。
然后计算具有作业的工人的最大匹配(例如,使用the Hopcroft-Karp algorithm)。
如果匹配的大小为x,那么我们已经成功地将x个工作者与x个作业配对。然后我们需要花费n-x钱来培训无与伦比的工人来完成无与伦比的工作。