実数を表す文字列を受理するオートマトン(訂正)

3年くらい前、実数を表す文字列を受理するオートマトンを実装してみた。
最近、簡単な正規表現DFAに変換するコードを書いてみてるけど、その中で、過去書いた日記に誤りを見つけたので、訂正しておく。

NFAの状態遷移の間違い

まず一点目は以下の日記。
yagiey.hatenablog.com
状態S_{14}の遷移先が間違ってた。正しくは以下。

状態S_{i} X Y Z .
S_{14} \{S_{15}\} \{S_{16},S_{17},S_{19}\}

DFAの状態遷移の間違い

二点目は以下の日記。
yagiey.hatenablog.com
状態\{S_{2},S_{3},S_{5},S_{13},S_{19}\}\{S_{14},S_{15}\}の遷移先が間違っていた。これに伴い状態\{S_{3},S_{4},S_{5},S_{13},S_{19}\}が増えた。
できたDFAの状態遷移表は以下。

状態 X Y Z .
\{S_{0}\} \{S_{1}\} \{S_{2},S_{3},S_{5},S_{13},S_{19}\} \{\} \{S_{9}\}
\{S_{1}\} \{\} \{S_{2},S_{3},S_{5},S_{13},S_{19}\} \{\} \{S_{9}\}
\{S_{2},S_{3},S_{5},S_{13},S_{19}\} \{\} \{S_{3},S_{4},S_{5},S_{13},S_{19}\} \{S_{14},S_{15}\} \{S_{6},S_{7},S_{13},S_{19}\}
\{S_{9}\} \{\} \{S_{10},S_{11},S_{13},S_{19}\} \{\} \{\}
\{S_{3},S_{4},S_{5},S_{13},S_{19}\} \{\} \{S_{3},S_{4},S_{5},S_{13},S_{19}\} \{S_{14},S_{15}\} \{S_{6},S_{7},S_{13},S_{19}\}
\{S_{14},S_{15}\} \{S_{15}\} \{S_{16},S_{17},S_{19}\} \{\} \{\}
\{S_{6},S_{7},S_{13},S_{19}\} \{\} \{S_{7},S_{8},S_{13},S_{19}\} \{S_{14},S_{15}\} \{\}
\{S_{10},S_{11},S_{13},S_{19}\} \{\} \{S_{11},S_{12},S_{13},S_{19}\} \{S_{14},S_{15}\} \{\}
\{S_{15}\} \{\} \{S_{16},S_{17},S_{19}\} \{\} \{\}
\{S_{16},S_{17},S_{19}\} \{\} \{S_{17},S_{18},S_{19}\} \{\} \{\}
\{S_{7},S_{8},S_{13},S_{19}\} \{\} \{S_{7},S_{8},S_{13},S_{19}\} \{S_{14},S_{15}\} \{\}
\{S_{11},S_{12},S_{13},S_{19}\} \{\} \{S_{11},S_{12},S_{13},S_{19}\} \{S_{14},S_{15}\} \{\}
\{S_{17},S_{18},S_{19}\} \{\} \{S_{17},S_{18},S_{19}\} \{\} \{\}

以下の表に従って、状態集合を新しい記号で置き換える。できるだけ元記事に合わせるために、増えた\{S_{3},S_{4},S_{5},S_{13},S_{19}\}P_{12}とした。

変換前 変換後
\{S_{0}\} P_{0}
\{S_{1}\} P_{1}
\{S_{2},S_{3},S_{5},S_{13},S_{19}\} P_{2}
\{S_{9}\} P_{3}
\{S_{3},S_{4},S_{5},S_{13},S_{19}\} P_{12}
\{S_{14},S_{15}\} P_{4}
\{S_{6},S_{7},S_{13},S_{19}\} P_{5}
\{S_{10},S_{11},S_{13},S_{19}\} P_{6}
\{S_{15}\} P_{7}
\{S_{16},S_{17},S_{19}\} P_{8}
\{S_{7},S_{8},S_{13},S_{19}\} P_{9}
\{S_{11},S_{12},S_{13},S_{19}\} P_{10}
\{S_{17},S_{18},S_{19}\} P_{11}

んで、最終的な表はこちら。

状態 X Y Z .
P_{0} P_{1} P_{2} P_{3}
P_{1} P_{2} P_{3}
P_{2} P_{12} P_{4} P_{5}
P_{3} P_{6}
P_{12} P_{12} P_{4} P_{5}
P_{4} P_{7} P_{8}
P_{5} P_{9} P_{4}
P_{6} P_{10} P_{4}
P_{7} P_{8}
P_{8} P_{11}
P_{9} P_{9} P_{4}
P_{10} P_{10} P_{4}
P_{11} P_{11}

訂正前のオートマトンではどういう入力の時に間違うのか具体的に調べてみようかな。