私はBrzozowskiのアルゴリズムを実装しようとしましたが、それが特定のクラスの入力に対して次善のオートマトンを作成し、結果に実際に必要なものよりも1つ多い状態があることを発見しました。自明なオートマトンでそれを示すことができます:
a b a b a b a b a b
>0 0 1 rev *0 0,2 - det >0 - 1 rev *0 - - det >0 1 2
1 1 2 --> 1 1 0 --> 1 2 5 --> 1 - 0,4 --> 1 1 2
*2 0 2 >2 - 1,2 2 2 3 2 1,2 - 2 2 3
*3 4 - 3 - 2 *3 1 3
*4 4 1 4 3,4 -
*5 5 5 5 5 1,5
>6 3,4,5 1,2,5
ここREVは、私はすでにイプシロンの遷移を削除したいエッジ逆転一部である、とDETはすぐにそれが再帰的に、それらを発見すると、新しい状態を作成し、Powersetの建設を通じてdeterminizationです。
ここでの問題はこれです:最初のエッジ反転とパワーセットの構築後、3つの異なる開始状態を補うために追加の状態を追加すると、その状態に戻るものは何もないため、後で同等にしてそれを取り除くことはできません元の開始状態に。
私のやり方に問題はありますか?何か不足していますか?