5 votos

Matemáticamente, ¿cómo se encuentra el valor de la función de Ackermann en términos de n para un m dado?

Mirando la página de Wikipedia, está el tabla de valores para entradas de funciones pequeñas. Entiendo cómo se calculan los valores mirando la tabla, y cómo es fácil ver que 5,13,29,61,125 es $2^{n+3}-3$ Pero, ¿cómo se puede calcular esta fórmula "iterativa" sin identificación de patrones?

Empecé por considerar que 61 (Ackermann 3,3) es $2*(2*(2*(2*1+3)+3)+3)+3$ que lo único que estoy haciendo es ampliar la fórmula recursiva, pero no tengo ni idea de que se simplifique para crear $2^{n+3}-3$ en lugar de limitarse a observar los patrones. No se trata de una tarea, sino de curiosidad.

0 votos

La prueba es bastante larga... Una vez la hice como ejercicio, aunque dudo que pueda encontrar el papel que utilicé. Es bastante fácil demostrar la relación entre los hiperoperadores y la función de Ackermann con un poco de trabajo. La idea básica es utilizar un poco de lógica básica y observar lo que sucede a medida que continúas iterando algo, ya que te metes en bucles repetitivos claros que no se pueden resolver fácilmente a mano. Además, es vital utilizar el resultado para $m-1$ simplificar $m$ en cualquier espacio razonable

0 votos

@BrevanEllefsen No, la prueba no es que mente largo. Lo único que realmente necesita es la última parte de su respuesta a continuación para el hiperoperador general.

0 votos

@SimplyBeautifulArt jaja, cuando se me ocurrió esta prueba hace dos veranos me pareció horriblemente larga.... He avanzado mucho desde entonces XD

4voto

Brevan Ellefsen Puntos 3175

$$A(0,n) = n+1 \;\text{(by definition)}$$ $$----------------------------------------------$$ $$A(1,n) \rightarrow A(0,A(1,n-1)) \rightarrow A(1,n-1)+1 \rightarrow A(1,n-2)+2\Rightarrow A(1,0)+n$$ $$\rightarrow A(0,1)+n \rightarrow 2+n = \color{red}{2+(n+3)-3}$$ $$----------------------------------------------$$ $$A(2,n) \rightarrow A(1,A(2,n-1)) \rightarrow A(2,n-1)+2 \rightarrow A(2,n-2)+4 \Rightarrow A(2,0)+2n$$ $$\rightarrow A(1,1)+2n \rightarrow 2n+3 = \color{red}{2(n+3)-3}$$ $$----------------------------------------------$$ $$A(3,n) \rightarrow A(2,A(3,n-1)) \rightarrow 2(A(3,n-1)+3)-3 \rightarrow 4(A(3,n-2)+3)-3 $$ $$\Rightarrow 2^n(A(3,0)+3)-3 \rightarrow 2^n(A(2,1)+3)-3 = 2^n(2^3)-3 = \color{red}{2^{n+3}-3} $$ $$----------------------------------------------$$ $$A(4,n) \rightarrow A(3,A(4,n-1)) \rightarrow 2^{A(4,n-1)+3}-3 \rightarrow 2^{2^{A(4,n-2)+3}}-3 \rightarrow 2^{2^{2^{A(4,n-3)+3}}}-3 $$ $$\Rightarrow\,(^{n}2)^{A(4,0)+3}-3 \rightarrow (^{n}2)^{A(3,1)+3}-3 \rightarrow (^{n}2)^{2^3}-3 \,=\, \color{red}{{^{n+3}}2-3}$$ $$----------------------------------------------$$ $$\text{Assume}\;A(m,n) = 2[m](n+3)-3,\; \text{and note} \;2[m]2=4 \;\forall m>0$$ $$A(m+1,0) \rightarrow A(m,1) \rightarrow 2[m]4-3 = 2[m](2[m]2)-3 = \color{red}{2[m+1]3-3}$$ $$A(m+1,n+1) \rightarrow A(m,A(m+1,n)) \rightarrow 2[m](2[m+1](n+3)-3+3)-3\\ = 2[m](2[m+1](n+3))-3 = \color{red}{2[m+1](n+4)-3}$$ $$\mathbf{QED}$$ $$----------------------------------------------$$ Nota: una sola flecha a la derecha representa una sola iteración de la función de Ackermann, y una flecha doble representa muchas (normalmente $n$ iteraciones)

0 votos

Gracias. Creo que esto va por buen camino para mi respuesta. ¿Hay alguna forma de que puedas mostrar cómo se encuentran las hiperoperaciones de alguna manera convirtiendo la definición recursiva de la función en una iterativa? En otras palabras, ¿cómo se llega de $2n+3$ a $2^{n+3}-3$ ?

0 votos

@rb612 ¿Le importaría especificar a qué se refiere con iterativo? ¿Te refieres a una prueba iterativa de lo que tengo arriba para dar cuenta de todos los $m$ ¿o una prueba utilizando una definición iterativa de la función de Ackermann?

0 votos

Lo siento, puede que no sea el término correcto, pero en mi pregunta estaba tratando de convertir de alguna manera ackermann 3,3 escrito en una función no recursiva.

2voto

user Puntos 2963

A partir de la definición de la función de Ackerman, tenemos

\begin {align*} A(3, n) &= A(2, A(3, n - 1)) \end {align*}

Ahora $A(2, b)$ se puede calcular (al menos a partir de la tabla de valores) que es $2b + 3$ Así que nos encontramos con

$$A(3, n) = 2A(3, n - 1) + 3$$

Esto da lugar a una secuencia recursiva; llamando a $A(3, n) = x_n$ tenemos la relación

$$x_n = 2x_{n - 1} + 3$$ Esto se puede resolver directamente (usando, por supuesto, una condición inicial) o sustituyendo la conjetura del patrón; de cualquier manera, es lo que escribiste.


Ahora todo lo que hice fue transferir el problema a una fila diferente de la tabla. Vamos a estudiar $A(2, n)$ de la misma manera: Tenemos

$$A(2, n) = A(1, A(2, n - 1))$$

A partir de la tabla, tenemos que $A(1, b) = b + 2$ , dando lugar a la recursión

$$y_n = y_{n - 1} + 2$$ Esto da exactamente la solución $y_n = 2n + 3$ cuando se calcula la condición inicial.


Pero, de nuevo, esto tiene el mismo problema: acabo de utilizar un diferentes fila previamente conocida. Hagamos esto una vez más:

$$A(1, n) = A(0, A(1, n - 1))$$

Pero ahora estamos de suerte. Por definición $A(0, b) = b = 1$ Así que

$$A(1, n) = A(1, n - 1) + 1$$

Esta es una recurrencia fácil de resolver. La condición $A(1, 0) = 1$ nos da la base, y encontramos

$$\boxed{A(1, n) = n + 1}$$


Así que ahora pongamos todo junto, al revés. Obtenemos $A(1, n)$ casi directamente de la definición de la función de Ackermann. Entonces obtenemos $A(2, n)$ de una relación de recurrencia que redujo $A(2, n)$ para estudiar $A(1, A(2, n - 1))$ . Entonces podemos obtener $A(3, n)$ de un proceso similar.

0 votos

Ah, ¡gracias por su respuesta! Esto tiene mucho sentido para mí. El problema que estoy teniendo es entonces cómo la exponenciación y, finalmente, tetration se calcula. Entiendo cómo se define de forma recursiva, pero trabajando para definir de forma iterativa que estoy teniendo problemas con.

0 votos

@rb612 Tal vez haya más perspicacia en la próxima generación, entonces. Tenemos $A(3, b) \approx 2^{n} b$ (considerando sólo los términos más importantes). Así que $$A(4, n) = A(3, A(4, n - 1)) \approx 2^{A(4, n - 1)} \approx 2^{2^{A(4, n - 2)}} \approx \cdots$$ Por supuesto, $\approx$ se utiliza aquí con profusión (y deberías averiguar los detalles). Pero el punto es que cada paso de la recursión se pega $A$ un peldaño más en una torre de $2$ que es exactamente lo que se espera.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X