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?
[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej
[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej
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.
Powód: Używaj LaTeXa do wszystkich wyrażeń matematycznych.
[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej
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?
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?
-
- 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
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.
[Gramatyki] Problem z rekurencją w gramatyce bezkontekstowej
Problem rozwiązany. Gramatykę tego typu można opisać wzorem z sumą, a mianowicie