07/09/05 05:20:32
>>333
>高校生にも簡単に理解できて、かつグラハム数を超える数
>>323の3変数アッカーマン関数で、ack(1,1,100)とするだけでグラハム数を超えると思う。
ack(1,0,x) = ack(x,x)=2→(x+3)→(x-2) - 3だから大雑把に見てack(1,0,x)≒3→3→xで、
ack(1,1,x)はack(1,0,x)をx回繰り返すのと大体同じくらいになるので、
3→3→xを4に64回適用したグラハム数よりack(1,1,100)の方が大きくなるはず。
左の方の引数を増やせば、もっと大きい数を作ることもできる。
そもそも、パラメータを増やすとごちゃごちゃしてくるのでかえって分かりにくくなってしまう。
あと、パラメータに最大値があるというのも、あまり大きくならない原因の一つだと思う。
それから、パラメータに階層構造があるのに、それが活かされていない。
たとえば、326の2つ目の関数では、括弧を取り除いて16個のパラメータを並べても同じ関数になる。
巨大数作りではよくあることだが、数を爆発的に大きくするための要点があって、
その要点をうまく抑えれば単純な定義でも非常に巨大な数が作れる。
逆に、その要点を外すとどんなに複雑な定義をしてもたいして大きくならない。
それがはっきり分かる一例としては、>>323の3変数アッカーマン関数がある。
たった3変数で、たった4つの定義式しかないのに、一番左の引数を大きくすれば
チェーン表記を伸ばすのと同程度の速さで増大していく。