Создайте все возможные комбинации матриц без петель - Python - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно сгенерировать матрицу из 3 столбцов и 11 строк, где в каждой позиции у меня может быть 0, 1 или 2. Проблема в том, что, если я введу это в цикл, у меня будет 3 ^ 33 возможных комбинации, которые я не могу сохранить или даже пройти. Я хочу создать все эти матрицы для работы с ними за минимальное время и избежать смерти ядра.

Большое спасибо! :)

1 Ответ

0 голосов
/ 10 мая 2018

Итак, каждая матрица содержит 53 бита данных, поэтому ваш вопрос «как сгенерировать все возможные 53-битные целые числа» - log_2 (3 ^ 33) <53 </p>

Если это не звучит тревожно для вас, тогда я действительно не знаю, что вам сказать, но большую часть времени вам не нужно иметь их в памяти (или даже на диске) ОДИН РАЗ.

Если вы твердо намерены сгенерировать все из них, чтобы по какой-то причине они были в памяти сразу (и я не могу понять это, поскольку даже в целочисленном формате мы говорим о 53 * 3 ^ 33 битах данных (вполне возможно, 64 * 3 ^ 33, поскольку я буду использовать длинные целые числа, но давайте использовать 53-битные целые числа) - это ~ 3 * 10 ^ 17 бит, ~ 3,7 * 10 ^ 16 байт, ~ 3,6 * 10 ^ 13 КиБ, ~ 35122658018 МБ, ~ 34299470 ГиБ, ~ 33496 ТиБ, ~ 33 ПиБ.

33 PiB - МНОГО данных. Если вы не имеете котировки NASDAQ или не являетесь федеральным агентством (например, АНБ;)), у вас нет доступа к оборудованию для их одновременной обработки.

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

...