Szybko rosnąca hierarchia

Szybko rosnąca hierarchia również znana jako rozszerzona hierarchia Grzegorczyka, stworzona przez matematyka Andrzeja Grzegorczyka. Używana w teorii obliczalności, teorii złożoności obliczeniowej oraz teorii dowodu[1]. Jest to rodzina zbiorów szybko rosnących funkcji f α : N N {\displaystyle f_{\alpha }\colon \mathbf {N} \to \mathbf {N} } (gdzie N {\displaystyle \mathbf {N} } jest zbiorem liczb naturalnych { 0 , 1 , 2 , } , {\displaystyle \{0,1,2,\dots \},} natomiast α {\displaystyle \alpha } jest jakąś liczbą porządkową). Przykładami członków tej rodziny są hierarchia Wainera lub hierarchia Löba-Wainera, które są rozszerzeniem wszystkich α {\displaystyle \alpha } < ε0. Hierarchie te segregują funkcje obliczalne, bazując na ich tempie wzrostu oraz złożoności obliczeniowej[2].

Definicja i podstawowa hierarchia Grzegorczyka

Niech μ {\displaystyle \mu } będzie dużą liczbą porządkową, taka że dla każdej granicznej liczby porządkowej α < μ {\displaystyle \alpha <\mu } przypisana jest fundamentalna sekwencja (szybko rosnąca sekwencja liczb porządkowych, których supremum jest α {\displaystyle \alpha } ). Szybko rosnąca hierarchia funkcji f α : N N {\displaystyle f_{\alpha }\colon \mathbf {N} \to \mathbf {N} } dla α < μ {\displaystyle \alpha <\mu } zdefiniowana jest następująco:

  • f 0 ( n ) = n + 1 , {\displaystyle f_{0}(n)=n+1,}
  • f α + 1 ( n ) = f α n ( n ) , {\displaystyle f_{\alpha +1}(n)=f_{\alpha }^{n}(n),}
  • f α ( n ) = f α [ n ] ( n ) , {\displaystyle f_{\alpha }(n)=f_{\alpha [n]}(n),} jeśli α {\displaystyle \alpha } jest graniczną liczbą porządkową.

Tutaj f α n ( n ) = f α ( f α ( ( f α ( n ) ) ) ) , {\displaystyle f_{\alpha }^{n}(n)=f_{\alpha }(f_{\alpha }(\dots (f_{\alpha }(n))\dots )),} określa n {\displaystyle n} -tą iterację f α {\displaystyle f_{\alpha }} nad argumentem n , {\displaystyle n,} natomiast α [ n ] {\displaystyle \alpha [n]} oznacza n {\displaystyle n} -ty element zbioru fundamentalnego przypisanego dla liczby porządkowej α . {\displaystyle \alpha .}

Początkowa część tej hierarchii, tzn. wszystkie funkcje f α , {\displaystyle f_{\alpha },} gdzie α {\displaystyle \alpha } jest liczbą naturalną ( α < ω ) {\displaystyle (\alpha <\omega )} nazywana jest często podstawową hierarchią Grzegorczyka, gdyż ma z nią wiele wspólnych właściwości:

Hierarchia Grzegorczyka[3][4]

Zdefiniowane są funkcje E i , {\displaystyle E_{i},} gdzie i {\displaystyle i} jest liczbą naturalną. Zdefiniowane jest E 0 ( x , y ) = x + y {\displaystyle E_{0}(x,y)=x+y} i E 1 ( x ) = x 2 + 2 {\displaystyle E_{1}(x)=x^{2}+2} itd.[5] E 0 {\displaystyle E_{0}} jest funkcją dodawania, E 1 {\displaystyle E_{1}} jest funkcją dwuargumentową, która podnosi parametr do kwadratu, po czym zwiększa wynik o 2. Dla n {\displaystyle n} większych od 1 definiujemy: E n ( x ) = E n 1 x ( 2 ) , {\displaystyle E_{n}(x)=E_{n-1}^{x}(2),} czyli x {\displaystyle x} -owa iteracja funkcji E n 1 {\displaystyle E_{n-1}} z podanym argumentem 2. Dalej zdefiniowany jest E n , {\displaystyle {\mathcal {E}}^{n},} który można zapisać jako funkcję f n {\displaystyle f_{n}} [6].

Przykłady

Zapis w szybko rosnącej hierarchii Wartość
f 0 ( 1 ) {\displaystyle f_{0}(1)} 1 + 1 = 2 {\displaystyle 1+1=2}
f 0 ( 3 ) {\displaystyle f_{0}(3)} 3 + 1 = 4 {\displaystyle 3+1=4}
f 1 ( 3 ) {\displaystyle f_{1}(3)} f 0 3 ( 3 ) = f 0 ( f 0 ( f 0 ( 3 ) ) ) = f 0 ( f 0 ( 4 ) ) = f 0 ( 5 ) = 6 {\displaystyle f_{0}^{3}(3)=f_{0}(f_{0}(f_{0}(3)))=f_{0}(f_{0}(4))=f_{0}(5)=6}
f 2 ( 3 ) {\displaystyle f_{2}(3)} f 1 3 ( 3 ) = 2 × ( 2 × ( 2 × 3 ) ) = 24 {\displaystyle f_{1}^{3}(3)=2\times (2\times (2\times 3))=24}
f 3 ( 3 ) {\displaystyle f_{3}(3)} f 2 3 ( 3 ) = f 2 ( f 2 ( 2 3 × 3 ) ) = f 2 ( 2 24 × 24 ) = 2 ( 2 24 × 24 ) × 2 24 × 24 , {\displaystyle f_{2}^{3}(3)=f_{2}(f_{2}(2^{3}\times 3))=f_{2}(2^{24}\times 24)=2^{(2^{24}\times 24)}\times 2^{24}\times 24,} wynik ma ponad 121 milionów cyfr.

Z przykładu numer trzy można wysnuć zasadę: f 1 ( n ) = 2 n , {\displaystyle f_{1}(n)=2n,} natomiast z przykładu numer cztery f 2 ( n ) = 2 n n . {\displaystyle f_{2}(n)=2^{n}n.}

Dla funkcji typu f k ( n ) {\displaystyle f_{k}(n)} można powiedzieć, że wyniki są porównywalne (zazwyczaj większe) do 2 n 1 n {\displaystyle 2\uparrow ^{n-1}n} co wynika z rekurencji kolejnych funkcji.

Liczby porządkowe do ε 0 {\displaystyle \varepsilon _{0}}

Pierwszą liczbą porządkową w szybko rosnącej hierarchii jest ω {\displaystyle \omega } mająca do siebie przypisany zbiór { 1 , 2 , 3 , 4 , 5 , } , {\displaystyle \{1,2,3,4,5,\dots \},} tzn. ω [ n ] = n [ n ] {\displaystyle \omega [n]=n[n]} ( n {\displaystyle n} -ty element zbioru). Przykład: f ω ( 3 ) = f 3 ( 3 ) . {\displaystyle f_{\omega }(3)=f_{3}(3).} Funkcja f ω ( n ) {\displaystyle f_{\omega }(n)} przewyższa każdą funkcję f i ( n ) {\displaystyle f_{i}(n)} dla i < n {\displaystyle i<n} [7][8].

Koleją liczbą porządkową jest ω + 1 , {\displaystyle \omega +1,} czyli zbiór: { 0 , 1 , 2 , 3 , 4 , } { ω } , {\displaystyle \{0,1,2,3,4,\dots \}\cup \{\omega \},} funkcję z tą liczbą porządkową definiujemy następująco: f ω + 1 ( n ) = f ω n ( n ) , {\displaystyle f_{\omega +1}(n)=f_{\omega }^{n}(n),} na przykład f ω + 1 ( 2 ) = f ω ( f ω ( 2 ) ) = f ω ( f 2 ( 2 ) ) = f ω ( 8 ) = f 8 ( 8 ) > 2 7 8 > g ( 1 ) . {\displaystyle f_{\omega +1}(2)=f_{\omega }(f_{\omega }(2))=f_{\omega }(f_{2}(2))=f_{\omega }(8)=f_{8}(8)>2\uparrow ^{7}8>g(1).}

Dalej jest kolejno: f ω + 2 ( n ) = f ω + 1 n ( n ) , {\displaystyle f_{\omega +2}(n)=f_{\omega +1}^{n}(n),} np.: f ω + 2 ( 2 ) = f ω + 1 ( f ω + 1 ( 2 ) ) = f ω + 1 ( f 8 ( 8 ) ) = f ω 8 ( 8 ) g ( f 8 ( 8 ) ) > G , {\displaystyle f_{\omega +2}(2)=f_{\omega +1}(f_{\omega +1}(2))=f_{\omega +1}(f_{8}(8))=f_{\omega }^{8}(8)\approx g(f_{8}(8))>G,} oznacza to, że liczba Grahama wynosi około f ω + 1 ( 64 ) , {\displaystyle f_{\omega +1}(64),} które jest znacznie mniejsze od f ω + 2 ( 2 ) . {\displaystyle f_{\omega +2}(2).} Obliczanie kolejnych liczb naturalnych dodanych do ω {\displaystyle \omega } przebiega podobnie.

Kolejnym zbiorem jest: { ω + 1 , ω + 2 , ω + 3 , , ω + ω } = ω 2. {\displaystyle \{\omega +1,\omega +2,\omega +3,\dots ,\omega +\omega \}=\omega 2.} Obliczanie z użyciem tego zbioru wygląda następująco: f ω 2 ( n ) = f ω + n ( n ) , {\displaystyle f_{\omega 2}(n)=f_{\omega +n}(n),} np. f ω 2 ( 2 ) = f ω + 2 ( 2 ) = f ω 8 ( 8 ) g ( f 8 ( 8 ) ) > G . {\displaystyle f_{\omega 2}(2)=f_{\omega +2}(2)=f_{\omega }^{8}(8)\approx g(f_{8}(8))>G.} Kolejnym zbiorem możliwym do utworzenia jest ω 3 : {\displaystyle \omega 3{:}} f ω 3 ( 2 ) = f ω 2 + ω ( 2 ) = f ω 2 + 2 ( 2 ) = f ω 2 + 1 2 ( 2 ) {\displaystyle f_{\omega 3}(2)=f_{\omega 2+\omega }(2)=f_{\omega 2+2}(2)=f_{\omega 2+1}^{2}(2)} itd. Podobnie postępuje się z ω 4 , {\displaystyle \omega 4,} ω 5 {\displaystyle \omega 5} itd.

Następnym zbiorem jest: { ω 1 , ω 2 , ω 3 , , ω ω } = ω 2 , {\displaystyle \{\omega 1,\omega 2,\omega 3,\dots ,\omega \omega \}=\omega ^{2},} przykład: f ω 2 ( 2 ) = f ω ω ( 2 ) = f ω 2 ( 2 ) . {\displaystyle f_{\omega ^{2}}(2)=f_{\omega \omega }(2)=f_{\omega 2}(2).} Kolejno zamiast 2 można podstawić większe liczby porządkowe: f ω 3 ( 2 ) = f ω 2 × ω ( 2 ) = f ω 2 × 2 ( 2 ) = f ω 2 + ω 2 ( 2 ) = f ω 2 + ω + 2 ( 2 ) = f ω 2 + ω + 1 2 ( 2 ) . {\displaystyle f_{\omega ^{3}}(2)=f_{\omega ^{2}\times \omega }(2)=f_{\omega ^{2}\times 2}(2)=f_{\omega ^{2}+\omega ^{2}}(2)=f_{\omega ^{2}+\omega +2}(2)=f_{\omega ^{2}+\omega +1}^{2}(2).}

Kolejnym zbiorem jest: { ω , ω 2 , ω 3 , ω 4 , , ω ω } {\displaystyle \{\omega ,\omega ^{2},\omega ^{3},\omega ^{4},\dots ,\omega ^{\omega }\}} będące ω ω . {\displaystyle \omega ^{\omega }.} Możliwe jest tworzenie kolejnych zbiorów takich jak ω ω 2 , {\displaystyle \omega ^{\omega 2},} ω ω 2 , {\displaystyle \omega ^{\omega ^{2}},} ω ω ω . {\displaystyle \omega ^{\omega ^{\omega }}.} Zbiór ω ω ω ω {\displaystyle \omega ^{\omega ^{\omega ^{\omega ^{\dots }}}}} jest odpowiednikiem ε 0 , {\displaystyle \varepsilon _{0},} które jest jednocześnie ostatnią liczbą porządkową Hierarchii Grzegorczyka[5][6].

Szacowanie tempa wzrostu funkcji

Każdą obliczalną funkcję można przybliżyć szybką rosnącą hierarchią przy użyciu odpowiednich funkcji. Przykładem może być funkcja Grahama, którą można zapisać jako g ( n ) f ω + 1 ( n ) , {\displaystyle g(n)\approx f_{\omega +1}(n),} funkcja Ackermanna, która rośnie nieco wolniej A c k ( n ) f ω ( n ) , {\displaystyle Ack(n)\approx f_{\omega }(n),} czy funkcja Goodsteina, której tempo wzrostu wynosi ε 0 . {\displaystyle \varepsilon _{0}.}

Używając szybko rosnącej hierarchii, można ustalić także górną granicę danej notacji, czyli odpowiadające im miejsce w szybko rosnącej hierarchii, które wyznaczają granicę rekurencyjną danej notacji:

Przypisy

  1. BuchholzB. Wainer BuchholzB., Provably Computable Functions and the Fast Growing Hierarchy, 1987 .
  2. SchmidtS. Diana SchmidtS., Built-Up Systems of Fundamental Sequences and Hierarchies of Number-Theoretical Functions .
  3. Unrelated Numbers [online], PlantStar’s Large Numbers, 2 lutego 2018 [dostęp 2020-04-22]  (ang.).
  4. Czego informatycy nauczyli się of Andrzeja Grzegorczyka? [online], 2012 [dostęp 2020-04-22] [zarchiwizowane z adresu 2020-03-20] .
  5. a b CichonC. E. CichonC., The slow-growing and the Grzegorczyk hierarchies, The Journal of Symbolic Logic, 1983, ISSN 0022-4812 .
  6. a b Jean-YvesJ.Y. Girard Jean-YvesJ.Y., Π12-logic. I. Dilators, Annals of Mathematical Logic, 1981, DOI: 10.1016/0003-4843(81)90016-4, ISSN 0003-4843 .
  7. M.H.M.H. Löb M.H.M.H., Wainer, Hierarchies of number theoretic functions, 1970, DOI: 10.1007/BF01967649 .
  8. H.J.H.J. Prömel H.J.H.J., W.W. Thumser W.W., B.B. Voigt B.B., Fast growing functions based on Ramsey theorems, Discrete Mathematics, 1991, DOI: 10.1016/0012-365X(91)90346-4 .
  9. The Fast Growing Hierarchy, dostęp 15 marca 2021.