DFA最小化のためのBrzozowskiのアルゴリズム


15

BrzozowskiのDFA最小化アルゴリズムは、以下によってDFA 最小DFAを構築Gします。

  1. 内のすべてのエッジ反転G、初期状態を作るAN状態を受け入れ、NFA取得するには、初期状態を受け入れるN逆言語に対して、
  2. パワーセット構造を使用して、逆言語のを取得しGます。
  3. のエッジを反転(および初期受け入れスワップ)して、元の言語のGNFA を取得します。N
  4. Gmin

もちろん、一部のDFAには指数関数的な大きな逆DFAがあるため、このアルゴリズムは入力のサイズに関して最悪の場合指数関数的に実行されるため、逆DFAのサイズを追跡できます。

場合は入力DFAのサイズは、最小限DFAの大きさで、かつ最小限逆DFAの大きさを、その後の面でBrzozowskiのアルゴリズムの実行時間何であるNN、およびmは nは mはNnmNnm

特に、Brzozowskiのアルゴリズムはmのどの関係で、HopcroftまたはMooreのアルゴリズムよりも優れていますか?nm

Practice / Applicationの典型的な例では、Brzozowskiのアルゴリズムが他のアルゴリズムよりも優れていると聞いています。非公式には、これらの典型的な例はどのようなものですか?


これらのアルゴリズムのO(f(n))推定値を含めると便利です。「平均」の場合、それらはすべてO(n log(n))ですか?その場合、相対的なパフォーマンスに関する議論は、入力の統計的特性/構造に応じて主に適用されるテストである可能性があります...逆NFAが「大きくない」場合、Brzozowskiはすぐに実行される可能性が高いようです...?
vzn

アルゴリズムの実行に注意してください。1および3を実行するときに、仮想スタート状態を導入しようとする場合があります。これにより、誤った結果が生じます- こちらを参照してください。(質問では間違っていません。間違えないように注意する必要があります。)
A.Schulz

回答:


5

3番目の質問に関する部分的な回答を次に示します。実際、恐らくBrzozowskiのアルゴリズムは、DFAの最小化において他のすべてのアルゴリズムよりも明らかに優れているわけではありません。

[1]では、著者はDFA / NFA最小化アルゴリズムの実際のパフォーマンスを調査しています。アルゴリズムは、Hopcroft、Brzozowski、およびWatsonの2つのバリアントです。明確な勝者はいないと彼らは結論付けていますが、Hopcroftのアルゴリズムは、小さなアルファベットのDFAでより良いパフォーマンスを発揮します。NFAにとって、Brzozowskiは明らかに最速のものです。

論文自体は非常に短く、明確に書かれています。役に立つかもしれない追加の議論と参考文献もあります。


[1] Almeida M.、Moreira N.、およびReis R.オートマトン最小化アルゴリズムのパフォーマンスについて、第4回欧州での計算可能性に関する会議、2008年6月。


ありがとう、私は論文を見て、完全な答えを見つけるために参照を使用できるかどうかを確認します。
アルテムKaznatcheev

5

以下のほとんどは構文解析理論によるものです SippuとSoisalon-Soininenのによるものです。

してみましょう DFAの状態の集合とします。してみましょうTは入力アルファベットなります。しましょう| M | = O | T || Q |はマシンのサイズです。演習3.40では、状態を最小化するためのO | T || Q | 2アルゴリズムを提供します。以下のようウィキペディアは説明し、ホップクロフトのアルゴリズムは、実行中の時間があるOを| T || Q |ログQT|M|=O(|T||Q|)O(|T||Q|2)とムーアのアルゴリズムが実行中の時間がある O | T | 2| Qを|O(|T||Q|log|T|)O(|T|2|Q|)

定理3.30では、サブセットの構築が可能であり、サイズO 2 | T | + log | Q |)のオートマトンが得られると述べています。結果のオートマトンは| T |状態を持ち、実行時間は| T | + | T || MO(2|T|+log|T|+log|Q|)O(2|T|+log|Q|)|T|(|T|+|T||M|)|Q|)。したがって、2つの反転と2番目の決定は実行時間では重要ではないため、Brzozowskiのアルゴリズムの漸近的な実行時間は、サブセット構築のそれと同じです。

(a|b)akk+1O(2k)

|T|=O(|T|)O(|T|2|Q|2)|T||Q|O(|T||Q|) running time on 'good' inputs.

Unfortunately, I'm not familiar enough with Hopcroft's or Moore's algorithms to give an analysis of their running times in typical cases. Wikipedia talks about a O(|T|loglog|T|) running time in some cases, which would make the three algorithms comparable.


1

De Felice and Nicaud show that Brzozowski's algorithms is asymptotically hyper-polynomial. David has shown that, for several distributions on final states, Hopcroft's algorithm is slower that Moore's algorithm.

References

S. De Felice and C. Nicaud, "Brzozowski Algorithm is Generically Super-Polynomial for Deterministic Automata". In Proceedings of 17th International Conference on Developments in Language Theory (DLT 2013), Lecture Notes in Computer Science, pp. 170–190, 2013. (PDF)

J. David, "Average complexity of Moore’s and Hopcroft’s algorithms". Theoretical Computer Science, 417:50–65, 2012. (Science Direct)

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