オートマトン・形式言語の問題
アルファベット 上の言語 を次のように定める。
ここで は の長さを表し、部分文字列とは連続した文字の並びのことである(長さ の空列 の長さは で、 は の倍数とする)。
を受理する決定性有限オートマトン(DFA)のうち、状態数が最小のものの状態数を求めよ。ただし、DFA の遷移関数はすべての状態とすべての入力記号について定義されている(全域的である)ものとする。
この問題で使うもの
- マイヒル・ネローデの定理と最小状態数(説明と入口の問題)
- 言語の条件から DFA を作る(余り・接尾辞・積構成)(説明と入口の問題)
この問題を解けるようになるまで(22 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
「 を含むか」を判定する部分と「長さを 3 で割った余り」を数える部分に分け、それぞれの DFA の直積を考えてみよう。
ヒント 2
マイヒル・ネローデの定理を使う。 を含まない文字列は の形であり、『最後が かどうか』も区別に効くことに注意しよう。
ヒント 3
判定の DFA は 3 状態(未発見で最後が でない/未発見で最後が /発見済み)でできる。これと長さの余りの 3 状態との直積が上界になる。下界は、代表元 のどの 2 つも区別できることを、余りが異なる場合と、余りが同じで判定部分の状態が異なる場合に分けて示せばよい。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
方針. 9 状態の DFA を作って上界を示す。次に、マイヒル・ネローデの定理(同値関係 の同値類の個数が最小 DFA の状態数に等しい)を用い、互いに区別できる 9 個の文字列を挙げて下界を示す。
上界(9 状態の DFA). 「 を含むか」を判定する DFA は次の 3 状態でできる。
- : まだ が現れておらず、最後の文字が でない(空列を含む)
- : まだ が現れておらず、最後の文字が
- : すでに が現れた
遷移は である。これと、長さを で割った余り を数える 3 状態の DFA との直積をとると、状態 ()からなる 状態の DFA が得られる。初期状態は 、受理状態は のみである。よって最小 DFA の状態数は 以下である。
下界(区別できる 9 個の文字列). を含まない文字列は、ちょうど ()の形の文字列である。このうち最後の文字が でないもの()は 、すなわち の形であり、最後の文字が であるもの()は のものである。次の 9 個の文字列を考える。
各組の長さを で割った余りは順に である。したがって の 9 通りの組それぞれにちょうど 1 個ずつの文字列が対応している。この中の異なる 2 つ について、 と の一方だけが成り立つ文字列 があることを示す。
長さの余りが異なる場合. とし、 が の倍数になるように を選ぶ。 はどちらも を含む。 の長さは の倍数である。一方 なので、 の長さは の倍数でない。よって である。
余りが同じで、一方が 、他方が の場合. の方を 、他方を ()とし、 とする。 は が の倍数になるように選ぶ。 は を含み、長さは の倍数なので である。一方 は を含まないので である。
余りが同じで、一方が 、他方が の場合. の方を ()、 の方を (, )とおく。 と は一般に異なる(たとえば では 、 では )が、 である。 とし、 は が の倍数になるように選ぶ。
- は を含まないので である。
- は より のすぐ後に が続く箇所をもつので を含む。長さは なので である。
9 個の文字列のうち異なる 2 つは、余りが異なるか、余りが同じで が異なるかのどちらかであり、〜 ですべての場合を尽くしている。以上より、9 個の文字列はどの 2 つも で同値でない。したがって の同値類は 個以上あり、最小 DFA の状態数は 以上である。
上界と合わせて、最小 DFA の状態数は である。
別解
「 を含むか」と「長さ mod 3」の直積を考える。
を含まない文字列の状態は 2 つに分けられる。 は直前の文字が でない状態(空列を含む)、 は直前の文字が で、まだ が現れていない状態である。 を含んだ状態を とし、これは吸収状態である。
長さ mod 3 を として、状態 を で作ると全部で 9 状態になる。
遷移は次のとおり。
-
-
-
-
-
初期状態は 、受理状態は のみである。
到達可能性は次のとおり。
- は で到達できる。
- は では 、 では で到達できる。
- は に適当な長さの文字を足して到達できる。
よって 9 状態すべてが到達可能である。
区別可能性は次のとおり。
- どうしは、長さ mod 3 が異なるため区別できる。
- と は、()で区別できる。 ではこれが受理され、 では が現れないので受理されない。
- と で の場合は、 に適当な長さの文字を足した接尾辞で区別できる。一方では受理され、他方では受理されない。
- と は、接尾辞 (長さが合うように を選ぶ)で区別できる。 からは で に入り受理されるが、 からは が現れず受理されない。
したがって 9 状態はすべて互いに区別可能で、これ以上縮約できない。最小の状態数は 9 である。なお死状態は存在しない。