[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

xyo
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 7 gru 2015, o 02:18
Płeć: Mężczyzna
Lokalizacja: Polska

[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

Post autor: xyo »

Witam.
Od kilku dni bezskutecznie próbuję znaleźć jakiegokolwiek rozwiązania podobnego problemu. Otóż mam takie reguły produkcji w gramatyce bezkontekstowej:
\(\displaystyle{ S \rightarrow b \\
S \rightarrow aSaS}\)


Kilka przykładowych słów:
\(\displaystyle{ b\\
a b a b\\
a b a a b a b\\
a a b a b a b\\
a b a a b a a b a b\\
a b a a a b a b a b\\
a a b a b a a b a b\\
a a b a a b a b a b\\
a a a b a b a b a b\\
a b a a b a a b a a b a b\\
a b a a b a a a b a b a b\\
a b a a a b a b a a b a b\\
a b a a a b a a b a b a b\\
a b a a a a b a b a b a b\\
a a b a b a a b a a b a b\\
a a b a b a a a b a b a b\\
a a b a a b a b a a b a b\\
a a b a a b a a b a b a b\\
a a b a a a b a b a b a b\\
a a a b a b a b a a b a b\\
a a a b a b a a b a b a b\\
a a a b a a b a b a b a b\\
a a a a b a b a b a b a b}\)


Rozumiem że w takim przypadku można zamieniać \(\displaystyle{ S}\), na '\(\displaystyle{ b}\)' lub '\(\displaystyle{ abab}\)' w dowolnej konfiguracji w każdym kroku rekurencji, ale nie potrafię opisać tego wzorem. Doszedłem do czegoś takiego
\(\displaystyle{ b + a^{n}b(ab)^{n} + (aba)^{m}b \\
n,m=0,1,..}\)

ale to zgadza się tylko z 4 pierwszymi wyrazami, a dla dalszych kroków rekurencji gubi wyrazy...
Czy mógłby mi ktoś wytłumaczyć, czy da się to zrobić, a jeśli da, to jak?
Ostatnio zmieniony 7 gru 2015, o 10:07 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Używaj LaTeXa do wszystkich wyrażeń matematycznych.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

Post autor: Afish »

To najpierw pokaż czy ta gramatyka jest regularna.
xyo
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 7 gru 2015, o 02:18
Płeć: Mężczyzna
Lokalizacja: Polska

[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

Post autor: xyo »

Myślałem, że każdą g. bezkontekstową można opisać za pomocą wzoru

Więc inaczej... Jeśli na wejściu wprowadzam zbiór reguł gramatyki bezkontekstowej, a na wyjściu mam wygenerować wzór dla języka, to muszę najpierw sprawdzić czy jest to gramatyka regularna, tak?

W sumie ułatwiłoby mi to robotę, bo pojedyncze rekurencje w regułach to nie problem, a od 2 dni walczę z wielokrotnymi, jak w tym przykładzie. A najwidoczniej walczyłem z wiatrakami... :v

Tylko to wydaje mi się dziwne, bo np. w gramatyce tylko bezkontekstowej, ale nie regularnej:
\(\displaystyle{ S \rightarrow aSb | c}\)
można bez problemu wyprowadzić wzór:
\(\displaystyle{ a^{n}cb^{n} , n=0,1,...}\)

Zatem czy istnieje możliwość rozpoznania po samych regułach (po uprzednim usunięciu r. niepotrzebnych i cykli) czy istnieje wzór opisujący dany język?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

Post autor: Afish »

Nie wiem, czy da się zapisać każdą bezkontekstową jako wzorek. Nie kojarzę dowodu, ale kompilatorów uczyłem się kilka lat temu, więc z pewnością moja wiedza nie jest pierwszej świeżości. Niemniej jeżeli nie jesteś w stanie pokazać, że gramatyka jest regularna, to ja nie znam innej metody niż zgadywanie.
xyo
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 7 gru 2015, o 02:18
Płeć: Mężczyzna
Lokalizacja: Polska

[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej

Post autor: xyo »

Problem rozwiązany. Gramatykę tego typu można opisać wzorem z sumą, a mianowicie
ODPOWIEDZ