Usuario:PSPX10/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]
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]
O Galilibros ten un manual sobre: PSPX10/Función de Ackermann |
[[Categoría:1926]]