Divertimento con Ackermann inverso


11

La funzione inversa di Ackermann si verifica spesso durante l'analisi degli algoritmi. Una grande presentazione di questo è qui: http://www.gabrielnivasch.org/fun/inverse-ackermann .

α1(n)=[n/2]
e [Notazione: [x] significa che arrotondiamo x all'intero più vicino, mentre log ∗ è la funzione di log iterata discussa qui:
α2(n)=[log2n]
α3(n)=logn
...
αk(n)=1+αk(αk1(n))
α(n)=min{k:αk(n)3}
http://en.wikipedia.org/wiki/Iterated_logarithm ]

La mia domanda è: qual è la funzione Chiaramente 1 \ ll k (n) \ leq \ alpha (n) . Quali limiti più stretti si possono dare su k (n) ? È k (n) \ leq \ log \ alpha (n) ?1 k ( n ) α ( n ) k ( n ) k ( n ) log α ( n )

k(n)=min{k:αk(n)k}
1k(n)α(n)k(n)k(n)logα(n)

So perché , ma potresti spiegare perché ? k ( n ) α ( n )k(n)α(n)k(n)α(n)
jbapple

Ok, modificato nell'incontestante . k(n)<α(n)
Dana Moshkovitz,

3
@DanaMoshkovitz: ho approssimato le definizioni usando la gerarchia di Ackermann con cui ho familiarità: e . Con una definizione tipica delle funzioni di Ackermann, . Quindi se allora , cioè . (Spero di non aver fatto un errore lì dentro.)k ( n ) = min { k : A k ( k ) n } A k + 1 ( 1 ) = A k ( A k ( 1 ) ) A k ( k ) A k ( kα(n)=min{k:Ak(1)n}k(n)=min{k:Ak(k)n}Ak+1(1)=Ak(Ak(1))Ak(k)A k + 1 ( 1 ) n k ( n ) α ( n ) - 1Ak(k)nAk+1(1)nk(n)α(n)1
Sylvain,

1
@DanaMoshkovitz: per chiarire, sto usando e , che cresce leggermente più velocemente della tua definizione, ad es. invece di . Non dovrebbe avere molte conseguenze, tuttavia: e sono praticamente la stessa cosa. A k + 1 ( n ) = A n + 1 k ( 1 ) A 2 ( n ) = 2 n + 1 2 n α ( n ) k ( n )A1(n)=2nAk+1(n)=Akn+1(1)A2(n)=2n+12nα(n)k(n)
Sylvain,

1
@DanaMoshkovitz: non vedo perché . Per infiniti valori di avrai , cioè ogni volta che ; poiché cresce rapidamente, hai sequenze sempre più lunghe. Con le tue definizioni è persino possibile avere : quindi ma . n α ( n ) = k ( n ) A k ( k ) < n A k + 1 ( 1 ) < A k + 1 ( k + 1 ) A k + 1 ( 1 ) - A k ( k ) α ( n )k(n)<α(n)nα(n)=k(n)Ak(k)<nAk+1(1)<Ak+1(k+1)Ak+1(1)Ak(k)α 2 ( 8 ) = 3 > 2 α ( 8 ) = 2 k ( 8 ) = 3α(n)<k(n)α2(8)=3>2α(8)=2k(8)=3
Sylvain,

Risposte:


12

Lascia che sia l'inverso di . . Dichiaro che .α k A 1 ( x ) = 2 x , A 2 ( x ) = 2 x , k - 1 ( x ) = A x ( x )AkαkA1(x)=2x,A2(x)=2x,k1(x)=Ax(x)

Poiché e , . Di conseguenza .z , α y ( z ) > α x ( z ) α y ( A x ( x ) ) > α x ( A x ( x ) ) = x k ( A x ( x ) ) = xx=αx(Ax(x))z,αy(z)>αx(z)αy(Ax(x))>αx(Ax(x))=xk(Ax(x))=x

Ora considera il valore di . Per definizione di , questo è . Sappiamo che , quindi . Dichiaro che . . Ora , quindi . Poiché , , quindi . Pertanto,α min z { α z ( A n ( n ) ) 3 } α n ( A n ( n ) ) = n α ( A n ( n ) ) > n α ( A n ( nα(k1(n))=α(An(n))αminz{αz(An(n))3}αn(An(n))=nα(An(n))>nα n + 1 ( A n ( n ) ) = 1 + α n + 1 ( n ) α ( n ) = min z { α z ( n ) 3 } α α ( n ) ( n ) 3 n + 1 > α ( n )α(An(n))n+2αn+1(An(n))=1+αn+1(n)α(n)=minz{αz(n)3}αα(n)(n)3n+1>α(n)α n + 1 ( A n ( n ) ) 4 α n + 2 ( A n ( n ) ) = 1 + α n + 2 ( α n + 1 ( n ) ) 1 + α n + 2 ( 4 ) 3αn+1(n)3αn+1(An(n))4αn+2(An(n))=1+αn+2(αn+1(n))1+αn+2(4)3.

Quindi, abbiamo , quindi e sono sostanzialmente uguali.k αn<α(k1(n))n+2kα


9
E lasciatemi aggiungere che tutte queste funzioni sono solo modi complicati di scrivere il numero 4.
Sariel Har-Peled,

0

Questo non è corretto; vedi i commenti.

Una funzione molto vicina a questa era chiamata " " e usata in "Splay Trees di Pettie, Davenport-Schinzel Sequences e Deque Conjecture" , in cui mostrava che " operazioni di deque [in un albero di splay] prendono solo tempo, dove è il numero minimo di applicazioni della funzione inversa-Ackermann che mappa su una costante. " n O ( n α ( n ) ) α ( n ) nαnO(nα(n))α(n)n

Questa funzione ha una crescita molto lenta e una crescita più lenta di . Considera la funzionef : NNlogα(n)f:NN

f(n)={1 n = 02f(n1) n > 0

Questa funzione sta crescendo all'incirca quanto , quindi cresce più lentamente di . Ora valuterò e su :A ( n ) = A ( n , n ) log α ( n ) α ( n ) A ( f ( n ) )A(4,n)A(n)=A(n,n)logα(n)α(n)A(f(n))

logα(A(f(n)))=logf(n)=f(n1)

α(A(f(n)))=1+α(f(n))<1+α(A(n))<2+α(n)

Poiché , il log α ( n ) sta crescendo molto più velocemente di α ( n ) .f(n1)ω(2+α(n))logα(n)α(n)


Qual è la relazione tra alpha ^ * e k (n)? (nota che nella definizione di k (n) uso la notazione alpha_k (n) definita nel link che avevo nella domanda)
Dana Moshkovitz

Oh, mi dispiace, ho letto il tuo come α k ! αkαk
jbapple
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.