技能一覧 › 大学数学 オートマトン・形式言語

DFA の最小化(区別可能な状態の対)

到達不能な状態を除き、区別可能な状態の対を表で順に印をつける方法(または同値類の分割の細分)で同値な状態をまとめ、与えられた DFA と同じ言語を受理する最小 DFA の状態数を求められる

前提

説明

有限オートマトン(DFA)は、同じ言語を受理するものでも状態数がいろいろあります。この技能では、到達できない状態を取り除いたあと、「どんな入力を続けても受理・不受理の結果が変わらない」状態どうしを見つけてまとめます。こうして、同じ言語を受理する DFA のうち状態数が最も少ないもの(最小 DFA)とその状態数が求められます。回路やプログラムの状態機械を簡単にするとき、また 2 つの DFA が同じ言語を受理するかを調べるときに使います。

なぜそうしてよいのか

DFA を とします。 は状態 から文字列 を読んだあとの状態です。2 つの状態 について、ある文字列 があって と のちょうど一方だけが受理状態になるとき、 は区別可能であるといいます。どんな (空文字列 も含む)についても両方受理か両方不受理なら、 は同値であるといいます。同値な状態は、その先の振る舞いがまったく同じなので、1 つにまとめても受理する言語は変わりません。

区別可能な対は次の 2 つの規則で見つかります。(1) のとき:一方が受理状態で他方が受理状態でなければ区別可能です。(2) ある文字 について と が文字列 で区別可能なら、 は で区別可能です。逆に、区別可能な対 を区別する最短の文字列を とすると、 はより短い で区別されます。そのため、文字列の長さについての帰納法により、区別可能な対はすべていつかこの 2 規則で印がつきます。印がつかずに残った対がちょうど同値な対です。同値という関係は「 かつ なら 」を満たします。そのため、状態は同値なものどうしのグループ(同値類)に分かれます。また なら なので、まとめた後の遷移も矛盾なく決まります。

まとめた DFA が最小である理由は次のとおりです。まとめた後の状態が 個あり、どれも到達可能で、どの 2 つも区別可能だとします。各状態 に到達する文字列 を 1 つずつ選ぶと、 に対して と の一方だけが受理される があります。同じ言語を受理する別の DFA が と を読んで同じ状態にいたとすると、続けて を読んでも同じ状態になり、矛盾します。よってどの DFA も少なくとも 個の状態を持ちます。到達不能な状態を先に除くのは、それらが受理言語に関係しないのに、残しておくと状態数が余計に数えられてしまうからです。

手順

  1. 到達不能な状態を除く:初期状態 から遷移をたどって行ける状態をすべて集め、行けない状態を捨てる。

  2. 残った状態のすべての対 の表を作る。一方だけが受理状態である対( など)に印をつける。

  3. 印のない各対 と各文字 について、行き先の対 を調べる。それが印のついた対なら に印をつける(文字は 1 つで足りる。行き先が同じ状態なら、その文字では区別されない)。

  4. 手順 3 を表全体について繰り返し、1 周しても新しい印が 1 つも増えなくなったら止める。

  5. 最後まで印のない対は同値なので、同値な状態をまとめて同値類に分ける。同値類の個数が最小 DFA の状態数である(新しい遷移は、 を含む類から を含む類へとする)。

例題

アルファベット 上の DFA が次の遷移表で与えられている。初期状態は 、受理状態は のみである。

状態

この DFA と同じ言語を受理する最小 DFA の状態数を求めよ。

例題の解答

手順 1(到達不能な状態を除く): から へ行けます。 から 、 から へ行けます。 からは新しい状態へ行けません。 へ入る遷移は 自身からしかないので、 は到達不能です。残りは で、対は 個です。

手順 2(初期の印):受理状態は だけなので、 に印をつけます。

手順 3(1 周目):
- : で に行き、これは印あり。よって印をつける。
- : で (印なし)、 で (同じ状態)。今は印をつけない。
- : で に行き印あり。よって印をつける。
- : で に行き印あり。よって印をつける。
- : で (印なし)、 で (同じ状態)。今は印をつけない。
- : で に行き印あり。よって印をつける。

手順 4(2 周目):印のない対は と です。行き先は と 、 と で、どれも印がありません。新しい印は増えないので止めます。

手順 5(まとめる):印のない対は なので、同値類は の 3 つです。したがって最小 DFA の状態数は です(この DFA は「 で終わる文字列」を受理しています)。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題

この技能の次に学べること