Amusez-vous avec Ackermann inverse

11

La fonction inverse d'Ackermann se produit souvent lors de l'analyse des algorithmes. Une excellente présentation en est ici: http://www.gabrielnivasch.org/fun/inverse-ackermann . et [Notation: [x] signifie que nous arrondissons x à l'entier le plus proche, tandis que log ∗ est la fonction de journal itéré discutée ici: http://en.wikipedia.org/wiki/Iterated_logarithm ]

α1(n)=[n/2]
α2(n)=[log2n]
α3(n)=logn
...
αk(n)=1+αk(αk1(n))
α(n)=min{k:αk(n)3}

Ma question est: Quelle est la fonction

k(n)=min{k:αk(n)k}
Clairement 1k(n)α(n) . Quelles limites plus strictes peut-on donner à k(n) ? Est-ce que k(n)logα(n) ?
Dana Moshkovitz
la source
Je sais pourquoi , mais pourriez-vous expliquer pourquoi ? k(n)α(n)k(n)α(n)
jbapple
Ok, édité en non controversé . k(n)<α(n)
Dana Moshkovitz
3
@DanaMoshkovitz: J'ai approximé les définitions en utilisant la hiérarchie Ackermann que je connais: et . Avec une définition typique des fonctions d'Ackermann, . Donc si alors , c'est-à-dire . (J'espère que je n'ai pas fait d'erreur là-dedans.)α(n)=min{k:Ak(1)n}k(n)=min{k:Ak(k)n}Ak+1(1)=Ak(Ak(1))Ak(k)Ak(k)nAk+1(1)nk(n)α(n)1
Sylvain
1
@DanaMoshkovitz: pour clarifier, j'utilise et , qui croît légèrement plus vite que votre définition, par exemple au lieu de . Cela ne devrait cependant pas avoir beaucoup de conséquences: et sont à peu près la même chose. A1(n)=2nAk+1(n)=Akn+1(1)A2(n)=2n+12nα(n)k(n)
Sylvain
1
@DanaMoshkovitz: Je ne vois pas pourquoi . Pour une infinité de valeurs de vous aurez , c'est-à-dire chaque fois que ; parce que croît rapidement, vous avez de plus en plus de telles séquences. Avec vos définitions, il est même possible d'avoir : où mais . k(n)<α(n)nα(n)=k(n)Ak(k)<nAk+1(1)<Ak+1(k+1)Ak+1(1)Ak(k)α(n)<k(n)α2(8)=3>2α(8)=2k(8)=3
Sylvain

Réponses:

12

Soit l'inverse de . . Je prétends que .AkαkA1(x)=2x,A2(x)=2x,k1(x)=Ax(x)

Puisque , et depuis , . Par conséquent, .x=αx(Ax(x))z,αy(z)>αx(z)αy(Ax(x))>αx(Ax(x))=xk(Ax(x))=x

Considérons maintenant la valeur de . Par définition de , il s'agit de . Nous savons que , donc . Je prétends que . . Maintenant , donc . Puisque , , donc . Ainsi,α(k1(n))=α(An(n))αminz{αz(An(n))3}αn(An(n))=nα(An(n))>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(n)3αn+1(An(n))4αn+2(An(n))=1+αn+2(αn+1(n))1+αn+2(4)3.

Donc, nous avons , donc et sont essentiellement égaux.n<α(k1(n))n+2kα

jbapple
la source
9
Et permettez-moi d'ajouter que toutes ces fonctions ne sont que différentes façons compliquées d'écrire le nombre 4.
Sariel Har-Peled
0

Ceci est une erreur; voir les commentaires.

Une fonction très proche de celle-ci était appelée " " et utilisée dans "Splay Trees, Davenport-Schinzel Sequences, and the Deque Conjecture" de Pettie , dans laquelle il montrait que " deque operations [in a splay tree] prend uniquement le temps , où est le nombre minimal d'applications de la fonction Ackermann inverse mappant à une constante. "αnO(nα(n))α(n)n

Cette fonction a une croissance très lente et une croissance plus lente que . Considérez la fonctionlogα(n)f:NN

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

Cette fonction croît à peu près aussi rapidement que , et croît donc plus lentement que . Je vais maintenant évaluer et sur :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)

Puisque , croît beaucoup plus rapidement que .f(n1)ω(2+α(n))logα(n)α(n)

jbapple
la source
Quelle est la relation entre alpha ^ * et k (n)? (notez que dans la définition de k (n) j'utilise la notation alpha_k (n) définie dans le lien que j'avais dans la question)
Dana Moshkovitz
Oh, je suis désolé, j'ai lu votre comme ! αkαk
jbapple