オートマトン・形式言語の問題
アルファベット 上の言語 を次のように定める。
文字列 ()を 2 進数として読んだ値を とする(先頭に が続いてもよく、空文字列 の値は とする)。このとき
とする。 を受理する完全な決定性有限オートマトン(DFA。すべての状態とすべての入力記号に対して遷移が定義されているもの)のうち、状態数が最小のものの状態数を求めよ。
この問題で使うもの
- マイヒル・ネローデの定理と最小状態数(説明と入口の問題)
- 言語の条件から DFA を作る(余り・接尾辞・積構成)(説明と入口の問題)
- DFA の最小化(区別可能な状態の対)(説明と入口の問題)
- 合同式(説明と入口の問題)
この問題を解けるようになるまで(22 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
を で割った余りを状態とする 24 状態の DFA を作り、どの余りどうしが同じ状態にまとめられるかをマイヒル・ネローデの定理で調べよう。
ヒント 2
後ろに長さ 、値 の文字列をつなぐと値は になる。 に分け、 では mod 8 の条件が によらないこと、 では しか受理につながらないことに注目しよう。
ヒント 3
受理を決めるのは と、 のときの「 が で割り切れるか」である。 の余りは に分かれる。残りの余りがいくつの類になるか、また各類が本当に区別できるかを確かめよう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
方針 まず を で割った余りを状態とする DFA を作り、マイヒル・ネローデの定理に基づいて、どの余りどうしが区別できるかを調べる。
余りの DFA 文字列 の後ろに長さ の文字列 をつなぐと
となる。したがって かどうかは と だけで決まり、状態 、遷移 、初期状態 、受理状態 の DFA が を受理する。どの も値が の文字列で到達できるので、24 状態はすべて到達可能である。最小 DFA の状態数は、この 24 個の余りを「同値(どんな をつないでも受理・非受理が一致する)」で分けたときの類の数に等しい。
受理条件の分解 の長さを 、()とする。 で と は互いに素だから
- のとき: なので、mod 8 の条件は となり によらない。mod 3 の条件は だけで決まる。よって受理は だけで決まる。
- (, )のとき:受理 、すなわち 。
- のとき: で、 には が偶数、つまり が必要。このとき条件は かつ 、すなわち かつ 。
- のとき: で、 には 、つまり が必要。このとき条件は かつ 。
特に では でなければ決して受理しない。
同値類 以上から、 と、 のときは「 が ・・ で割り切れるか」が受理を決める。
- の 8 個: では常に非受理、 では だけで決まるので、すべて同値で 1 類。
- の 8 個:同様に 1 類。
- の 8 個 :
- で割り切れる:
- で割り切れるが では割り切れない:
- で割り切れるが では割り切れない:
- 奇数:
同じ組の中では上の条件がすべて一致するので同値である。
よって類は高々 個。
6 類が互いに区別できること
- ():受理 。これで の 4 類と残り 2 類が区別される。
- (): で、。これで と の類が区別される。
- : だけが受理され、 と が区別される。
- :受理 なので、(受理)と (非受理)が区別される。
- :受理 なので、(受理)と (非受理)が区別される。
したがって同値類はちょうど 6 個で、すべて到達可能である。マイヒル・ネローデの定理より、 を受理する最小の完全 DFA の状態数は である。
別解
。DFA の状態を の剰余 とすると、初期状態は 、遷移は 、受理状態は であり、これで を受理する。剰余 のうち CRT により全 24 通りが到達可能。ミーリー・ネローデ同値(ここでは「ある文字列 を続けて読んだとき、受理されるかどうか」が同じ状態同士を同一視する)で同値類を数える。
から長さ の文字列 を読むと値は ()。
(1) の場合。 では受理されない。 では に かつ が必要で矛盾。 では () に かつ が必要で矛盾。よって受理されるのは のときだけで、このとき は だけで決まる( なので の情報は消える)。ゆえに が同じなら同値で、 と の 2 類。これらは十分長い文字列( で となるもの)で区別できる。
(2) ()の場合。代表として をとる。
- : で受理(唯一の受理状態)。
- : で となり受理、 は不受理。
- ( と同値): では で不受理、 で となり受理。
- (奇数の と同値): は 、 は 、 で となり受理。
は , , , の受理パターンで互いに区別でき、また (1) の 2 類とも(例: で は受理、 の類は で不受理)区別できる。、 も確認でき、これで の側は 4 類。
合計 状態。検算:状態名を ()、( 類)、( 類)、( 奇数かつ の類)、( の類)、( の類)と置いて遷移を作ると、各状態で の遷移がすべて 6 状態に閉じ、いずれも上の区別が保たれる。最小 DFA の状態数は 6。