我正在寻找解决以下任务的正确方法(使用python):
我有一个2D矩阵的数据集。让我们说:
1 2 3
5 4 7
8 3 9
0 7 2
从每个行我需要选择一个数字,这不是0(如果更容易,我也可以将其设为NaN。)
我需要找到总和最低的组合。
到目前为止这么容易。我取每行的最低值。
解决方案是:
1 x x
x 4 x
x 3 x
x x 2
Sum: 10
但是:每个列都有一个最小变量和最大总和。因此,只选择每行的最小值可能会导致无效的组合。
假设在这个例子中min被定义为2,没有定义max。然后解决方案是:
1 x x
5 x x
x 3 x
x x 2
Sum: 11
我需要在第二行中选择5,否则第一列将低于最小值(2)。
我可以使用蛮力并测试所有可能的组合。但是由于需要分析的数据量(数据集的数量,而不是每个数据集的大小)是不可能的。
这是已知数学/统计或其他解决方案的常见问题吗?
感谢
罗伯特