Wyrazenia regularne - Konwersje
Transkrypt
Wyrazenia regularne - Konwersje
Wyrażenia regularne Konwersje Adam Kobus Updated: 4 maja 2016 wyrreg2 Metoda eliminacji stanów (AS → Regex) Metoda eliminacji stanów Automaty można zamieniać na wyrażenia regularne poprzez eliminację stanów pośrednich. Eliminacji takiej dokonuje się aż do momentu otrzymania automatu dwustanowego (jeśli stan początkowy nie jest akceptujący) lub jednostanowego. Dokonujemy tego zastępując etykiety przejść wyrażeniami regularnymi. Eliminując stany łączymy wyrażenia regularne na etykietach, budując coraz bardziej złożone wyrażenia. Język takiego automatu jest sumą teoriomnogościową wyrażeń opisujących wszystkie ścieżki ze stanu początkowego do akceptującego. Schemat konstrukcji # ∀q dokonujemy redukcji w celu otrzymania równoważnego automatu z krawędziami opisanymi za pomocą wyrażeń regularnych # q 6= q0 ⇒ pozostanie automat dwustanowy. Przykład generyczny: (R + SU ∗ T )∗ SU ∗ # q = q0 ⇒ pozostanie automat jednostanowy z pętlą ze stanu początkowego. Jeżeli etykietą będzie R, to językiem będzie R ∗ # wynikowe wyrażenie regularne będzie sumą teoriomnogościową wszystkich wyrażeń wyprowadzonych ze zredukowanego automatu dla każdego stanu akceptującego za pomocą reguł z poprzednich dwóch punktów Przykład Pierwszy krok to zastąpienie symboli na etykietach odpowiednimi wyrażeniami regularnymi. Przykład Następnie dokonujemy eliminacji stanu B (nie jest ani początkowy, ani akceptujący). Zauważyć można, że ze stanu A do stanu C można przejść poprzez wyrażenie regularne 1(0 + 1). W tym momencie trzeba wprowadzić rozgałęzienie, aby uzyskać dwa automaty zredukowane, każdy z jednym ze stanów akceptujących. Przykład (gałąź D) Sięgając po generyczny dwustanowy automat ((R + SU ∗ T )∗ SU ∗ )): R S T U 0+1 1(0 + 1)(0 + 1) ∅ ∅ (R + S∅∗ ∅)∗ S∅∗ = R ∗ S = (0 + 1)∗ 1(0 + 1)(0 + 1) Przykład (gałąź C ) R S T U 0+1 1(0 + 1) ∅ ∅ (R + S∅∗ ∅)∗ S∅∗ = R ∗ S = (0 + 1)∗ 1(0 + 1) Co w sumie daje: (0+1)∗ 1(0+1)(0+1)+(0+1)∗ 1(0+1) = (0+1)∗ 1(0+1)(ε+0+1) Zadania Zadanie 1 Zadanie 2 Zadanie 3 Zadanie 4 → ?q0 q1 q2 q3 a {q1 , q2 } ∅ {q0 } {q0 } b {q3 } {q0 } ∅ {q0 }