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