矩阵中最大和最小行的总和

时间:2018-12-28 00:49:12

标签: python python-3.x numpy matrix greedy

我有两个矩阵,我称它们为ones_matrix和zero_matrix

我需要创建一个新列表,该列表是此矩阵中最好的20行的总和,例如从第一行开始的10行和从第二行开始的10行,其中总和列表中的最小元素最大。

因此,这是贪婪的alghorhytm,我在其中从矩阵中选择最佳行来添加每个步骤。对于onesMatrix 10次,对zero_matrix 10次,对ones_matrix 10次,还排除了行的重复。

每次,我们都需要添加以前未添加的内容。 我的输入是两个仅包含1和0的64 x 128矩阵。

所以我的答案不能大于20,因为我要对20行用零和1求和,而20行仅包含1的行之和是64 * [20],且元素最少-20。  这是我的代码:

ignored=set()
res=np.zeros(128)
for i in range(10):
    j=best(res,ones_matrix,ignored)
    res=res+ones_matrix[j]
    ignored.add(j)
    j = best(res, zero_matrix,ignored)
    res = res + zero_matrix[j]
    ignored.add(j)

def best(res,matrix,ignored):
for i in range(len(matrix)):
    matrix[i]=matrix[i]+res
m=min(matrix[0])
index=0
for i in range(len(matrix)):
    if (min(matrix[i])>=m and i not in ignored):
        index=i
        m=min(matrix[i])
print(index)
return index

这些矩阵仅包含零和零,因此新行中的max元素不能大于20(因为我要添加20行,其中包含零和零)。但是当我使用

print(min(res))

我正在获得巨大价值,例如44266.0 我该如何工作?

最佳行是最小元素最大的行。

0 个答案:

没有答案