オートマトン・形式言語の問題
アルファベット 上の言語 を次のように定めます。
たとえば であり、 です。
を受理する完全な決定性有限オートマトン(DFA)のうち、状態数が最小のものの状態数を求めてください。ここで完全な DFA とは、すべての状態とすべての文字に対して遷移が定義されている DFA のことです。
この問題で使うもの
- マイヒル・ネローデの定理と最小状態数(説明と入口の問題)
この問題を解けるようになるまで(22 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
マイヒル・ネローデの定理を使います。接尾辞 を付けたときに に入るかどうかが食い違う文字列の組を探し、同値類の個数を数えましょう。
ヒント 2
かどうかは の後ろから 2 文字目で決まります。 の情報のうち、最後の 2 文字だけが効くことに注目しましょう。
ヒント 3
代表の候補は です。 と は と同値になり、 は と同値になります。あとは、4 つの候補がどの 2 つも接尾辞( または )で区別できるかを確かめます。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
マイヒル・ネローデの定理を使います。文字列 について、すべての で「」が成り立つとき と書きます。最小の完全 DFA の状態数は、この同値関係 の同値類の個数に等しくなります。
手順 1:同値類の代表の候補を挙げる
となるかどうかは、 の後ろから 2 文字目だけで決まります。 ならこの文字は の中にあるので、 には関係しません。 のときは、 の最後の 2 文字だけが関係します。そこで、長さ 2 の文字列 を代表の候補とします。
手順 2:どの文字列も 4 つの候補のどれかと同値であることを確かめる
- のとき、 は自身の最後の 2 文字からなる文字列と同値です。手順 1 で見たように、どの についても判定に効くのは の最後の 2 文字だけだからです。
- です。
- なら、 と の後ろから 2 文字目は一致します。
- なら、(長さ 1)であり、 の後ろから 2 文字目は なので です。
- なら、 かつ です。
- です。
- なら、上と同じ理由で判定は一致します。
- なら、 と の後ろから 2 文字目はどちらも なので、ともに に属します。
- なら、 かつ です。
- です。 も も「直前の文字が で、それより前に が効かない」状態だからで、確認の仕方は の場合と同じです。
したがって、同値類は高々 4 個です。
手順 3:4 つの候補がどの 2 つも区別できることを示す
各組について、 と の一方だけが に属するような接尾辞 を挙げます。
| 組 | 判定 | |
|---|---|---|
よって 4 つの候補は互いに同値ではなく、同値類はちょうど 4 個です。
結論
マイヒル・ネローデの定理より、 を受理する最小の完全 DFA の状態数は です。
別解
は「後ろから 2 文字目が 」という言語である。状態を「直前の 2 文字」で表す DFA を作り、状態数が 4 で最小であることを Myhill–Nerode の定理で示す。
DFA(状態数 4)
状態を とする。これは「最後の 2 文字が 」を表す。長さ 2 未満の入力は、足りない部分を とみなす。つまり 、、 とする。
- 状態集合は
- 初期状態は
- 受理状態は (後ろから 2 文字目が の状態)
遷移は、状態 で文字 を読むと に移る。
| 状態 | a | b |
|---|---|---|
最小性(Myhill–Nerode)
4 つの文字列 が互いに区別できることを示す。
- 接尾辞 を付けると、 であり 。よって と は区別できる。
- 接尾辞 を付けると、 であり 。よって と は区別できる。
- 同じく接尾辞 で、 であり 。よって と は区別できる。
したがって同値類は少なくとも 4 つある。上の DFA は 4 状態で を受理するので、最小の状態数は 4 である。
検算
- : で受理される。
- : で受理されない。
- : で受理されない。
- : で受理される。
どれも問題文の例と一致する。
答え:4