オートマトン・形式言語の問題
入力アルファベット 、テープ記号の集合 ( は空白記号)をもつ 1 テープ決定性チューリング機械 を考える。
- 状態の集合は であり、初期状態は 、受理状態は 、拒否状態は である。 は または に入った時点で停止する。
- テープのマスには左から順に番号 が付いており、入力 はマス から に 1 文字ずつ書かれ、ほかのマスはすべて である。最初、ヘッドはマス にある。
- 遷移関数 は次の表で与えられる。表の は「状態 に移り、いまのマスに記号 を書き、ヘッドを の向きに 1 マス動かす( は右、 は左)」ことを表す。
| 状態 | |||||
|---|---|---|---|---|---|
遷移関数を 1 回適用することを 1 ステップと数える( や に移る遷移も 1 ステップと数える)。
を を満たす整数とする。入力 ( を 個並べた後に を 個並べた文字列)に対して を動かしたとき、 が停止するまでのステップ数を の式で求めよ。
この問題で使うもの
- チューリング機械の動作の追跡(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
まず短い入力(たとえば )で を 1 ステップずつ追跡し、各状態がどんな役割をしているか(どの記号を書き換え、どちらへ進むか)をつかもう。
ヒント 2
の 1 回の往復で、 が 1 つ に、 が 1 つ に変わる。第 往復の開始時のテープの様子を書き、右へ進むステップ数と左へ戻るステップ数を で表してみよう。
ヒント 3
1 往復は によらず ステップである。 往復で がなくなった後、 はまだ残っている を読む。そこから が右端の に着くまでのステップ数を数えよう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
入力 では、マス 〜 に 、マス 〜 に があり、マス 以降は である。
は、状態 で左端の未処理の を に書き換え、 で右へ進んで最初の を に書き換え、 で左へ戻って の右隣に戻る、という往復を繰り返す。
第 往復()
第 往復の開始時、状態は 、ヘッドはマス にあり、マス 〜 は 、マス 〜 は 、マス 〜 は 、マス 〜 は である( のときも同様)。
- がマス の を にして右へ: ステップ。
- はマス 〜( または )を右へ進む: ステップ。
- がマス の を にして左へ、 になる: ステップ。
- はマス 〜( または )を左へ進む: ステップ。
- がマス の を読んで右へ、 になる: ステップ。
よって 1 往復は ステップで、終了後は状態 、ヘッドはマス にあり、上の形が を にして保たれる。 往復で合計
ステップである。
最後の部分
往復の後、状態は 、ヘッドはマス にあり、マス 〜 は 、マス 〜 は 、マス 〜 は で、 は残っていない。 よりマス は である。
- がマス の を にして右へ: ステップ。
- はマス 〜( または )を右へ進む: ステップ。
- がマス の を読み、 に移って停止する: ステップ。
この部分は ステップである。
合計
(確認: の入力 では、実際に追跡すると ステップで停止し、 と一致する。)
別解
入力 では、マス が 、マス が である。
【第 周回()】 周回の始めは、マス が 、マス が で、ヘッドはマス ()にあり状態は である( のときは初期状態)。
- が を に書き換えて右へ(): 1 ステップ。ヘッドはマス 。
- が と を読み飛ばして右へ進み、最初の (マス )に着くまで: マス を読むので ステップ。
- が を に書き換えて左へ(): 1 ステップ。ヘッドはマス 。
- が と を読み飛ばして左へ進み、(マス )に着くまで: マス を読むので ステップ。
- が を読み、 に移って右へ: 1 ステップ。ヘッドはマス 。
合計 ステップ。これが 回続く( なので毎回 が残っている)。
【第 周回】 周回後、ヘッドはマス で状態は 。 より、マス は (少なくとも 1 個)、マス は 、マス 以降は空白である。
- が を に書き換えて右へ(): 1 ステップ。ヘッドはマス 。
- が と を読み飛ばして右へ進む: マス を読むので ステップ。
- マス の空白を が読み、 に移る: 1 ステップ。
合計 ステップで拒否して停止する。
【総ステップ数】
。
【検算】 (): (マス1,)→ マス2 [1]、 を読み右へ マス3 [2]、 を にして左へ マス2 [3]、 が を読み左へ マス1 [4]、 を読み で右へ マス2 [5]。 が を にして右へ マス3 [6]、 が を読み右へ マス4 [7]、空白を読み へ [8]。計 8 ステップ。式: で一致。