12

正規言語の NFA から最小限の DFA に移行する方法はよく知られています。ただし、DFA には指数関数的に多くの状態が含まれる場合があります。

私が必要としているのは、NFA を減らす方法であり、NFA を再び与えますが、状態の数は少なくなります。結果が決定論的である必要はありませんが、認識された言語を維持しながらできるだけ小さくしたいと思います (おそらく完全に最適というわけではありませんが、小さいほど良いです)。

この問題に最適なアルゴリズムは何ですか? または、おそらく「最高」ではなく、少なくとも「非常に効率的に実装するのが最も簡単」ですか?それとも、自分で適切な情報源を見つけることができるように、問題によく知られている名前がありますか?

4

2 に答える 2

9

この問題は、NFA の最小化としても知られていると思います。一般的にNP困難だと思います。

有益なアプローチの 1 つは、Bisimulation Minimization [Paige, Tarjan 1987] とその後の導関数です。

このプレゼンテーションには、問題の扱いやすさに関するいくつかのメモと、いくつかのアプローチへの参照があり、それらの相対的なメリットが詳しく説明されています。

于 2010-07-31T17:16:52.247 に答える
2

NFA 最小化のための亀田 - ワイナー アルゴリズムの実装がここにあります:

于 2013-08-24T23:58:36.057 に答える