Gdyby istniał tylko łańcuch stanów bez pętli, czy wiedziałbyś, co robić?
Gdyby istniała prosta pętla bez nakładających się rozgałęzień, czy wiesz, co robić?
(Jeśli odpowiedź brzmi „nie”, najpierw pomyśl o tych przypadkach).
Pomysł polega na stopniowym przekształcaniu automatu w formę, w której można dostrzec te wzorce: łańcuchy, pętle i rozbieżne ścieżki, które zbiegają się na końcu (co prowadzi do naprzemienności). Na każdym etapie transformacji upewnij się, że przekształcony automat nadal rozpoznaje ten sam język.
Należy pamiętać, że jest to non -deterministic automatem. Ten, który opublikowałeś, jest zdeterminowany, ale nie musi tak pozostać, kiedy go przekształcisz.
q2)q1→faq2)→solq3)q4q2)q5q4→jotq5→solq3)
q3), q4, q5q3)q3)( h j g)∗
Sprawdź, które stany są ostateczne. Pomoże to nie martwić się o to na początku i utworzyć jedną dużą pętlę, a następnie powielić części, które kończą się w połowie pętli.
To niekoniecznie jest najbardziej wydajna technika lub ta, która generuje najprostsze wyrażenie regularne, ale jest prosta.