オートマトン・形式言語の問題
アルファベット 上の文字列 について、 に含まれる の個数を と書く。言語 を
と定める(たとえば 、、、)。 を受理する決定性有限オートマトン(DFA)のうち状態数が最小のものの状態数を求めよ。ただし、DFA の遷移関数はすべての状態とすべての入力記号に対して定義されている(全域的である)ものとし、状態数には到達可能な状態だけを数える。
この問題で使うもの
- マイヒル・ネローデの定理と最小状態数(説明と入口の問題)
- 言語の条件から DFA を作る(余り・接尾辞・積構成)(説明と入口の問題)
- DFA の最小化(区別可能な状態の対)(説明と入口の問題)
- 決定性有限オートマトンの動作と受理判定(説明と入口の問題)
この問題を解けるようになるまで(22 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
まず「 の個数を 3 で割った余り」と「末尾の様子」を組にした DFA を作り、そこから同値な状態をまとめる(マイヒル・ネローデの定理を使う)。
ヒント 2
状態 から続ける文字列 を、、、、 に分けて、 となる条件を調べる。 のとき、 で終わるかどうかは だけで決まる。
ヒント 3
の個数の余りが または のときは、 や では決して受理されないので、末尾の様子は区別に効かない。余りが のときだけ末尾の様子が区別に効く。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
マイヒル・ネローデの定理により、最小 DFA の状態数は、右同値関係
の同値類の個数に等しい。
1. 素朴な DFA。 の個数を 3 で割った余り と、末尾の様子 (: 最後の文字が 、: 末尾が 、: それ以外(空文字列を含む))の組 を状態とする DFA が作れる。遷移は
- を読むと
- を読むと 、、
で、初期状態 、受理状態 である。9 状態すべてが到達可能だが、これは最小ではない。
2. 剰余言語の計算。 状態 にある文字列 のあとに を続けたとき、 となる条件を調べる。
- のとき: が で終わるかは だけで決まるので、条件は「 が で終わり、」。これは だけで決まる。
- のとき: は で終わるので常に 。
- のとき: かつ ( だから)。
- のとき: かつ 。
3. 同値類の決定。
- のとき、 ではどの でも であり、 の場合は だけで決まる。よって は互いに同値で 1 つの類、 も 1 つの類になる。
- のとき、 だけが を受理し、 だけが を受理する。よって は互いに区別され、3 つの類になる。
- が異なる状態どうしは、( のときだけ受理)、( のときだけ受理)、( のときだけ受理)で区別される。
以上より同値類は 個である。
4. 確認(5 状態の DFA)。 状態を とし、初期状態 、受理状態 、遷移を
| 状態 | ||
|---|---|---|
とすると を受理し(例: は で受理)、すべての状態が到達可能である。
したがって最小 DFA の状態数は である。
別解
まず積オートマトンを作る。 を 、 を末尾の状況(: 最後の文字が 、: で終わる、: それ以外(空列、または の直後でない で終わる))とする。遷移は 、、、。初期状態 、受理状態 のみ。9 状態すべて到達可能(例: は または 、 は または 、 は から )。
同値な状態をまとめる。
- のとき、 はいずれも非受理で、 では に移り、 では か に移る。これらは なので非受理で、同じ振る舞いをする。よって の 3 状態は 1 つ()、 の 3 状態は 1 つ()にまとまる。
- の は区別される。 だけが受理状態。 は で受理、 は で受理しない。
簡約後の状態は , , , , の 5 個。
| 状態 | ||
|---|---|---|
| (初期) | ||
| (受理) | ||
5 状態が互いに区別できること:
- は唯一の受理状態。
- は で受理、 は で受理しない。
- は で受理()。 は で で受理しない。 も で受理しない。
- と は で区別: (受理)、(非受理)。
よって最小の DFA の状態数は 5。
検算: : 受理。: 受理。: 非受理。: 非受理。いずれも問題文の例と一致する。