Это утверждение из фундаментальных алгоритмов Кнута все еще применимо сегодня? [закрыто]

10

В некотором смысле 10! (десять факторных) представляет приблизительную границу между вещами, которые практично вычислять, и вещами, которые не являются.

Это из книги Кнута TAOCP "Основные алгоритмы" (1973). Это все еще допустимое утверждение или вычислительная мощность сделала его устаревшим?

Бон Ами
источник
Мне не ясно, в каком смысле это когда-либо было правдой - 10! это всего несколько миллионов. Слишком большой для прямого понимания, но не особенно сложный для вычисления, даже с ручкой и бумагой.
Хоббс
11
@hobbs, речь не идет о вычислении значения 10 !, речь идет о выполнении вычислений около 10! вещи . То есть, если ваш метод требует более 10! <единицы работы>, пришло время найти новый метод.
AakashM

Ответы:

21

Это все еще разумно.

10! = 3628880 Каждый последующий шаг увеличивается как минимум на порядок.

(fact 10)
3628800

(fact 11)
39916800 -- about 40 million

(fact 12)
479001600 -- almost 500 million

(fact 13.0)
6227020800.0 -- over 6 billion

Довольно скоро вы говорите о расходах Конгресса.

Джон Р. Штром
источник
15

К счастью, хороший профессор все еще с нами, и лучший способ найти окончательный ответ - написать ему и спросить его мнение.

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

В 1973 году наши возможности по генерированию, хранению, передаче и обработке данных были ограничены до 10! разумная фигура "дальнего края", чтобы стрелять. Я сомневаюсь, что Кнут (или кто-либо еще, если на то пошло) смог бы предсказать экспоненциальные улучшения почти во всем, чем мы наслаждались с тех пор, но факториалы хорошо соответствуют фактическим цифрам.

Я видел это воочию: десять лет назад я работал над проектом, в котором мы разрабатывали способы хранения и обработки около 50 миллионов записей, в то же время размышляя над тем, как бы мы сделали на порядок больше. Десять лет спустя я делаю похожий проект. Мои целевые показатели изменились, все в факторной манере:

                      2002           2012
Small Test .......  9! / 362K ... 10! / 3.6M
Large Test ....... 10! / 3.6M ... 11! /  40M
Capacity Goal .... 11! /  40M ... 12! / 479M
Capacity Dream ... 12! / 479M ... 13! / 6.3B

Группы, работающие над обоими проектами, собирают гораздо более круглые цифры, чем те, но факториалы не за горами. Googles и Facebook в мире имеют ресурсы для того, чтобы делать то, о чем мой нынешний проект только мечтает, но с того места, где я сижу, 13!в течение десятилетия или даже меньше, кажется, недостижимым.

Я не думал о больших объемах данных в 1992 году, но в ретроспективе сказал, что, вероятно, я бы смотрел на все на один фактор меньше.

Blrfl
источник