Dlaczego potrzebne są terminale? Czy moje rozwiązanie jest wystarczające?
Próbuję skupić się na gramatyce wolnej od kontekstu i myślę, że jestem blisko. To, co mnie dziwi, to jedno pytanie (robię pytania ćwiczeniowe, ponieważ mam egzamin za miesiąc):
Wymyśliłem ten język, ale uważam, że to źle.
S --> aSb | A | B
A --> aA | Σ
B --> bB | Σ
Najwyraźniej jest to właściwe rozwiązanie:
S --> aSb | aA | bB
A --> aA | Σ
B --> bB | Σ
Nie do końca rozumiem, dlaczego tak jestS --> aSb | aA | bB
i nie tylkoS --> aSb | A | B
. Jakie są potrzeby terminali? Czy nie mogę po prostu zadzwonić do A i w ten sposób chwycić terminale?
Testowanie, aby sprawdzić, czy mogę wygenerować ciąg: aaabbbb
S --> aSb --> aaSbb --> aaaSbbb --> aaaBbbb --> aaabbbb
Wierzę, że generuję łańcuch poprawnie, ale nie jestem pewien. Mówię sobie, dlaczegoS --> aSb | aA | bB
czy to jeśli zaczniemy odaA
a następnie zastąpA
za
, mamy dwaa
który daje nam nasz poprawny ciąg, ponieważ nie są równe, można to zrobić również za pomocą b. Wszelkie porady są bardzo mile widziane.
W krotkę (krotka G-4)
V (Brak terminali) = {A, B}
Σ (Terminale) = {a, b}
P = {} // nie jestem pewien, jak wyrazić moje rozwiązanie w R? Czy w tym celu musiałbym użyć ciągu testowego?
S = A