オートマトン・形式言語の問題
両側に無限に続くテープを 1 本もつ決定性チューリング機械 を考える。
- 状態の集合は である。初期状態は 、停止状態は である。 からの遷移はなく、 は に入った時点で停止する。
- 入力アルファベットは 、テープ記号の集合は である( は空白記号)。
- 遷移関数 は次の表で与えられる。表の各欄の は「状態 に移り、ヘッドの位置のマスに記号 を書き、ヘッドを向き に 1 マス動かす」ことを表す( は右、 は左)。
| 状態 | 読む記号 | 読む記号 | 読む記号 |
|---|---|---|---|
はじめ、テープには入力文字列 が左から順に連続する 4 マスに書かれ、それ以外のマスはすべて空白記号 である。ヘッドは入力の最も左の文字(左端の )のマスにあり、状態は である。
遷移を 1 回行うことを 1 ステップと数える( に入る遷移も 1 ステップに数える)。 が停止するまでのステップ数を求めよ。
この問題で使うもの
- チューリング機械の動作の追跡(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
チューリング機械の動作の追跡を使います。状態・テープの内容・ヘッドの位置を組にした様相を、遷移表にしたがって 1 ステップずつ書き出しましょう。
ヒント 2
状態 では や を読む限り右へ進み続け、空白 を読むと に移って左へ戻ります。 では を に書き換えながら左へ進み、 か を読むと に移ります。
ヒント 3
入力の 4 文字を読み進めるのに 4 ステップ、右端の空白を読んで に移るのが 5 ステップ目です。このとき様相は です。ここから で何回遷移すると に入るかを数えましょう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
様相(状態・テープの内容・ヘッドの位置)を 1 ステップずつ追跡する。入力の 4 マスを左から順にマス 1, 2, 3, 4 とし、その右のマスをマス 5 とする。様相は、ヘッドのあるマスの記号の直前に状態を書いて表す(例: は状態 でヘッドがマス 1 にあることを表す)。
はじめ: (状態 、ヘッドはマス 1)
状態 の間(右へ進む): は も もそのまま書き直して右へ進む。
- ステップ 1: マス 1 の を読む。 より 。
- ステップ 2: マス 2 の を読む。 より 。
- ステップ 3: マス 3 の を読む。 より 。
- ステップ 4: マス 4 の を読む。 より (ヘッドはマス 5)。
右端の空白を見つける:
- ステップ 5: マス 5 の を読む。 より (ヘッドはマス 4)。
状態 の間(左へ進みながら書き換える):
- ステップ 6: マス 4 の を読む。 より、マス 4 を に書き換えて (ヘッドはマス 3)。
- ステップ 7: マス 3 の を読む。 より、マス 3 を に書き換えて (ヘッドはマス 2)。
- ステップ 8: マス 2 の を読む。 より、マス 2 を に書き換えて から に移る。様相は (ヘッドはマス 1)。
状態 に入ったので、ここで は停止する。停止時のテープの内容は である(この機械は 2 進数に 1 を加える機械で、 が になっている)。
したがって、停止するまでのステップ数は である。
別解
テープのマスを左から位置 1〜4 とし、入力 1011 を書く。ヘッドは位置 1、状態は から始める。
のとき、0 と 1 は書き換えずに右へ進み、空白で に移って左へ戻る。
1. 位置 1 で が 1 を読む。 より位置 2 へ。
2. 位置 2 で が 0 を読む。位置 3 へ。
3. 位置 3 で が 1 を読む。位置 4 へ。
4. 位置 4 で が 1 を読む。位置 5 へ。
5. 位置 5 で が空白を読む。 より位置 4 へ。
ここまでで 5 ステップ。
次に はビットを反転しながら左へ進む(2 進数に 1 を加える操作)。
6. 位置 4 で が 1 を読む。0 を書いて位置 3 へ。
7. 位置 3 で が 1 を読む。0 を書いて位置 2 へ。
8. 位置 2 で が 0 を読む。 より 1 を書いて停止する。
ステップ 6 から 8 で 3 ステップ。 に入る遷移も 1 ステップに数えるので合計 ステップ。
検算として、最終テープは 1 1 0 0(位置 1〜4)となる。入力 1011 は 11 で、1 を加えると 12 = 1100 であり、一致する。
よって停止するまでのステップ数は 8。