エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

2022-05-01から1ヶ月間の記事一覧

アッカーマン関数(2)

ハイパー演算子 『計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)』の「問 1.3.17 (4)」が簡単にはできそうにないので、まず『コンピュータと数学 (現代基礎数学)』の第5章を見ていきます。第5章では「ハイパー演算子」(wikipedia:ハイパ…

アッカーマン関数(1)

アッカーマン関数についても調査します。アッカーマン関数は以下のように非負整数 と に対して帰納的に定義された関数です(wikipedia:アッカーマン関数、計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座) 参照)。 \begin{cases} f(0, y) & =…

たらい回し関数(6)

while の繰り返しが2回以下であることを考えると、以下のように書き直すことができます。これを見ると a2 と c2 は計算する必要がありません。 public static string Test() { int count = 0; int depth = 0; float tarai(float x, float y, float z, int d)…

たらい回し関数(5)

たらい回し関数についてはクロージャーの説明には使えそうにないので変数を使わないように書き直す意味はあまりないとは思いますが、やってみます。たらい回し関数をできるだけ変数を使わないように書き直します。このために前回「呼び出しの深さ」について…

たらい回し関数(4)

たらい回し関数(以下の または tarai)の呼び出しが重なっている(呼び出しが終了する前に呼び出しが行われる)回数の最大値を「呼び出しの深さ」と呼ぶことにします(以下の depth)。 public static string Test() { int count = 0; int depth = 0; float tarai…

たらい回し関数(3)

(3)の場合を に関する帰納法の仮定から証明することができます。 (3) かつ ならば のときは定義より 、 のときは に関する帰納法の仮定(*)より は定義されていて となります。よって

たらい回し関数(2)

前回の説明ではたらい回し関数が「定義されている」とはどういうことなのかという説明が不足していました。たらい回し関数の定義 は、以下の関数「tarai」の呼び出し回数(count)が有限(「tarai」が有限時間で終了する)のとき「定義されている」とします。こ…