Сумма строк в матрице с наибольшим минимальным - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть две матрицы, позвольте мне назвать их ones_matrix и zero_matrix

Мне нужно создать новый список, который будет суммой лучших 20 строк из этой матрицы, таких как 10 строк из первой и 10 строк из второй, где минимальный элементв итоговом списке самая большая.

Так что это жадный алгоритм, где я выбираю лучший ряд из матрицы, чтобы добавить на каждом шаге.10 раз для onesMatrix и 10 раз для zero_matrix и 10 раз для ones_matrix, а также исключая повторы строк.

Каждый раз, когда нам нужно добавить что-то, чего мы раньше не добавляли.Мой вход - две матрицы 64 x 128, которые содержат только единицы и нули.

Так что мой ответ не может быть больше 20, потому что я суммирую 20 строк с нулями и единицами, а сумма из 20 строк, которая содержит только единицы, равна 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

Эти матрицы содержат только нули и нули, поэтому максимальный элемент в моей новой строке не может быть больше 20 (потому что я добавляю 20 строк, которые содержат нули и нули).Но когда я использую

print(min(res))

, я получаю огромное значение, например, 44266,0. Как мне сделать эту работу?

Лучшая строка - это строка с наибольшим минимальным элементом.

...