これをチェックしてください。このような質問に答えるための3つの優れたアルゴリズム的方法を示しています。あなたが時間や傾きがある場合は、それらの1つ、またはそれらの3つすべてを学びます。状態除去はかなり直感的ですが、私はKleeneの推移的閉包法が好きです。
http://krchowdhary.com/toc/dfa-to-reg-exp.pdf
EDIT:あなたのREが提供されているものと同等です。マーケットプレイスに彼らの削減です:
0. a*(a*ba*ba*ba*)*(a+a*ba*ba*ba*)
1. = a*(a*ba*ba*ba*)*a + a*(a*ba*ba*ba*)*a*ba*ba*ba*
2. = a*(ba*ba*ba*)*a + a*(ba*ba*ba*)*ba*ba*ba*
3. = a*a + a*(ba*ba*ba*)*a + a*(ba*ba*ba*)*ba*ba*ba*
4. = aa* + a*(ba*ba*ba*)*ba*ba*ba*a + a*(ba*ba*ba*)*ba*ba*ba*
5. = aa* + a*(ba*ba*ba*)*ba*ba*ba*
6. = aa* + aa*(ba*ba*ba*)*ba*ba*ba* + (ba*ba*ba*)*ba*ba*ba*
7. = aa* + aa*(ba*ba*ba*)* + (ba*ba*ba*)*ba*ba*ba*
8. = aa* + aa*(ba*ba*ba*)* + ba*ba*ba* + (ba*ba*ba*)*ba*ba*ba*
9. = aa* + aa*(ba*ba*ba*)* + ba*ba*ba* + ba*ba*ba*(ba*ba*ba*)*
ステップ1は、右のR(S + T)= RS + RT以来です。
ステップ2は、r *(r * sr *)* = r *(sr *)*の直後である。
L(s)がL(r)のサブセットである場合、r = r + sなので、ステップ3は正しいです。
ステップ4は、r * r = rr *とrs + rq * s = rs + rqq * sの直後である。
ステップ5は、rs + r = rなので正しいです。
ステップ6は、r * s = rr * s + sの直後です。
ステップ7は、rs + rqq * s = rs + rq * sの直後である。
L(s)がL(r)のサブセットである場合、r = r + sであるため、ステップ8は正しいです。
ステップ9は、r * r = rr *であるため正しいです。
ご質問やご指摘がありましたらお気軽にお問い合わせください。
EDIT2:この種の質問に興味がある場合は、このリンクにアクセスしてコミットすることで、新しいコンピュータサイエンススタックエクスチェンジについていくつかの愛を示してください。
http://area51.stackexchange.com/proposals/35636/computer-science-non-programming?referrer=rpnXA1_2BNYzXN85c5ibxQ2
2つのもの。あなたの写真の "G"は正規表現の "b"であると仮定します。また、「1」が初期状態で、「3」が最終状態であると仮定していますか? –
あなたの答えは本の書籍と同等だと思います。私の答えをチェックしてください。そこで、正規表現の代数に従って本の答えをあなたのものに変換できることを実証しようとします。 – Patrick87