Saturday, May 14, 2011

О вычислении факториала: часть 2

Когда-то я писал о наиболее продвинутом на сегодняшний день методе вычисления факториала. Сегодня, читая Википедию, наткнулся и на ссылку с оценкой сложности этого метода: держите.

Статью (пока что) не читал. Результат, который там приводится, таков:
временная сложность составляет O(\log \log n \cdot M(n \log n)), где M(n \log n) — временная сложность перемножения двух чисел длины n \log n.
(Для сравнения: в случае разбиения произведения на два произведения примерно равной длины сложность отличается тем, что вместо log(log(n)) в формуле стоит просто log(n). В случае же тупого перемножения последовательных чисел сложность равна O(n² log n).)

Таким образом, в случае использования метода Шёнхаге-Штрассена сложность — O(n\,\cdot\,(\log n \log \log n)^2)

В случае же использования метода Карацубы, для которого M(n) = n^{\log_23}, сложность, соответственно, — O((n \log n)^{\log_23}\,\cdot\,\log \log n)

Даже проверил из любопытства: (кривая - график f(N) = 1.532e-10 * (N log N)log23 * log log N)

No comments:

Post a Comment