Brzozowskiのアルゴリズムの実装に関する問題


8

私は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つの異なる開始状態を補うために追加の状態を追加すると、その状態に戻るものは何もないため、後で同等にしてそれを取り除くことはできません元の開始状態に。

私のやり方に問題はありますか?何か不足していますか?

回答:


5

これはすばらしい質問です。

ε

M=QΣδq0FMR=QRΣδRq0RFR

  • QR=PQ
  • q0R=F
  • FR={PQ|q0P}
  • δRPa:={pQ|δpaP}

(到達不能な状態は無視したい場合があります。)

MRRLM

詳細については、サカロヴィッチの116〜117ページの「Elements of Automata Theory」をお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.