メモ Brzozowski のアルゴリズム

元論文が入手できればたぶん一発で理解できるのだが、メモ。

  • reverse - subset - reverse - subset の操作で NFA を最小化するアルゴリズム
  • NFA を反転させる操作 reverse は、オートマトンを図示した場合、すべての矢印の向きを反転させ、開始状態と終了状態を入れ替える操作である。
  • 元の NFA が複数の終了状態を持つ場合、reverse した NFA は複数の開始状態があることになる。
  • NFA に複数の開始状態は許されないと思っていたので、開始状態が複数生じた場合、その状態へε遷移する状態を勝手に追加してそれを開始状態としていた。わたしの勘違い。
  • NFA に複数の開始状態があっても、問題はない - subset 構成法で DFA にすればどうせ併合されるので。(たぶん)

敗因は数式をちゃんと追っていなかったこと、原著論文にあたらなかったこと、そして例をちゃんと検証しなかったこと。
「例示は理解の試金石」か。ちきしょう。