当前位置: 首页 > 知识库问答 >
问题:

矩阵最大不重叠数的最小化

邢昂然
2023-03-14

我正在寻找一个有效的解决方案,从矩阵中选择不重叠的值,而不考虑成本的最小化。匈牙利算法通过选择一个代价最小的组合来解决指派问题。然而,我想要一个最大值的最小化。

    J1 J2 J3
w1 | 5  4  5 |
w2 | 3  2  5 |
w3 | 1  5  2 |

匈牙利人会选择

W3 --> J1 = 1
W2 --> J2 = 2
W1 --> J3 = 5

总成本=1+2+5=8

但是,最大值为5。

我希望将组合选择为

W1 --> J2 = 4
W2 --> J1 = 3
W3 --> J3 = 2

所以我想要的输出是:4,3,2

而不是成本最小化。我想选择一个最小最大数量的组合。

共有1个答案

凤经武
2023-03-14

你会选择MIP模型吗?

如果将矩阵a表示为x_ij,添加二进制变量x_ij表示元素是否被选中,并添加k作为最大选定值,则以下操作将起作用(ij是行和列索引):

最大化K

<代码>%1。∑(j∈j)x_ij=1,xi∈I(每行一个元素)

<代码>2。∑(i∈i)x_ij=1,hxj∈J(每列一个元素)

<代码>3。k≤A_ij*x_ij,xii∈I,hixj∈J(k小于或等于每个选定元素)

MiniZinc中的一个实现(使用给定的数据):

int: Items = 3;

set of int: ITEM = 1..Items;

array[ITEM, ITEM] of int: A = [| 5, 4, 5
                               | 3, 2, 5 
                               | 1, 5, 2 |];
  
array[ITEM, ITEM] of var 0..1: x;

var int: k;

constraint forall(i in ITEM)
    (sum(j in ITEM)(x[i, j]) = 1);

constraint forall(j in ITEM)
    (sum(i in ITEM)(x[i, j]) = 1);

constraint forall(i, j in ITEM)
    (k >= A[i, j] * x[i, j]);

solve minimize k;

output ["k=\(k)\n"] ++ 
["x="] ++ [show2d(x)];

给出:

k=4
x=[| 0, 1, 0 |
     1, 0, 0 |
     0, 0, 1 |]
 类似资料:
  • 我实现了c程序,可以找到矩阵的元素:行的最大元素,同时列的最小元素,或行的-min元素,同时列的最大元素。例如,我们有数据。包含以下内容的txt文件: 4 7 8 9 10 6 5 4 11 5 0 1 12 4 2 7 13- 其中4是n-矩阵大小(4x4),7和10是这些数字。 下面是代码: 问题:我想知道我的代码是不是“脏”代码?因为我总是渴望让一切变得如此困难,只要有可能让它变得容易。是否

  • 这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?

  • 给定一个2维正整数数组,求和最大的HxW子矩形。矩形的总和是该矩形中所有元素的总和。 输入:具有正元素的二维数组NxN子矩形的HxW大小 输出:HxW大小的子矩阵,其元素的总和最大。 我已经使用蛮力方法解决了这个问题,但是,我现在正在寻找一个具有更好复杂性的更好的解决方案(我的蛮力法的复杂性是O(n6))。

  • 我有一个数据集,它有4列/属性和150行。我想用最小最大规范化来规范化这个数据。到目前为止,我的代码是: 这里,和返回全局最小值和最大值。因此,这段代码实际上对2D矩阵中的所有值应用最小-最大规范化,以便全局最小值为0,全局最大值为1。 然而,我想对每一列分别执行相同的操作。具体来说,2D矩阵的每一列都应该独立于其他列进行最小-最大规格化。 我尝试使用只是使用和,但得到的错误说矩阵维度必须一致。

  • 我有一个大的NxN位数组,有K个1(其他都是0)。所有非零点的坐标都是已知的——换句话说,这个n×n数组可以表示为K对数组,每个数组包含一个非零点的x和y坐标。 给定一个HxW大小的子矩阵,我需要将其放在我的原始NxN数组上,使其覆盖大多数非零点。 输入:子矩阵的高度H和宽度W 输出:HxW子数组的x和y协弦,其内部有最多的协弦 之前也回答过类似的问题:2D矩阵中尺寸为HxW的最大子阵列,但在我的

  • 具有以下矩阵: 我想只得到每行的最小范围在2到30之间的行。 每行的最小范围: 所以我们只得到[2]和[3] 每行的最大范围在0到160之间: 最后我们只得到满足这两个条件的[2]。你能提供一个R语言函数来生成这个结果吗? 问候迪米特里斯