Funzione di Ackermann
Da Wikipedia, l'enciclopedia libera.
Questa voce è solo un abbozzo (stub). Se puoi, contribuisci adesso a migliorarla secondo le convenzioni di Wikipedia. Per l'elenco completo degli stub di matematica, vedi la relativa categoria.
La funzione di Ackermann è una funzione f(x,y,x) che ha come dominio l'insieme delle terne di numeri naturali e come codominio i numeri naturali. Essa è definita per ricorrenza nel seguente modo:
- f(0,0,y) = y
- f(0,x + 1,y) = f(0,x,y) + 1
- f(1,0,y) = 0
- f(z + 2,0,y) = 1
- f(z + 1,x + 1,y) = f(z,(f(z + 1,x,y)),y)
La funzione di Ackermann è un esempio di funzione ricorsiva che non è primitiva ricorsiva poiché cresce più velocemente di qualsiasi funzione ricorsiva primitiva.
Il meccanismo di calcolo della funzione è estremamente semplice quanto pesante dal punto di vista computazionale. La definizione data può essere vista come quella di una famiglia di funzioni al variare di un parametro individuato dalla prima variabile. Per ogni valore del parametro si ha una funzione che è ottenuta iterando la funzione precedente per un numero di volte individuato dalla seconda variabile. In quest'ottica le prime funzioni della famiglia sono funzioni familiari come l' addizione, la moltiplicazione e la potenza, e successivamente si hanno funzioni sempre più complesse:
- f(0,x,y) = x + y
- (mediante iterazione di y + y per x volte)
- f(2,x,y) = yx (mediante iterazione di per x volte)
- (x volte)(mediante iterazione di yy per x volte e quindi mediante iterazione di e quindi mediante iterazione di x+y)
Risulta quindi una funzione con una complessità estremamente elevata anche per valori di input semplici: ad esempio (un valore non calcolabile da un normale computer...)