2016-03-07 4 views
0

Я пытаюсь записать все возможные комбинации из 40 чисел из заданных 80 чисел. В настоящее время размер файла составляет 28 ГБ и растет. Я хочу закончить его, если он еще не близок к завершению. Для этого есть возможный способ вычислить размер файла. Всего комбинаций 80!/(40! * 40), что само по себе огромно. Таким образом, каждое событие содержит 40 номеров с пробелами. Есть ли способ вычислить размер файла, необходимый для записи?Расчет размера файла для записи огромных событий комбинации

ответ

2

Sterling's approximation for factorials дает нижнюю оценку числа комбинаций, как

equation

где а и б 80 в этом случае 40.

Это упрощает дальше, а потому, что в два раза б он выходит как

equation

, которые могут быть оценены как немного больше, чем 9x10^22.

Это уже нижняя граница, поэтому, если для каждой из комбинаций требуется хранить только один байт (если вы храните их эффективно как цифры, это займет около 17 байт каждый или как строки по 40 байт каждый) то это все равно потребует около 100 зетабетов. Чтобы дать вам представление о том, насколько это, Google, как оценивается, имеет общую емкость хранения около экзабайта, а zettabyte - 1000 из них.

+1

Используя python, который изначально имеет дело с целыми числами multiprecision, мы можем легко вычислить его. Точное значение - '107507208733336176461620', недалеко от' 1.075e23' или '10.75x10^22' с вашими нотами –

+0

Хорошая точка. Вероятно, мне следовало подумать о том, насколько большой будет число, прежде чем я начну аппроксимировать его! – gandaliter