Я застрял в этой проблеме и не могу найти эффективное решение этой проблемы.
У меня есть массивы N (до 10 миллионов), скажем, максимум 100 элементов. Эти массивы содержат числа от 1 до 10000.
Теперь моя проблема состоит в том, чтобы разделить эти массивы на K групп, чтобы минимизировать дубликаты во всех массивах, т.е. для массива, содержащего 1, 4, 10, 100 и другого, содержащего 1, 100. Я хотел бы, чтобы они вошли в одну группу, потому что что сводит к минимуму двуличие. Два ограничения, которые имеет моя проблема, заключаются в следующем:
я не хочу увеличивать размер уникальных элементов более чем на 110 для группы массивов. Итак, у меня есть массив размером 100, и есть еще один массив размером 100, который соответствует 60%, я бы предпочел создать новую группу, потому что это не увеличивает. уникальных элементов до 140, и это будет увеличиваться.
Количество векторов в группах должно быть равномерно распределено.
Группировка этих массивов по размеру в порядке убывания. Затем поиск уникальных векторов с уникальным хешированием и применение жадного алгоритма максимального совпадения с ограничениями, но жадный алгоритм, похоже, не работает, потому что это будет полностью зависеть от разделов, которые я выбрал первым. Я не мог понять, как можно применить DP, потому что количество комбинаций с учетом общего количества векторов просто огромно. Я не уверен, какую методологию мне следует выбрать.
некоторые из неудачных случаев моего алгоритма: скажем, есть два вектора, которые взаимно исключают друг друга, но если я сформирую с ними группу, я мог бы сопоставить 100% с третьим вектором, который в противном случае совпадал бы только на 30% в группе и сделал эта группа будет заполнена после добавления к этой группе, это увеличит мою двуличность, потому что третий вектор должен был образовать группу с первыми двумя векторами.
N
элементов может состоять только из групп, состоящих не более чем изN+110
уникальных элементов? Количество векторов в группах должно быть равномерно распределено. -› Что именно это означает? Вы хотите, чтобы в группах было как можно равное количество векторов? - person Nico Schertler   schedule 18.07.2019