ランダムなDFAを生成して、DFA削減アルゴリズムをテストしています。
現在使用しているアルゴリズムは次のとおりです。各状態について、アルファベットcの各シンボルについて、ランダムな状態にδ (q 、c )を追加します。各状態は、最終状態になる確率が同じです。
これは、公平なDFAを生成する良い方法ですか?また、このアルゴリズムはトリムDFA(廃止された状態のないDFA)を生成しないので、ランダムなDFAを生成するより良い方法が何らかの方法で確実にトリムされているかどうか疑問に思いますか?
ランダムなDFAを生成して、DFA削減アルゴリズムをテストしています。
現在使用しているアルゴリズムは次のとおりです。各状態について、アルファベットcの各シンボルについて、ランダムな状態にδ (q 、c )を追加します。各状態は、最終状態になる確率が同じです。
これは、公平なDFAを生成する良い方法ですか?また、このアルゴリズムはトリムDFA(廃止された状態のないDFA)を生成しないので、ランダムなDFAを生成するより良い方法が何らかの方法で確実にトリムされているかどうか疑問に思いますか?
回答:
[1]とセクション4の議論をチェックしてください。ランダムオートマトンの生成。このペーパーでは、さまざまなDFA最小化アルゴリズムをベンチマークしています。状態とk個のシンボルを持つ完全なDFAの正規の文字列表現を生成する均一ランダムジェネレーターが使用されます。他の方法についても説明します。
[1] Almeida、M.、Moreira、N.、およびReis、R.(2007)。オートマトン最小化アルゴリズムのパフォーマンスについて。アルゴリズムの論理と理論、3。
Cyril Nicaudのホームページをご覧ください。特に、次の参考文献が質問に関連しています。
F.バッシーノ、J。デイビッド、およびC.ニコー、列挙および不完全な可能性のある決定論的オートマトンのランダム生成、Pure Mathematics and Applications 19(2-3)(2009)1-16。
F.バッシーノとC.ニコー。アクセス可能なオートマトンの列挙とランダム生成。理論。コンプ Sc。。381(2007)86-104。
順列http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gzまでランダムにDFAを生成するアルゴリズムがあります。
ただし、上記の論文では、ほとんどすべてのDFAがすでに最小限であることも言及されています。最小ではないDFAは素数のようなものです...それらの数はごくわずかです。このアルゴリズムを使用して最小化アルゴリズムをテストする場合、単純な乱数ジェネレータを使用して素数でアルゴリズムをテストする場合と同じようになります。最小限でないDFAを増やすには、シンク状態を追加してアルゴリズムを変更し、遷移の重要な割合をこのシンク状態にリダイレクトします。
しかし、私の見解では、実装の迅速性をテストする場合は、それを何に使用したいかをチェックします。ランダムワードセットまたはランダムREGEXを使用して、NFAまたはDFAを作成し、結果のDFAを最小化します。 。