[[분류:수학]] [include(틀:다른 뜻1, other1=f 또는 g 또는 h를 보편적인 이름으로 하는 수학 개념, rd1=함수)] [목차] == 개요 == [[큰 수]]들의 크기를 비교할 때 쓰이는 계층구조.[* 이름부터 Fast Growing '''hierarchy'''(고속 성장하는 '''계층구조''')다.] FGH는 커지면 커질수록 뭔가가 더 붙는 다른 큰 수 함수들과는 다르게[* 대신 서수의 정의가 조금씩 더 복잡해지긴 한다.] 간결하고 매우 강력하여 큰 수들을 비교할때 요긴하게 쓰인다. == 정의 및 설명 == Fast-growing hierarchy[* 한국어로 번역하자면 "급성장 계층" 정도가 된다.]는 서수 [math(\mu)]와 기본 수열(fundamental sequence)[* 극한서수를 이루는 더 작은 서수들의 표준적인 수열] [math(S:\mu\cap\text{Lim}\rightarrow(\mathbb{N}\rightarrow\mu))][* [math(S(\alpha)(n))]은 편의상 [math(\alpha[n])]으로 나타내고, [math(\text{Lim})]는 극한서수의 모임이다.]로 구성된다. 1. [math( f_0(n) = n+1 )] 1. [[서수(수학)|서수]] [math( \alpha )]에 대해, [math( f_{\alpha +1}(n) = f_{\alpha}^n (n) )] 1. [math( \alpha )]가 극한서수라면, [math( f_{\alpha}(n) = f_{\alpha [n]}(n) )] 이해를 돕기 위해서 정의를 풀어서 다시 쓰면 다음과 같다. 1. 서수 0에 해당하는 함수는 '다음 수'라는 연산이다. 1. 서수가 다른 서수 [math(\alpha)]의 다음 서수인 경우, [math(\alpha)]에 대응하는 함수를 [math(n)]번 합성한다. 1. 서수가 더 작은 서수들의 극한서수인 경우, 기본 수열에서 [math(n)]번째 서수를 대입한다. 각 단계는 하나의 함수를 가리킨다. 정의 (2)에 의해서 n이 2 이상이라는 전제 하에 같은 서수에 더 큰 n을 집어넣는 것보다 더 큰 서수를 넣는 것이 결과값을 훨씬 크게 만든다. 서수가 조금만 커져도 우주 원자 수 정도는 가뿐히 넘는다. 대신 2를 대입한다면 정의 (3)에 의한 극한서수의 효과가 잘 나타나지 않기 때문에 n에 3을 대입하는 경우가 많다. 자세한 사항은 [[#왜 3이 기준인가?|왜 3이 기준인가?]] 문단을 참고하면 된다. == FGH의 기본 수열 == 상술했듯 FGH에서 [[서수(수학)#초한서수|초한서수]]를 이용하기 위해서는 기본 수열을 명시하지 않았을 때 [math(\alpha[n])]이 무엇인지 알 수가 없기 때문에 반드시 그 서수들의 기본 수열을 정의해야 한다.[* 예를 들어, [math(\{1,2939,\omega,\omega+1,\omega+2,....\})]의 극한서수나 [math(\{\omega+1,\omega+2,\omega+3,....\})]의 극한서수나 똑같은 [math(\omega2)]이다. 표준적인 수열을 정의해 놓지 않는다면 [math(\omega2[2])]는 [math(2939)]나 [math(\omega+2)]가 모두 가능하게 된다.] 따라서 표준적인 FGH에서는 기본 수열을 아래와 같이 정한다. === 웨이너 계층(Wainer hierarchy) === 이 문서에서 쓰일 작은 가산서수의 기본 수열이다. 1.[math(\omega[n]=n)] 1.[math(\omega^{\alpha + 1}[n] = \omega^\alpha n)] 1.[math(\omega^{\alpha}[n] = \omega^{\alpha[n]})] ([math(\alpha)]가 극한서수일 경우.) 1.[math((\omega^{\alpha_1} + \omega^{\alpha_2} + \cdots + \omega^{\alpha_{k - 1}} + \omega^{\alpha_k})[n] = \omega^{\alpha_1} + \omega^{\alpha_2} + \cdots + \omega^{\alpha_{k - 1}} + \omega^{\alpha_k}[n])] (단, [math(\alpha_ 1 \geq \alpha_2 \geq \cdots \geq \alpha_{k - 1} \geq \alpha_k)]) 1.[math(\epsilon_0[0]=0)] 1.[math(\epsilon_0[n+1]=\omega^{\epsilon_0[n]})] 이 기본 수열을 이용해서 칸토어 일반형(Cantor normal form)으로 이루어진 서수의 FGH를 계산 할 수 있다. 예를 들어, [math(f_{\omega^{\omega+1}+\omega^\omega}(3))]은 다음과 같이 계산된다. [math(f_{\omega^{\omega+1}+\omega^\omega}(3))] [math(=f_{(\omega^{\omega+1}+\omega^\omega)[3]}(3))] [math(=f_{\omega^{\omega+1}+\omega^\omega[3]}(3))] (4번 규칙 적용) [math(=f_{\omega^{\omega+1}+\omega^3[3]}(3))] (3번 규칙 적용) [math(=f_{\omega^{\omega+1}+\omega^23}(3))] (2번 규칙 적용) [math(=f_{\omega^{\omega+1}+\omega^22+\omega^2[3]}(3))] (전개) [math(=f_{(\omega^{\omega+1}+\omega^22+\omega3)[3]}(3))] (2번 규칙 적용) [math(=f_{(\omega^{\omega+1}+\omega^22+\omega2+\omega)[3]}(3))] (전개) [math(=f_{\omega^{\omega+1}+\omega^22+\omega2+\omega[3]}(3))] (4번 규칙 적용) [math(=f_{\omega^{\omega+1}+\omega^22+\omega2+3}(3))] (1번 규칙 적용) === [[서수(수학)/큰 가산서수 #s-4|베블런 함수]](Veblen function) === 베블런 함수의 기본 수열이다. [math(z)]는0으로 이루어진 문자열이다. *[math((\varphi(s_1)+\varphi(s_2)+\cdots+\varphi(s_k))[n]=\varphi(s_1)+\varphi(s_2)+\cdots+\varphi(s_k)[n])] *[math(\varphi(\gamma)[n]=\left\{\begin{array}{lcr} n \quad \text{if} \quad \gamma=1\\ \varphi(\gamma-1)\cdot n \quad \text{if} \quad \gamma \quad \text{is a successor ordinal}\\ \varphi(\gamma[n]) \quad \text{if} \quad \gamma \quad \text{is a limit ordinal}\\ \end{array}\right.)] *[math(\varphi(s,\beta,z,0)[0]=0)], [math(\varphi(s,\beta,z,0)[n+1]=\varphi(s,\beta-1,\varphi(s,\beta,z,0)[n],z))][* [math(\beta)]가 따름서수일 경우.] *[math(\varphi(s,\beta,z,\gamma)[0]=\varphi(s,\beta,z,\gamma-1)+1)], [math(\varphi(s,\beta,z,\gamma)[n+1]=\varphi(s,\beta-1,\varphi(s,\beta,z,\gamma)[n],z))][* [math(\gamma,\beta)]가 따름서수일 경우.] *[math(\varphi(s,\beta,z,\gamma)[n]=\varphi(s,\beta,z,\gamma[n]))][* [math(\gamma)]가 극한서수일 경우.] *[math(\varphi(s,\beta,z,0)[n]=\varphi(s,\beta[n],z,0))][* [math(\beta)]가 극한서수일 경우.] *[math(\varphi(s,\beta,z,\gamma)[n]=\varphi(s,\beta[n],\varphi(s,\beta,z,\gamma-1)+1,z))][* [math(\gamma)]가 따름서수이고 [math(\beta)]가 극한서수일 경우.] === [[서수(수학)/큰 가산서수#s-5|서수 붕괴 함수]](Ordinal collapsing function) === [include(틀:상세 내용, 문서명=서수(수학)/큰 가산서수, 문단=5)] 큰 가산서수 항목에는 TFBO(Takeuti-Feferman-Buchholz ordinal)까지만 서술되어 있는데 그 이후의 표기법도 상당히 많지만 간단하게 어떤 표기법이 쓰여졌는지만 서술한다. 먼저 TFBO 다음엔 부츠홀츠의 확장 붕괴함수를 사용하여 오메가 밑첨자를 끝없이 내린다. 이후의 표기법에 대해서 googology 사이트 내에서도 가장 오해가 많은데 Rathjen's Φ function를 사용하는게 맞는 표현법이다. 다만 많은 유저들이 그저 접근 불가능 기수인 I를 사용하고 있다. 그 이후에는 I를 대각화하기 위해 말로 기수를 기반으로 하는 함수가 사용되고 그 이후엔 말로 함수를 대각화하기 위해 약 콤팩트 기수를 기반으로 하는 Rathjen psi함수( 둘의 표기법이 조금 다르다. ) 그 다음엔 stegert 함수가 사용되는 표기법이 상당히 복잡하다. 여기까지가 제대로 정의된 가장 큰 함수라고 할 수 있다. 사실 FGH가 자주 쓰이는 googology에서 볼 수 있는 거의 모든 수들은 Denis Maksudov라는 유저가 만들었다. Denis Maksudov가 만든 숫자들을 보면 말로 기수 단계의 수 이후에 바로 타르 함수로 넘어가는데 타르 함수는 Taranovsky's C를 사용하여 만들어졌다. 확실한 증거는 없지만 타르 함수는 2차 산술의 증명재귀서수보다 성장률이 빠를것으로 기대된다. 기대가 맞다면 타르 함수는 말로 기수 단계마저도 먼지로 만들어버리고도 한참 남을 정도로 거대한 수이며 그 이후에 약 콤팩트 기수, stegert의 함수들까지 모두 압도해버린다고 할 수 있다. === 계산 불가능한 FGH 함수 === 가장 작은 비재귀적인 서수인 [[https://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0_%EB%B6%88%EA%B0%80%EB%8A%A5_%EC%84%9C%EC%88%98|처치-클레이니 서수(Church-Kleene ordinal)]] [math(\omega^\text{CK}_1)]를 이용한 fgh 함수인 [math(f_{\omega_1^\text{CK}}(n))]은 계산 불가능하며, 이 서수의 기본 수열은 클린의 [math(\mathcal O)]로 정의되어진다. 이 함수의 성장률은 [[바쁜 비버 함수]]에 근사할 것으로 예상되나, 현재까지는 성장률이 [math(f_{\omega}(n))]보다 강력하다는 것만 증명되었을 뿐 정확한 성장률은 증명된 바 없다. 또한 [math(\omega^\text{CK}_2,\ \omega^\text{CK}_3,\ \omega^\text{CK}_\omega,\ \omega^\text{CK}_{\epsilon_0})]같은 확장이나, [math(\omega^\text{CK}_{\omega^\text{CK}_1})]같은 --무시무시한--중첩도 가능하다. 이러한 처치-클린 서수의 확장들은 [[피쉬 수]] 4, 크시 함수(Xi function)나 무한 시간 [[바쁜 비버|튜링 머신]](Infinite Time Turing Machine) 같은 계산 불가능한 함수들의 크기를 가늠해볼 때 쓰이기도 한다. 다만 [[라요 수]]부터는 fgh의 한계에 부딪히게 된다. == 계산 예시 == 정의에 의해 서수 0에 해당하는 함수는 '다음 수'라는 연산이다. [math( f_0(n) = n+1,\ f_0(100)=101 )] 서수 1에 해당하는 함수는 '다음 수'를 [math(n)]번 반복한 것이므로 [math( f_1(n) = n+n = 2n,\ f_1(100)=200 )] 서수 2에 해당하는 함수는 2배하기를 [math(n)]번 반복하는 것이므로[* [math(n)]을 [math(n)]번 더하는게 아니라 '자기 자신을 더하는 것'을 [math(n)]번 반복하는 것임에 유의해야 한다.] [math(2 \times 2 \times ... \times 2 \times n = n \times 2^n)]이다. [math(f_2(n) = n \times 2^n,\ f_2(100)=100 \times 2^{100} \sim 1.26765 × 10^{32})] 서수 3에 해당하는 함수는 [math( n \times 2^n, (n \times 2^n) \times 2^{(n \times 2^n)}, ... )] 이런식으로 [math(n)]번 합성하는 것이다.[* 예를 들어 [math(f_3(3))]은 [math((3×2^3)×2^{(3×2^3)})×2^{((3×2^3)×2^{(3×2^3)})}))]과 같고 이는 [math(24×2^{24}×2^{24×2^{24}})] 이므로 약 [math(6.89×10^{121210694})]이다.]줄임표를 사용하지 않고 정확하게 나타내기는 힘들고 근삿값은 [math(2^nn((2^{2^nn}\uparrow\uparrow(n-1)))] 정도이다.[math( \uparrow \uparrow )]의 의미는 [[커누스 윗화살표 표기법]] 참고. 서수 4에 해당하는 함수는 위의 함수를 [math(n)]번 합성한 것이므로 근삿값으로 [math( 2 \uparrow \uparrow 2 \uparrow \uparrow.. \uparrow \uparrow n )]이고 이것은 [math( 2 \uparrow \uparrow \uparrow n)]보다 크다. 서수 5에 해당하는 함수는 위의 함수를 [math(n)]번 합성한 것이므로 근삿값으로 [math(2 \uparrow \uparrow \uparrow 2 \uparrow \uparrow \uparrow 2 \uparrow \uparrow \uparrow ... \uparrow \uparrow \uparrow n)]이고 이것은 [math(2 \uparrow \uparrow \uparrow \uparrow n)]보다 크다. 즉 유한 서수 [math(\alpha+1)]에 대한 함수는 대략 [[커누스 윗화살표 표기법]]으로 화살표가 [math(\alpha)]개 있는 것과 비슷하다. (화살표 앞뒤에 붙는 수의 크기는 2 이상이기만 하면 크게 중요하지 않다.) 일반적으로 [math(2f_{m}(n)\uparrow^{m} n>2\uparrow^{m} n)] 그렇다면 따름서수만 가지고 모든 단계를 근사할 수 있을까? 아니다. 아직 정의 (3)은 쓰지도 않았다. 여기서 가장 작은 극서수인 [math(\omega)]가 등장한다. 서수 [math(\omega)]에 해당하는 함수는 정의(3)에 의해 [math(\omega)]에 n을 대입해서 n단계 함수가 된다. [math(\omega)]의 fundamental sequence의 [math(n)]번째 항은 [math(n)]이기 때문이다. 즉 [math(f_{\omega}(100)=f_{100}(100))]이다. 서수 [math(\omega+1)] 에 해당하는 함수 [math(f_{\omega+1}(n))]은 절대 [math(f_{n+1}(n))]가 '''아니다'''. [math(\omega+1)]은 극서수가 아니기 때문에 정의 (2)에 의하여 [math(f_{\omega+1}(n) = f^n_{\omega}(n))]이므로 [math(f_{100}(100))]을 계산해서 나오는 엄청 큰 수를 [math(A_1)]라고 하면 서수 [math(A_1)]에 해당하는 함수인 [math(f_{A_1}(A_1))]를 계산해서 나온 결과를 [math(A_2)]라 하는 식으로 반복해서 [math(A_{100})]에 도달해야 [math(f_{\omega+1}(100))]이 나온다. 또한 이 [math(f_{\omega+1}(100))]은 그레이엄 수보다도 커진다. [math(f_{\omega2}(n))]는 [math(\omega2)]가 서수의 수열 [math(\omega+1, \omega+2, \cdots)]로 정의되기 때문에, 정의 (3)에 의해 [math(f_{\omega+n}(n))]와 같다.[* [math(2 \times \omega)]라고 쓰면 안된다. 서수 연산에서는 교환법칙이 성립하지 않아서, [math(\omega=2\omega\not = \omega2)]이다.] 이를 반복하면 [math(f_{\omega (m+1)}(n))]는 [math(f_{\omega m+n})]가 된다. [math(f_{\omega^2}(n))]는 같은 원리로 정의 (3)을 사용하여 [math(f_{\omega n}(n))]가 되고, [math(f_{\omega^\omega}(n))]는 [math(f_{\omega^n}(n))]이 된다. 이제 몇몇 큰 수들을 이 표기법으로 어떻게 나타낼 수 있는지 알아보자. [[구골]]의 경우, 약간의 계산을 거치면 [math(f_{2}(323)=323\times2^{323}\lt10^{100}\lt324\times2^{324}=f_{2}(324))]임을 알 수 있다. 하지만 서수 3에 대한 함수로는 [math(f_{3}(2)=2048\lt10^{100}\lt f_{3}(3))]이 되어, 비교하는 의미가 없어진다.[* 저 수는 자릿수가 '''1억 자리'''를 넘는다. 서수 4 이상부터는 그냥 말이 필요없다.] [[스큐스 수]]의 경우, 대략 [math(f_3(4)\lt e^{e^{e^{79}}}\lt f_3(5))]이다. [[그레이엄 수]]의 경우, 윗 화살표가 [math(g_{63})]개이므로 유한 서수로 나타내기에는 너무 크다. 대신, [math(g_{1}=3\uparrow\uparrow\uparrow\uparrow3\lt f_{64}(64))]에서 시작하여 [math(g_{2}\lt f_{f_{64}(64)}(f_{64}(64)))]를 보이고, 이 과정을 64번 반복하면 [math(g_{64}\lt f_{\omega+1}(64))]인 것을 알 수 있다.[* 더 정확히는 [math(f^{64}_{\omega}(4))]보다 크고 [math(f^{64}_{\omega}(5))]보다는 작은 수로 근사할 수 있다.] [[큰 수#하이퍼 그레이엄|하이퍼 그레이엄]]은, [[그레이엄 수]]가 [math(f_{\omega+1}(64))]라고 근사했으므로 그레이엄 수를 그레이엄 수번 재귀한 하이퍼 그레이엄 은 [math(f_{\omega+1}^{f_{\omega+1}(64)}(64))]이고, 이건 [math(f_{\omega+1}^{f_{\omega+1}(64)}(f_{\omega+1}(64))=f_{\omega+2}(f_{\omega+1}(64)))]보다 작으므로 하이퍼 그레이엄[math(