Saltar ao contido

Usuario:PSPX10/Función de Ackermann

Na Galipedia, a Wikipedia en galego.
Wilhelm Ackermann, matemático alemán, creador da Función de Ackermann.

Na teoría da computación, unha función de Ackermann é unha función matemática recursiva atopada en 1926 por Wilhelm Ackermann. Esta función ten un crececemento moi rápido, grazas a isto e relevante na ciencia computacional teórica e a teoría da computabilidad. A día de hoxe existen varias funcións as que se lle denominan funcións de Ackermann, todas elas teñen unha forma semellante a función orixinal e tamén cun crecemento moi rápido. Na súa versión moderna estándar, esta función toma dous números naturais como argumentos e devolve un único número natural, e pódese definir da seguinte maneira:

Propiedades[editar | editar a fonte]

  • Sexa (función recursiva primitiva)
  • Sexa
  • Sexa
  • Sexa

Ademais a función de Ackerman () non é función recursiva primitiva. Isto pódese demostrar facendo unha redución ao absurdo, utilizando o lema de que toda función recursiva primitiva está maiorada por unha función de Ackermann.

Comezamos supoñendo que, por tanto


Usando o lema da maioración, debe existir un k tal que

Pero entón, como isto vale para todo x, tamén valerá para x=k.


, usando a definición, chegamos a que:

O cal é absurdo.

O crecemento desta función e esaxeradamente rápido: o valor A(4,2) xa ten case díxitos. Este crecemento desmesurado podémolo utlizar para probar que a función computable f(n) = A(n, n) crece máis rápido que calquera función recursiva primitiva, e por iso non pode ser recursiva primitiva.

Táboa de valores[editar | editar a fonte]

Números de
m\n 0 1 2 3 4 n
0 1 2 3 4 5 n + 1
1 2 3 4 5 6 n + 2
2 3 5 7 9 11 2n + 3
3 5 13 29 61 125
4 13 65533 A(3, ) A(3, A(4,3)
5 65533 A(4,65533) A(4,A(5,1)) A(4, A(5,2)) A(4,A(5,3))
6 A(5,1) A(5,A(5,1)) A(5,A(6,1)) A(5,A(6,2)) A(5,A(6,3))

A magnitude destes valores e tal, que por exemplo A(4,2) é maior que o número de partículas que forman o universo elevado a potencia de 200, e o valor de A(5,2) non se podería escribir, xa que non entraría no Universo físico. En xeral, por baixo da fila 4 xa non é posible escribir todos os díxitos do resultado da función.

Explicación intuitiva[editar | editar a fonte]

É fácil de ver que a primeira fila da función contén todos os enteiros positivos xa que A(0,n) consiste en facer . O resto das filas pódense ver como indirecciones cara á primeira. No caso de m = 1, rediríxese cara a A(0, n + 1); con todo, a simplificación é algo complicada:

Un exemplo máis complicado sería A(4, 3), o primeiro valor que non cabe no universo físico.

Sabemos que A(2,5) vale 13, entón avería que facer A(3,13), dando 65533. E teríamos que facer A(3, 65533) = x, x é comparable ao número de átomos no Universo elevado a unha potencia de máis de 12. E por último faríamos A(3,x), pero xa non podríamos escribir os díxitos no universo físico.

Este resultado alcánzase, simplemente facendo composicións da única operación que se utiliza, é dicir, o incremento en un dun valor (no cálculo de A(0,n))

Descrición explícita[editar | editar a fonte]

Intuitivamente, a función de Ackermann define a xeneralización de , como sumas iteradas da forma ( con x iteracións), o mesmo coas potencias de forma con produtos iterados da forma (con x iteracións). Así se pode facer a exponenciación iterada (con iteracións das potencias) e así consecutivamente coas seguintes operacións. Pode expresarse de forma concisa e non recursiva mediante a notación de frecha de Conway:

ou os hiper operadores:

Historia[editar | editar a fonte]

A primeira función dobremente recursiva que non é recursiva primitiva foi descuberta por Gabriel Sudan en 1927:


Tanto Sudan como Ackermann eran alumnos de David Hilbert nese entón.


En 1928, Wilhelm Ackermann considerou unha función dobremente recursiva A(m, n, p) de tres variables: m → n → p na notación de Conway. Ackermann demostrou que se trata dunha función recursiva que non é primitiva recursiva. Esa definición foi simplificada por Rózsa Péter e Raphael Robinson á versión de dúas variables. Rozsa Peter tamén demostrou que a dobre recursión non se pode reducir a recursión primitiva (e que de igual forma a tripla recursión non se pode reducir a recursión primitiva e dobre recursión, etc).



Análise de algoritmos[editar | editar a fonte]

Xa vimos antes que a función f(n)= A(n,n) crece moi rápidamente, pola contra a súa inversa crece moi lentamente e utilízase frecuentemente en análise de algoritmos. Nese contexto, non se emprega a función de Ackermann, senón que se substitúe por outra de comportamento asintótico similar. Aínda que o resultado destas variantes non é idéntico ao da función orixinal, pódense ver como similares ao poder limitar a diferenza. No caso da inversa da función diagonal, o seu resultado é inferior a 4 para entradas de practicamente calquera tamaño, de maneira que se asemella a unha función constante.

Medida de comparación[editar | editar a fonte]

Dado que é unha función profundamente recursiva, a función de Ackermann utilízase con frecuencia para comparar compiladores en canto á súa habilidade para optimizar a recursión. Por exemplo, un compilador que sexa capaz de notar que A(3, 30) pódese calcular baseándose en potencias de 2, ou que vai gardando certos resultados intermedios tales como A(3, n) e A(2, n) para non ter que recalcularlos cada vez, aforrando así moito tempo de execución por un factor de 100 ou 1000.Tamén, ao calcular directamente A(1, n) , A(2,n) ou A(3,n) en lugar de facer unha chamada recursiva realízanse aforros significativos.

Pódese calcular o termo A(4, 2), non recursivamente, senón por outros medios.

Véxase tamén[editar | editar a fonte]

Bibliografía[editar | editar a fonte]

  • Ackermann, Wilhelm: Zum Hilbertschen Aufbau der reelen Zahlen. Math. Annalen 99 (1928), pp. 118-133.
  • von Heijenoort, J. (ed.): From Frege to Gödel: A Source Book in Mathematical Logic. Cambridge: Harvard University Press, 1967. Dispoñible en liña.
  • Kozen, Dexter C.: The Design and Analysis of Algorithms. Springer, 1992.
  • Robinson, Raphael M.: Recursion and double recursion. Bull. Amer. Math. Soc., Vol. 54, pp. 987-993.
  • Schöning, Uwe: Theoretische Informatik – kurzgefasst. Spektrum Akademischer. ISBN 3-8274-1099-1
  • Sundblad, Yngve: The Ackermann Function. A Theoretical, Computational, and Formula Manipulative Study. BIT 11 (1971), 107-119.

Enlaces externos[editar | editar a fonte]

[[Categoría:1926]]