具有行和列总和约束的二元矩阵

时间:2021-06-02 14:59:00

标签: python matrix

我想找到大小为 18 x 9 的二进制矩阵(一和零)的所有组合,其中每个 行等于 5,每个 列等于 10

此外,每个块的每一列都必须有一个 1。

那个网格大小的组合总数是……好吧,太多了,无法迭代: 2 ** (18 x 9) combinations = 5,846,006,549,323,611,672,814,739,330,865,132,078,623,730,171,904

虽然只有 9!/(5!4!)=126 行组合才能使一行等于 5。18 行,这仍然很多 64,072,225,938,746,379,480,587,511,979,135,205,376

但是,每个块必须在每列中至少有一个 1,这必须限制组合的数量。

我想知道我是否可以将其分解为块组合,因此它可能是 6 个 9 列的块......然后只有 18,014,398,509,481,984(显然没有考虑首先计算块的工作)

我认为 numpy 的力量有能力,但我无法解决。

我在 Excel 中手工做了几个例子

enter image description here

0 个答案:

没有答案
相关问题