オートマトン・形式言語の問題
を 以上の整数とする。アルファベット 上の言語 を
と定める。つまり は、長さが 以上で、末尾から 番目の文字と最後の文字が等しい文字列全体の集合である。 を受理する最小の決定性有限オートマトン(遷移関数はすべての状態とすべての文字について定義されているものとする)の状態数を の式で求めよ。
この問題で使うもの
- マイヒル・ネローデの定理と最小状態数(説明と入口の問題)
この問題を解けるようになるまで(22 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
マイヒル・ネローデの定理を使い、文字列を長さ 以上・長さ ・長さ 以下に分けて、同値類の個数を数えましょう。
ヒント 2
長さ 以上の文字列は末尾 文字だけで類が決まります。長さ の文字列 は、長さ の文字列 と同値になることを確かめましょう。
ヒント 3
長さ 以上の文字列から 個の類ができます。長さ 以下の文字列 個は、どれも互いに、また長さ 以上の類とも区別できます(1 文字だけつなぐ、などの を工夫してください)。あとは合計するだけです。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
マイヒル・ネローデの定理より、最小 DFA の状態数は、同値関係
の同値類の個数に等しい。以下、 で文字 と異なる方の文字を表す。
1. 同値類の候補を数える。
(ア) 長さ 以上の文字列 : なので、 かどうかは の末尾 文字だけで決まる。その末尾 文字は「 の末尾 文字」と で決まるから、末尾 文字が同じ文字列どうしは同値である。末尾 文字 は 通りある。
(イ) 長さ の文字列 :(長さ )と同値である。実際、 のとき は長さ不足で、 は先頭 と末尾 が異なるので、どちらも に属さない。 のとき で、 と の末尾 文字は一致するので判定は同じである。よって長さ の文字列は (ア) のどれかの類に入り、新しい類を作らない。
(ウ) 長さ の文字列: 個ある。
したがって同値類は高々 個である。
2. これらがすべて互いに区別できることを示す。
まず、末尾 文字が の文字列に長さ ()の をつなぐと、末尾 文字は になる。よって受理される条件は である。
(i) (ア) の異なる 2 つの類(末尾 と ):ある で ならば、、 とすると、前者は受理され、後者は受理されない。 ならば かつ である。このとき とすると、一方だけが受理される。
(ii) (ア) の類と、長さ の文字列 :(1 文字)とすると、前者は受理される。 は長さ なので受理されない。
(iii) 長さ の :、 とすると、 は長さ で先頭と末尾がともに なので受理される。 は長さ なので受理されない。
(iv) 同じ長さ で、 文字目が異なる : とする()。このとき で、末尾から 番目は の 文字目 である。 とすると は受理され、 は末尾から 番目が なので受理されない。
以上より同値類はちょうど
個であり、これが最小 DFA の状態数である。
(確認: のとき は または で終わる文字列全体で、状態数は 。 のときは である。)
別解
のミニマル DFA の状態数を、マイヒル・ネローデ同値類の個数として数える。
長さ 以上の語。 末尾 文字を とする。続く文字列 について次が成り立つ。
- ()のとき、 は と の最後の文字が等しいことと同値である。
- のとき、結果は だけで決まる。
- のとき、結果は かどうかで決まる。
よって の将来の振る舞いは、 と、 か否かの 1 ビットで決まる。これらは互いに区別できる。
- が異なれば、長さ の適当な で区別できる。
- 1 ビットが異なれば、 で区別できる。
どの組合せも長さ の語で実現できるので、この型の状態は 個ある。
長さ 以下の語。
- 長さ の語 は、 で受理されない長い語と同値である。すでに数えた状態に含まれる。
- 長さ の語は、長さ 1 の でも受理されない()。長い語は、 の最後の文字を に合わせれば長さ の受理される が必ず存在するので、区別できる。
- 長さ の語どうしも、長さが異なれば ()で区別できる。長さが同じで内容が異なる場合も区別できる。
この型の状態は 個ある。
合計。 個。
検算。 では 個になる。 と、(最後の文字 または ) × (受理か否か) の 4 状態である。これは「 または で終わる語」の最小 DFA と一致する。
答え: