Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 求矩阵的最大和_Algorithm_Matrix_Sum_Max_Dynamic Programming - Fatal编程技术网

Algorithm 求矩阵的最大和

Algorithm 求矩阵的最大和,algorithm,matrix,sum,max,dynamic-programming,Algorithm,Matrix,Sum,Max,Dynamic Programming,输入:二维NxN对称矩阵-具有NxN正元素 输出:大小为NxN的二维矩阵,包含N选定元素,其总和为所有可能选择中的最大值。未选择的其他元素为零。换句话说,我们应该从矩阵中选择N元素以返回最大值和 要求:如果矩阵的维数为4*4,则应选择4整数。矩阵中的每一行和每一列的使用次数不应超过2次。 例如,如果我们有4*4矩阵,则可以选择以下元素: (1,2) (2,3) (3,4) (4,1) 但是如果我们选择(1,2)和(4,1),我们就不能选择(1,3),因为我们使用了1两次 这个问题有没有一个有效

输入:二维
NxN
对称矩阵-具有
NxN
正元素

输出:大小为
NxN
的二维矩阵,包含
N
选定元素,其总和为所有可能选择中的最大值。未选择的其他元素为零。换句话说,我们应该从矩阵中选择
N
元素以返回最大值

要求:如果矩阵的维数为
4*4
,则应选择4整数。矩阵中的每一行和每一列的使用次数不应超过2次。 例如,如果我们有
4*4
矩阵,则可以选择以下元素:

(1,2)
(2,3)
(3,4)
(4,1)
但是如果我们选择
(1,2)
(4,1)
,我们就不能选择
(1,3)
,因为我们使用了
1
两次


这个问题有没有一个有效的算法?

这个问题是在一个奇怪的地方,那里不明显有一个带积分顶点的解多面体,但它与一般匹配的相似性阻止我寻找NP硬度降低。一般匹配的算法非常复杂,即使有办法,修改一个算法也会让人望而生畏,所以我的建议是使用整数规划解算器。有一个公式是这样的

maximize sum_{ij} w_{ij} x_{ij}
subject to
sum_{ij} x_{ij} = n
forall k, sum_i x_{ik} + sum_j x_{kj} ≤ 2
forall ij, x_{ij} in {0, 1},

其中
w{ij}
是权重矩阵的
ij
th元素。

有没有有效的算法让别人做我的作业?这不是作业,只是我项目的一部分。我只需要算法的名称。我们可以选择12,23,34,14吗?是的,我们可以选择它们。