Викия

Математика

Функция Аккермана

1457статей на
этой вики
Добавить новую страницу
Обсуждение0 Поделиться

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Функция Аккермана — простой пример вычислимой функции, которая не является примитивно рекурсивной. Она принимает два неотрицательных целых числа в качестве параметров и возвращает натуральное число, обозначается A\left(m,n\right). Эта функция растёт очень быстро, например, число A\left(4,4\right) настолько велико, что количество цифр в записи этого числа многократно превосходит количество атомов в наблюдаемой части вселенной.

Определение Править

Функция Аккермана определяется рекурсивно для неотрицательных целых чисел m и n следующим образом:

A\left(m,n\right)=\begin{cases}n+1&m=0\\A\left(m-1,1\right)&m>0,n=0\\A\left(m-1,A\left(m,n-1\right)\right)&m>0,n>0\end{cases}

Может показаться неочевидным, что рекурсия всегда заканчивается. Это следует из того, что при рекурсивном вызове или уменьшается значение m, или значение m сохраняется, но уменьшается значение n. Это означает, что каждый раз пара \left(m,n\right) уменьшается с точки зрения лексикографического порядка, значит, значение m в итоге достигнет нуля: для одного значение m существует конечное число возможных значений n (так как первый вызов с данным m был произведён с каким-то определённым значением n, а в дальнейшем, если значение m сохраняется, значение n может только уменьшаться), а количество возможных значений m, в свою очередь, тоже конечно. Однако, при уменьшении m значение, на которое увеличивается n, неограничено и обычно очень велико.

Таблица значений Править

n\m 0 1 2 3 4 5 m
0 1 2 3 5 13 65533 \operatorname{hyper}\left(2,m,3\right)-3
1 2 3 5 13 65533 \underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{65536}-3 \operatorname{hyper}\left(2,m,4\right)-3
2 3 4 7 29 2^{65536}-3 \underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{\underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{65536}}-3 \operatorname{hyper}\left(2,m,5\right)-3
3 4 5 9 61 2^{2^{65536}}-3 A\left(4,\underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{\underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{65536}}-3\right) \operatorname{hyper}\left(2,m,6\right)-3
4 5 6 11 125 2^{2^{2^{65536}}}-3 A\left(4,A\left(5,3\right)\right) \operatorname{hyper}\left(2,m,7\right)-3
5 6 7 13 253 2^{2^{2^{2^{65536}}}}-3 A\left(4,A\left(5,4\right)\right) \operatorname{hyper}\left(2,m,8\right)-3
n n+1 n+2 2n+3 2^{n+3}-3 \underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{n+3}-3 \underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{\underset{\underbrace{2^{2^{\cdot^{\cdot^{\cdot^2}}}}}_{65536}}{\vdots}}-3 (всего n блоков 2^{2^{\cdot^{\cdot^{\cdot^2}}}}) \operatorname{hyper}\left(2,m,n+3\right)-3

Обратная функция Править

Так как функция f\left(n\right)=A\left(n,n\right) растёт очень быстро, обратная функция \overset{-1}{f}\left(n\right)=\min\left\lbrace k\geq 1:A\left(k,k\right)\geq n\right\rbrace растёт очень медленно. Эта функция встречается при исследовании сложности некоторых алгоритмов. Так как для всех практически встречающихся чисел значение этой функции меньше пяти, при анализе асимптотики алгоритмов можно принять её за константу.

Ссылки Править


cs:Ackermannova funkcehe:פונקציית אקרמן

hu:Ackermann-függvény nl:Ackermannfunctiepl:Funkcja Ackermannasr:Акерманова функција vi:Hàm số Ackermann

Викия-сеть

Случайная вики