例:以下のシンボルシーケンスが与えられた場合、
a b c b c d d d b c b c d d d d e
それを受け入れることができる最も単純なDFAは、17の状態のチェーンです。
以下の正規表現は上記のシーケンスを導き出すことができますが、
a (b c)* (d)* (b c)* (d)* e
また、対応する最小DFAには8つの状態があります。
さらに、正規表現a ((b c)* (d)*)* e
には、4つの状態を持つさらに小さい最小DFAがあります。そして、それはサンプルシーケンスを受け入れることができます。
上記の例では、*
演算子のみを考慮しています。より一般的には、オペレーター|
はDFAサイズを縮小することも考えられます。
したがって、一般的な質問は次のとおりです。
一連のシンボルが与えられた場合、それを受け入れることができる最小のDFAを見つける方法は?