FANDOM


en:User_blog:Kyodaisuu/A program of Kirby-Paris hydra に、巨大数探索スレッドにアップされた \(f_{\epsilon_0+1}(10)\) を計算するプログラムをアップしました。このプログラムを、User:Aycabta さんが C に移植したものを元にして、ハーディー階層を計算するプログラムにしました。いじったところは、

  • c のループを外した
  • b=b*b の計算を外して、b++ の処理を後続順序数の時にだけする
  • 首をコピーする個数を b-1 にする; for (h = 1; h <= (b-1) * g; h++)
  • b > 100000000 または e > 10000 で終了する(b=2とb=3 では、e の条件を外した)
  • g > 0 の時に、途中経過を表示すること

です。そして、このプログラムで、ハーディー階層の展開をしてみました。以下が、結果です。

  • \(H_{\omega^{\omega}}(2)\): b=2
  • \(H_{\omega^{\omega^\omega}}(3)\): b=3
  • \(H_{\omega^{\omega^{\omega^\omega}}}(4)\): b=4

ここで、b=4では、計算の途中までですが、bの値が増えていません。これは、ここまでの計算がすべて極限順序数であり、後続順序数が出ていないことを意味します。したがって、b=4の計算は、FGHの展開でも計算結果が表示されている範囲では同じ結果になります。

b=3 の時は、

0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 2, 1, 2, 0, 1, 2, 2, 1, 2, 2, 1, 2, 0, 1, 2, 2, 1, 2, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 1, 0, 1, 2, 2, 1, 2, 2, 1, 0, 1, 2, 2, 1, 2, 2, 1, 0, 1, 2, 2, 1, 2, 2, 0, 1, 2, 2, 1, 2, 2, 0, 1, 2, 2, 1, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 1, 2, 0, 1, 2, 2, 1, 2, 1, 2, 0, 1, 2, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 1, 1, 0, 1, 2, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 1, 0, 1, 2, 2, 1, 2, 0, 1, 2, 2, 1, 2, 0, 1, 2, 2, 1, 1, 0, 1, 2, 2, 1, 1, 0, 1, 2, 2, 1, 0, 1, 2, 2, 1, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 1, 2, 1, 1, 0, 1, 2, 1, 2, 1, 1, 0, 1, 2, 1, 2, 1, 0, 1, 2, 1, 2, 1, 0, 1, 2, 1, 2, 0, 1, 2, 1, 2, 0, 1, 2, 1, 1, 0, 1, 2, 1, 1, 0, 1, 2, 1, 0, 1, 2, 1, 0, 1, 2, 0, 1, 2, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1

ここまでは、b=3 です。これを順序数に直すと

ω^(ω^2・2 + ω・2 + 2) 2 + ω^(ω^2・2 + ω・2 + 1) 2 + ω^(ω^2・2 + ω・2) 2 + ω^(ω^2・2 + ω + 2) 2 + ω^(ω^2・2 + ω + 1) 2 + ω^(ω^2・2 + ω) 2 + ω^(ω^2・2 + 2) 2 + ω^(ω^2・2 + 1) 2 + ω^(ω^2・2) 2 + ω^(ω^2 + ω・2 + 2) 2 + ω^(ω^2 + ω・2 + 1) 2 + ω^(ω^2 + ω・2) 2 + ω^(ω^2 + ω + 2) 2 + ω^(ω^2 + ω + 1) 2 + ω^(ω^2 + ω) 2 + ω^(ω^2 + 2) 2 + ω^(ω^2 + 1) 2 + ω^(ω^2) 2 + ω^(ω・2 + 2) 2 + ω^(ω・2 + 1) 2 + ω^(ω・2) 2 + ω^(ω + 2) 2 + ω^(ω + 1) 2 + ω^ω・2 + ω^2・2 + ω・3

となり、最後に \(\omega 3\) が出て来ているので、次にここが \(\omega 2 + 3\) となって、始めて後続順序数となります。

以下が、使用したプログラムです。

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

void realloc_int(int **p, size_t *p_size, size_t new_size) {
    int *new_p;

    if (new_size >= *p_size) {
        new_p = realloc(*p, sizeof(int) * (*p_size) * 2);
        if (new_p == NULL) {
            printf("Reallocation failed\n");
            exit(-1);
        }
        *p = new_p;
        *p_size = (*p_size) * 2;
    }
}

int main(void) {
    int *a;
    size_t a_size = 2;
    a = malloc(sizeof(int) * a_size);
    if (a == NULL) {
        printf("Allocation failed\n");
        exit(-1);
    }
    int b = 2;
    int c;
        int d;
        for (d = 0; d <= b; d++) {
            realloc_int(&a, &a_size, d);
            a[d] = d;
        }
        int e;
        for (e = b; e >= 0; e--) {
            int g;
            int f;
            for (f = 0; f <= e; f++) {
                if (a[e-f] < a[e] || a[e] == 0) {
                    g = f;
                    f = e;
                }   
            }

            if (g > 0) {
                for (f = 0; f< e; f++) {
                    printf("%d, ", a[f]);
                }
                printf("%d",a[e]);
                printf(" : b = %d, e = %d, g = %d\n",b,e,g);
            }
            
            int h;
            for (h = 1; h <= (b-1) * g; h++) {
                realloc_int(&a, &a_size, e);
                a[e] = a[e-g];
                e++;
            }
            if (b > 100000000 || e > 10000 ) {
                return 0;
            }
            if (g == 0) {
                b++;
            }
        }
    printf("Result: %d\n", b);
    return 0;
}

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

FANDOMでも見てみる

おまかせWiki