Cześć. Nie wiem czy to dobry dział, bo jestem to początkujący. W razie czego proszę o wskazówki gdzie przenieść posta. Nie wiem jak zrobić takie zadanie:
"Zbuduj automat sprawdzający czy ciąg zbudowany z literek a i b ma parzystą ilość literek a i parzystą ilość literek b a dodatkowo ilość literek a minus ilość literek b jest podzielona przez 3."
Będę wdzięczny za pomoc lub jeśli nie, to może ktoś mnie skieruje do źródła przykładów automatów (teorię mam chodzi raczej o ćwiczenia z rozwiązaniami).
Dzięki!
Co już masz?
Zbuduj automat
Z czego? Z bramek logicznych? Pod postacią tabeli? Czy pod postacią rysunku?
To nie jest rozwiązanie, tylko jakiś przykładowy obrazek :P
Chodzi o rysunki. Mam osobne automaty (nie wiem czy dobrze), które sprawdzają czy różnica ilości liter jest podzielona przez 3 (pierwszy rysunek) i czy ilość liter jest parzysta (drugi rysunek dla litery a). I teraz nie wiem czy muszę trzy takie automaty połączyć na zasadzie iloczynu kartezjańskiego? Bo wtedy wychodzi 28 stanów... Czy da się jakoś prościej?
Najlepiej zacznij od zdefiniowania sobie zbioru stanów u Ciebie {Ilość a modulo 2} x {Ilość b modulo 2} x {a-b modulo 3}, czyli będzie 2x2x3 = 12 stanów.
Początkowy stan to [0,0,0] narysuj wszystki stany na kartce papieru i pracowicie połącz, np. [0,0,0] na literce b przejdzie w [0,1,2] (0-1=-1 mod 3 = -1 + 3 = 2)
[0,1,2] po dostaniu literki a przejdzie w [1,1,0] (0 bo = 2 + 1 = 3 mod 3 = 0).
Stany akceptujące to (u ciebie jeden): [0, 0, 0].
Ot tyle...
@0xmarcin: dzięki, Twoja odpowiedź jest bardzo jasna, już rozumiem . Gdybyś miał jakiś link albo plik z przykładami automatów, byłbym wdzięczny za przesłanie
@Geeek: http://kompilatory.agh.edu.pl/index.php?menu=automaty&type=zadania zestawy 9,10,12
@Shalom: dziękuje się