web-dev-qa-db-ja.com

再帰的言語と帰納的可算言語の違いは何ですか

再帰的言語と帰納的可算言語の違いは、停止とチューリングマシンの点で何であるか疑問に思いました。帰納的可算言語は帰納言語のサブセットであることは知っていますが、それ以上の違いについてはよくわかりません。

8
Bren

[〜#〜] r [〜#〜][〜#〜] reの間に関係があります[〜#〜]後方:[〜#〜] r [〜#〜]は(適切な) [〜#〜] re [〜#〜]のサブセット。基本的に、再帰言語はあなたが完全な決定者を持っている言語です。

部分的決定者が存在する言語としての帰納的可算言語の定義を思い出してください。つまり、アルファベットの上に単語を入力として指定すると、言語に応じて単語を正しく受け入れる/拒否するか、単語が言語にない場合は永久にループする可能性があるチューリングマシンです。

対照的に、帰納言語は、総決定者が存在する言語です。つまり、ループすることはなく、常に受け入れ状態または拒否状態で停止します。

これらの2つの定義を並べてみると、帰納言語も再帰的に列挙可能であることが明らかです。これは、決定者全体も部分的なものであるためです(正解で停止するのではなく、ループすることを「選択」することはありません)。

12
Cactus

主な違いは、帰納的可算言語では、言語Lにある入力文字列に対してマシンが停止することですが、Lにない入力文字列については、停止する場合と停止しない場合があります。

帰納言語になると、それがマシンに受け入れられるかどうかに関係なく、常に停止します。受け入れた場合は(q accept)に到達し、停止します。マシンに受け入れられない場合は、直接到達します(q停止)。

2