オートマトン・形式言語の問題
両側に無限に続くテープを 1 本もつ決定性チューリング機械 を考える。
- 状態の集合は である。初期状態は 、停止状態は である。 からの遷移はなく、 に入った時点で は停止する。
- 入力アルファベットは 、テープ記号の集合は である( は空白記号)。
- 遷移関数 は次の表で与えられる。表の各欄の は「状態 に移り、ヘッドの位置に記号 を書き込み、ヘッドを向き に 1 マス動かす」ことを表す。 は左、 は右である。
| 状態 \ 読んだ記号 | |||
|---|---|---|---|
最初、テープには入力文字列 が左から順に 1 マスに 1 文字ずつ書かれている。それ以外のマスはすべて である。ヘッドは の左端の文字の上にあり、状態は である。
遷移関数を 1 回適用することを 1 ステップと数える。 に移る遷移も 1 ステップに含める。 が停止するまでのステップ数を求めよ。
この問題で使うもの
- チューリング機械の動作の追跡(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
状態ごとの役割を読み取りましょう。 は右端へ進み、 は右から 1 を加え、 は左端へ戻ります。それぞれの区間で何ステップかかるかを数えます。
ヒント 2
は を に書き換えながら左へ進み、最初に出会った を にして に移ります。 の右端に がいくつ続くかを確認しましょう。
ヒント 3
の区間は、空白を読んで折り返す 1 ステップを含めて 9 ステップです。続く の区間は、右端の を 3 つ書き換える 3 ステップと、位置 5 の を にする 1 ステップです。残るのは で左端の空白まで戻る部分です。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
テープのマスに番号を付ける。入力の左端のマスを とし、右へ とする。入力の左隣の空白のマスは 、右隣の空白のマスは である。最初の内容は次のとおりである。
位置 から に順に が書かれ、位置 と位置 は である。
(1) 状態 :右端まで進む
では も もそのまま残して右へ進む。位置 から までの 8 マスで 8 ステップかかり(ステップ 1〜8)、ヘッドは位置 の に達する。
ステップ 9 では が を読むので、 に移って左へ動く。ヘッドは位置 に来る。
(2) 状態 :1 を加える(繰り上がりの処理)
は を読むと に書き換えて左へ進む。
- ステップ 10:位置 の を にし、位置 へ動く。
- ステップ 11:位置 の を にし、位置 へ動く。
- ステップ 12:位置 の を にし、位置 へ動く。
- ステップ 13:位置 の を読む。 を書き込んで に移り、位置 へ動く。
(3) 状態 :左端へ戻る
は記号を変えずに左へ進む。
- ステップ 14〜17:位置 を順に通り、ヘッドは位置 に達する。
- ステップ 18:位置 の を読むので、 に移って右へ動く。ここで停止する。
したがって停止までのステップ数は
である。
(確認)停止時のテープは で、これは 2 進数で を表す。 は 2 進数に 1 を加える機械として正しく動いている。
ステップ数も一般的に確かめておく。入力の長さを 、右端に続く の個数を とし、入力に が 1 つ以上含まれるとする。このとき、右へ ステップ、空白での折り返しに ステップ、 の書き換えに ステップ、 を にするのに ステップかかる。さらに残りの マスを戻るのに ステップ、最後の空白で ステップかかる。合計は
となる。 を代入すると になり、上の結果と一致する。
答え:
別解
入力 は長さ 8 で、左から位置 1〜8 に書かれているとする。
1. は 1〜8 の各文字を読んで右へ進む。これが 8 ステップで、ヘッドは位置 9()に来る。
2. 位置 9 で を読み、 により に移ってヘッドは位置 8 に戻る。これが 1 ステップで、累計 9 ステップ。
3. は 2 進数の 1 加算を行う。位置 8, 7, 6 はいずれも 1 なので 0 に書き換えて左へ進む。これが 3 ステップで、累計 12 ステップ。
4. 位置 5 は 0 なので、1 を書いて に移り左へ進む。これが 1 ステップで、累計 13 ステップ。ヘッドは位置 4 にある。
5. は位置 4, 3, 2, 1 の文字を読んで左へ進む。これが 4 ステップで、累計 17 ステップ。ヘッドは位置 0()に来る。
6. 位置 0 で を読み、 により に移る。これが 1 ステップで、累計 18 ステップ。
テープの最終内容は 10111000 となり、これは 10110111 に 1 を加えた値である。この内容は、 を 2 進数として 1 加算した結果と一致する。
答え:18 ステップ。