これをチェックしてください。このような質問に答える 3 つの優れたアルゴリズム手法を紹介します。そのうちの 1 つ、または時間があれば 3 つすべてを学んでください。状態の除去はかなり直感的ですが、私は Kleene の推移閉包法が好きです。
http://krchowdhary.com/toc/dfa-to-reg-exp.pdf
編集: あなたの 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*)*
r(s+t) = rs + rt であるため、ステップ 1 は正しいです。
r*(r*sr*)* = r*(sr*)* であるため、ステップ 2 は正しいです。
L(s) が L(r) のサブセットである場合、r = r + s であるため、ステップ 3 は正しいです。
r*r = rr* および rs + rq*s = rs + rqq*s なので、ステップ 4 は正しいです。
rs + r = r であるため、ステップ 5 は正しいです。
r*s = rr*s + s なので、ステップ 6 は正しいです。
rs + rqq*s = rs + rq*s なので、ステップ 7 は正しいです。
L(s) が L(r) のサブセットである場合、r = r + s であるため、ステップ 8 は正しいです。
r*r = rr* であるため、ステップ 9 は正しいです。
ご不明な点がございましたら、お気軽にお問い合わせください。また、間違いを指摘していただくこともできます。
EDIT2: この種の質問に興味がある場合は、このリンクにアクセスしてコミットして、新しいコンピューター サイエンス StackExchange への愛を示してください!!!
http://area51.stackexchange.com/proposals/35636/computer-science-non-programming?referrer=rpnXA1_2BNYzXN85c5ibxQ2