Narysować grafy dla automatów determistycznych skończonych.

Narysować grafy dla automatów determistycznych skończonych.
F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Witam,

Czy mógłby ktoś udzielić wskazówek jak narysować taki graf, mam 2 zadania do zrobienia i nie wiem w jaki sposób to zacząć:

Narysować grafy dla zupełnych deterministycznych automatów skończonych
akceptujących następujące języki nad alfabetem E={0,1}.

a.)
zbiór wszystkich słów, które nie zawierają ciągu symboli „0101”

b.)
zbiór wszystkich słów, w których trzeci symbol od końca jest zerem

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
F1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

dzięki, jeszcze potrzebowałbym to:
Podac wyrażenia regularne definiujące porawne łańcuchy reprezentujące w języku C, deklarację jednej zmiennej lub kilku kolejnych zmiennych typu całkowitego.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

No i gdzie masz problem? Wypisz sobie poprawne deklaracje:

Kopiuj
int x;
int x,y,z;
int   x,   , y,  z;

I teraz spróbuj to generalizować regexpem. Widać że zawsze zaczynasz od int oraz spacji/tabulator, potem masz indentyfikatory przedzielone przecinkami a na koniec średnik. Identyfikator w C nie może zaczynać sie liczbą, więc sam identyfikator to jakieś [a-zA-Z][a-zA-Z0-9]*. Potrzebny nam co najmniej jeden. Można więc tak:

Kopiuj
int\s+([a-zA-Z][a-zA-Z0-9]*\s*,\s*)*[a-zA-Z][a-zA-Z0-9]\s*;

gdzie przez \s oznaczam spacje i tabulatory. Da się na pewno ładniej i krócej ;)
Dla czytelności:

Kopiuj
identyfikator = \s*[a-zA-Z][a-zA-Z0-9]*\s*
lista = (identyfikator,)*
ostatni = identyfikator;
deklaracja = int lista ostatni

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.