Распределенное перечисление комбинаций

У меня проблема, когда я должен проанализировать 500C5 комбинаций (255244687600) чего-то. Распределение его по кластеру из 10 узлов, где каждый кластер обрабатывает примерно 10 ^ 6 комбинаций в секунду, означает, что задание будет выполнено примерно за семь часов.

Моя проблема заключается в распределении 255244687600 комбинаций по 10 узлам. Я хотел бы представить каждый узел с 25524468760, однако алгоритмы, которые я использую, могут создавать комбинации только последовательно, я хотел бы иметь возможность передавать набор элементов и диапазон индикаторов комбинации, например, [0 -10 ^ 7), [10 ^ 7,2.0 10 ^ 7) и т. Д. И пусть узлы сами определяют комбинации.

В настоящий момент я использую следующие алгоритмы:

Я рассмотрел возможность использования главного узла, который перечисляет каждую из комбинаций и отправляет работу каждому из узлы. Однако, накладные расходы, возникающие при повторении комбинаций из одного узла и обмене данными между ними, огромны, и впоследствии это приведет к тому, что главный узел станет узким местом.

Существуют ли какие-либо хорошие алгоритмы повторения комбинаций, предназначенные для эффективного / оптимального распределения перечисление?

16
задан Community 23 May 2017 в 11:45
поделиться