私は2つのDFAを与えられます。 *は最終状態を示し、 - >はアルファベット{a、b}で定義される初期状態を示す。DFAで受け入れられる言語をより洗練された方法で表現できますか?
1) - > Aの場合はA→Aへ、bの場合は* Bへ行きます。 *付きのBは* Bになります。 * Bは - > Aに行きます。
このため、正規表現は明らかである: EはL1である= {W上{A * Bの(* +(*のBAの*のBA *)*)
そして、それが受け入れる言語= 、b} | wは任意の数のaの前に任意の数のaが続き、任意の数aの前に任意の数のbbが続き、bbの途中、末尾または先頭に任意の数のaが続きます。
2) - > * Aとbは - > * A - > * Aとなり、* Bとなります。 Bは - >に行きます。* BはC.に進み、C.はC.に進みます。
注:Aは最終状態と初期状態の両方です。 Bは最終状態です。
今、私はこれを取得する正規表現は次のとおりです。
E =のb *((AB)* +(* A)* BB)
最後に、このDFAが受け入れる言語は以下のとおりです。 L2 = {w、{a、b} | wはn 1の後にk 01またはaが続き、m 11、r 0はn、km、r> = 0である。
ここで問題となるのは、言語L1およびL2それは醜いように見えるからです。前もって感謝します。
'cleaner'を定義してください –
ねえ、ジェイソン、私が逃した可能性のあるREのパターン。 –