一般的な再帰関数

数理論理学コンピュータサイエンスにおいて一般再帰関数部分再帰関数、あるいはμ-再帰関数は、自然数から自然数への部分関数であり、直感的にも形式的にも「計算可能」である。関数が全再帰関数である場合、全再帰関数再帰関数と略されることもある)とも呼ばれる。 [1]計算可能性理論では、μ-再帰関数はまさにチューリングマシンで計算できる関数であることが示される[2] [4] (これはチャーチ=チューリングのテーゼを支持する定理の 1 つである)。μ-再帰関数は原始再帰関数と密接に関連しており、その帰納的定義(以下)は原始再帰関数の定義に基づいている。しかし、すべての全再帰関数が原始再帰関数であるとは限らず、最も有名な例はアッカーマン関数である。

他の同等の関数のクラスとしては、ラムダ計算の関数と、マルコフアルゴリズムによって計算できる関数があります

{0,1}の値を持つすべての再帰関数のサブセットは、計算複雑性理論では複雑性クラス Rとして知られています

意味

μ-再帰関数(または一般再帰関数)は、有限個の自然数の組を受け取り、単一の自然数を返す部分関数です。これらは、初期関数を含み、合成、原始再帰、および最小化演算子μに関して閉じた、部分関数の最小のクラスです

合成と原始再帰に関して閉じた(つまり最小化のない)関数の最小のクラスは、原始再帰関数のクラスである。すべての原始再帰関数は全再帰関数であるが、部分再帰関数はそうではない。例えば、後続関数の最小化は定義されていない。原始再帰関数は全再帰関数の部分集合であり、全再帰関数は部分再帰関数の部分集合である。例えば、アッカーマン関数は全再帰関数であり、かつ非原始的であることが証明できる。

プリミティブまたは「基本」関数:

  1. 定数関数Ck
    n
    : 任意の自然数nと任意のkに対して
    代替定義では、代わりにゼロ関数を常にゼロを返すプリミティブ関数として使用し、ゼロ関数、後続関数、および合成演算子から定数関数を構築します。
  2. 後継機能S:
  3. 射影関数 恒等関数とも呼ばれる):すべての自然数に対して

演算子 (演算子によって定義される関数のドメインは、計算中に実行する必要がある すべての関数アプリケーションが明確に定義された結果を提供するような引数の値の集合です)。

  1. 合成演算子 置換演算子とも呼ばれる):m項関数とm個のk項関数が与えられた場合
    つまり、と がすべて定義されている場合にのみ が定義されます
  2. 原始再帰演算子 ρ : k項関数k +2 項関数が与えられた場合:
    これは、すべての場合に対して定義されている場合にのみ定義されることを意味します。
  3. 最小化演算子 μ : ( k +1)次関数が与えられた場合k次関数は次のように定義されます。

直感的に言えば、最小化は、関数がゼロを返す最小の引数を0から上に向かって探索する。そのような引数がない場合、またはfが定義されていない引数に遭遇した場合、探索は決して終了せず、引数に対しては定義されない。

一部の教科書ではここで定義されたμ演算子が用いられているが[5] [6 ]、他の教科書ではμ演算子を関数fにのみ適用することを要求している[7] [ 8]。これはここで与えられた定義と比較してμ演算子を限定するものの、μ再帰関数のクラスはクリーネの正規形定理(下記参照)から導かれる通り、同じままである。[5] [6]唯一の違いは、計算可能関数(すなわちμ再帰関数)が全関数であるかどうかが決定不能であるのと同様に、特定の関数定義がμ再帰関数を定義するかどうかが決定不能となることである。[7]

強い等式関係は、部分μ再帰関数の比較に使用できます。これはすべての部分関数fgに対して定義され、

任意の引数の選択に対して、両方の関数が定義され、その値が等しいか、両方の関数が未定義である場合にのみ成立します。

最小化演算子を含まない例は、プリミティブ再帰関数#例にあります

以下の例は、最小化演算子の使用方法を示すことのみを目的としています。これらはすべて原始再帰的であるため、より複雑な方法ではありますが、最小化演算子なしで定義することもできます。

  • x整数平方根は、を満たす最小のzとして定義できる。最小化演算子を用いると、一般的な再帰定義は となり、ここでNotGtMulはそれぞれ論理否定、大なり、乗算である[9]。実際、0が成り立つ場合、かつその場合に限ります。したがって、が成り立つような最小のzは です。Gt真理値を次のように符号化するため、否定接続詞Not が必要です。 1μ0

次の例では、原始再帰ではない一般的な再帰関数を定義しているため、最小化演算子の使用を避けることはできません。

全再帰関数

一般再帰関数は、すべての入力に対して定義されている場合、あるいは同義語として、全チューリングマシンで計算できる場合、全再帰関数と呼ばれます。与えられた一般再帰関数が全再帰関数であるかどうかを計算的に判断する方法はありません(停止問題を参照)

他の計算可能性モデルとの同等性

計算可能性モデルの等価性において、特定の入力に対して終了しないチューリングマシンと、対応する部分再帰関数においてその入力に対して未定義の結果を返すこととの間には類似点が見られます。無限探索演算子は、原始再帰の規則では「無限ループ」(未定義値)のメカニズムが提供されないため、定義できません。

正規形定理

クリーネによる正規形定理によれば、各kに対して原始再帰関数とが存在しk個の自由変数を持つ任意のμ再帰関数に対してeが存在し

eは関数fのインデックスまたはゲーデル数と呼ばれる[10] :52–53  この結果の帰結として、任意のμ再帰関数は、(全)原始再帰関数に適用されたμ演算子の単一のインスタンスを使用して定義できる。

ミンスキーは、上で定義したものは本質的には汎用チューリングマシンのμ再帰的等価物であると指摘している

Uを構築するということは、数値nを正しく解釈し、xの適切な関数を計算する一般再帰関数U(n, x)の定義を書き出すことである。Uを直接構築するには、基本的に同じ量の労力と、基本的に同じアイデアが必要になる。これは、我々が汎用チューリングマシン[11]の構築に費やしたのと同じである。

象徴主義

文献では様々な記号が用いられています。これらの記号を用いる利点は、演算子を互いに「入れ子」にすることで関数の導出を簡潔に記述できることです。以下では、パラメータ列は次のように略記されます


  • 定数関数: Kleene では " " が使用され、Boolos-Burgess-Jeffrey (2002) (BBJ) では略語 " " が使用されます。
例えば
例えば
  • 後継機能:クリーネは「後継者」の代わりに「and 」を使用します。「後継者」は原始的な意味を持つため、ほとんどのテキストでは次のようにアポストロフィを使用します。
、 どこ
など
  • 恒等関数:Kleene(1952)は変数の恒等関数を示すために使用します。BBJは変数の恒等関数を次の目的で使用します
例えば
  • 合成(置換)演算子:Kleeneは太字を使用しています( 「後継」演算子と混同しないように!)。上付き文字は関数付き文字は変数を表します
もし私たちに与えられた
それから
BBJ は、上付き文字と下付き文字を使わずに、同じように次のように書いています。
  • 原始再帰:Kleene では 記号が使用され、n は変数の数を示します。BBJ では が使用されます。以下が与えられます。
  • 基本ステップ:
  • 誘導ステップ:
例: 原始再帰の定義
  • 基本ステップ: U1
    1
    (ア)
  • 誘導ステップ:

:クリーネは(変数とが逆になっていることに注意の再帰的微分の実行例を示している。彼は初期関数 から始める。

  1. 基本ステップ:
誘導ステップ:

彼は到着します:

参照

参考文献

  1. ^ 「再帰関数」スタンフォード哲学百科事典。スタンフォード大学形而上学研究室。2021年。
  2. ^ スタンフォード哲学百科事典、再帰関数の項、1.7節:「[μ-再帰関数のクラス]は、アラン・チューリングによって導入されたチューリング計算可能関数のクラス、およびアロンゾ・チャーチによって導入されたλ-定義可能関数のクラスと一致することが判明しました。
  3. ^ Kleene, Stephen C. (1936). 「λ-定義可能性と再帰性」 . Duke Mathematical Journal . 2 (2): 340– 352. doi :10.1215/s0012-7094-36-00227-2.
  4. ^ チューリング、アラン・マティソン(1937年12月). 「計算可能性とλ-定義可能性」.記号論理ジャーナル. 2 (4): 153– 163. doi :10.2307/2268280. JSTOR  2268280. S2CID  2317046.153ページの証明の概要: [3]
  5. ^ ab エンダートン、HB、「論理への数学的入門」、アカデミックプレス、1972年
  6. ^ ab Boolos, GS, Burgess, JP, Jeffrey, RC, Computability and Logic, Cambridge University Press, 2007
  7. ^ ab Jones, ND, 計算可能性と複雑性:プログラミングの観点から、MITプレス、マサチューセッツ州ケンブリッジ、ロンドン、イギリス、1997年
  8. ^ Kfoury, AJ, RN Moll, MA Arbib, 計算可能性へのプログラミング的アプローチ, 第2版, Springer-Verlag, ベルリン, ハイデルベルク, ニューヨーク, 1982
  9. ^ 原始再帰関数#ジャンクタ原始再帰関数#等価述語、および原始再帰関数#乗算で定義されています
  10. ^ Stephen Cole Kleene (1943年1月). 「再帰述語と量指定子」(PDF) .アメリカ数学会誌. 53 (1): 41– 73. doi : 10.1090/S0002-9947-1943-0007371-8 .
  11. ^ ミンスキー1972、189ページ。
210 ~ 215 ページで、ミンスキー氏はレジスタ マシンモデルを使用して μ 演算子を作成する方法を示し、それが一般的な再帰関数と同等であることを示しています。
  • スタンフォード哲学百科事典の項目
  • 再帰関数を同等のチューリングマシンに変換するコンパイラ
Retrieved from "https://en.wikipedia.org/w/index.php?title=General_recursive_function&oldid=1322119151"