L3Zad4 - Karol Marchwicki Wrocław, 11.11.2005r. Języki...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Karol Marchwicki Wrocław, 11.11.2005r. Języki formalne i teoria obliczeń zadanie nr 4 z listy nr 3 Treść: Skonstruować niedeterministyczny automat skończony rozpoznający język tych słów nad {0,1}*, które jako liczba w systemie dwójkowym dzielą się przez 5, przy czym liczba jest wczytywana począwszy od najmniej znaczącego bitu. Rozwiązanie: Zadanie to można wykonać konstruując na początku deterministyczny automat skończony rozpoznający powyższy język i wczytujący liczbę począwszy od najbardziej znaczącego bitu. Mając ten DFA łatwo otrzymać automat szukany w zadaniu poprzez odwrócenie kierunku strzałek w grafie opisującym DFA i zamianie stanu akceptującego ze stanem początkowym. Jeżeli DFA posiadałby więcej niż jeden stan akceptujący należy najpierw połączyć wszystkie stany akceptujące w jeden stan końcowy (jeszcze przed dokonaniem jakiejkolwiek zamiany). Konstrukcja DFA: Można przyjąć, że po przeczytaniu danego słowa automat znajduje się w stanie q i , gdzie i oznacza numeryczną wartość słowa w systemie dziesiętnym modulo 5. Dla przykładu ciąg symboli 111 odpowiada liczbie 7 w systemie dziesiętnym. Ponieważ 7 modulo 5 = 2, automat po wczytaniu tego ciągu znajdzie się w stanie q 2 . Poniższy DFA spełnia te warunki: q 0 2 1 0 q 1 q 0 0 3 1 1 1 q 0 q 1 4 0 M = (Q, Σ, δ, q 0 ,F) Q = {q 0 , q 1 , q 2 ,q 3 ,q 4 } Σ = {0,1} δ jest opisana przez powyższy graf q0= q0 F = {q 0 } Po odwróceniu kierunku strzałek można uzyskać szukany automat akceptujący język z zadania i wczytujący liczbę począwszy od najmniej znaczącego bitu. (zamiana stanów akceptującego i początkowego nic nie zmienia ponieważ w powyższym DFA stany te pokrywały się ze sobą). Otrzymany w ten sposób automat jest DFA, jednak każdy DFA jest także NFA, zatem spełnia on warunki zadania. Można go przedstawić za pomocą poniższego grafu: q 0 2 1 0 q 1 1 q 0 0 3 1 1 q 0 q 1 4 0 M’ = (Q, Σ, δ’, q 0 ’,F’), gdzie δ’(q j , a) = q i δ(q i , a) = q j dla każdego q i , q j Q, a Σ q0’ = F F’ = q 0 Dowód poprawności algorytmu zamiany NFA (każdy NFA jest DFA) akceptującego słowa x L(M) na NFA akceptujący słowa x R L(M’): Wystarczy pokazać, że: x R L(M’) x L(M) ) x R L(M’) istnieje ciąg przejść po stanach q 0 ’, q i , … , q j, F’ (dla q i , q j Q) etykietowany kolejnymi symbolami ze słowa x R istnieje ciąg przejść po stanach q 0 , q j , … , q i , F etykietowany kolejnymi symbolami ze słowa x x L(M) ) x L(M) istnieje ciąg przejść po stanach q 0 , q i , … , q j, F (dla q i , q j Q) (dla q i , q j Q) etykietowany kolejnymi symbolami ze słowa x istnieje ciąg przejść po stanach q 0 ’, q j , … , q i , F’ (dla q i , q j Q) etykietowany kolejnymi symbolami ze słowa x x R L(M’) ...
View Full Document

This note was uploaded on 01/03/2011 for the course EIT 234 taught by Professor Placek during the Spring '08 term at Al-Quds Open University.

Ask a homework question - tutors are online