句構造文法と万能TMについて
今回は句構造文法(生成規則 に対する制限がない文法)と万能TMについてお話していきます。
目次
句構造文法とTM
証明のお気持ちは上図にほとんど集約されています。
TM を、句構造文法 の開始記号 および を入力とし、 に対する書き換えを行っていった結果 と一致するものが得られた時は入力 を受理するとします。
まず、 を示します。
, つまり が生成する記号列 を取ります。
入力記号列 の後に区切り記号と開始記号 を置き、生成規則に対応するような次動作関数を定義することにより を書き換えていきます。 から を導出するような生成規則の適用経路は より必ず存在するため、 は入力 を受理します。よって、 です。
次に を示します。
が受理する記号列 に対して、受理するまでの動作は が を生成する過程になっています。(つまり、 の動作ではヘッドの指し示す位置の記号を書き換えていきますが、この書き換えを生成規則に変換してあげればいいです。)これによって が示され、 となります。細かな の動作については割愛していますが、この辺りは適宜手元の資料を参照してください。
万能TM
次に万能TMについてです。まず、万能というのは認識能力が他のモデルと異なるということではありません( TMのモデルの等価性の記事を参照)。これは、ある万能TM: は任意のTM: をエミュレートすることができるということです。今までは特定のTM: に対する入力記号列 を考えてきましたが、万能TM: の入力はそういったTM: および記号列 であり、入力は と書きます。
が を受理するならば は を受理
が を拒否するならば は を拒否
つまり、記号列 に対して入力されたTM: を動作させているわけです。他のTMも同様に入力として受け取れるので、結果として任意のTMをエミュレートできるわけですね。これが万能TMの考え方です。
ただ、一つ気を付けたいのはあくまで はただのTMなので、 をそのまま動かせるわけではありません。TMはあくまで記号列を入力とするので、 自体も記号列に変換する、いわゆる「コード化」という作業が必要です。ただ、万能TMを使用した証明の際にはコード化の中身にまで言及する必要は無いので、 の動作の記述には高レベルな記述を用いることが多いと思います。
次回は決定性のお話です。
編集履歴:
2020/10/26 全体的な表現の見直し