- Podać gramatyki bezkontekstowe generujące następujące języki:
- zbiór słów nad alfabetem {a,b}, które zawierają tyle samo a co b;
-
zbiór słów nad alfabetem {a,b}, które zawierają dwa razy więcej a niż b;
-
zbiór słów nad alfabetem {a,b} o długości parzystej, w których liczba wystąpień litery b na pozycjach parzystych jest równa liczbie wystąpień tej litery na pozycjach nieparzystych;
- zbiór wyrażeń arytmetycznych nad alfabetem {0,1,(,),+,⋅}, które, przy zwykłej interpretacji działań dla liczb naturalnych, mają wartość 3;
-
zbiór wyrażeń arytmetycznych w notacji polskiej (nad alfabetem {0,1,+,⋅}) o wartości 4;
-
zbiór poprawnie zbudowanych formuł rachunku zdań ze zmienną zdaniową p i stałymi logicznymi true, false (alfabet: {p,true,false,∧,∨,¬,(,)});
-
zbiór tych formuł z poprzedniego punktu, które przy każdym wartościowaniu zmiennej p mają wartość logiczną prawda (tzn. tautologii);
-
{aibjck:i≠j∨j≠k};
- {aibjak:i+k=j};
-
{aibjcpdq: i,j,p,q>0, i+j=p+q }.
-
Dla danych gramatyk bezkontekstowych G,H, skonstruować gramatyki generujące języki L(G)∪L(H), L(G)L(H), (L(G))∗, (L(G))R (=lustrzane odbicie).
-
Wykazać, że zbiór palindromów nad ustalonym alfabetem jak również jego dopełnienie są językami bezkontekstowymi.
-
Napisać gramatykę bezkontekstową (jak najkrótszą) generującą język:
L = { aibj : i,j≥1; i<2j−1 }
- Skonstruować gramatykę bezkontekstową z jednym symbolem nieterminalnym generującą zbiór {x∈(a+b)∗ : #a(x)=#b(x) }, gdzie #s(w) oznacza liczbę wystąpień symbolu s w słowie w.
-
Skonstruować gramatykę bezkontekstową jednoznaczną generującą język D1 poprawnie uformowanych wyrażeń nawiasowych (por. Rozdział ??, Zadanie ?? ).
-
Napisać gramatyki bezkontekstowe generujace zbiór tych słów z języka D1, które
-
zawierają parzystą liczbę (np. 0) nawiasów otwierających,
-
nie zawierają podsłowa (()).
-
Skonstruować gramatykę bezkontekstową jednoznaczną generującą język z Zadania ??.
Wskazówka. Rozważyć gramatykę
Z→ZaZ+b|ZbZ−a|ε
Z+→Z+aZ+b|ε
Z−→Z−bZ−a|ε
Zauważyć związek miedzy produkcjami dla Z+ a poprzednim zadaniem (podobnie dla Z−).
-
Dowieść, że następujące warunki są równoważne dla języka L⊆Σ∗:
-
L jest regularny,
-
L jest generowany przez gramatykę bezkontekstową, w której każda reguła jest postaci X→ϵ, X→Y, lub X→σY, σ∈Σ,
-
L jest generowany przez gramatykę bezkontekstową, w której każda reguła jest postaci X→ϵ, X→Y, lub X→Yσ, σ∈Σ,
-
L jest generowany przez gramatykę bezkontekstową, w której każda reguła jest postaci X→α lub X→βY, α,β∈Σ∗.
-
Podać przykład gramatyki bezkontekstowej w której każda reguła jest postaci X→ϵ, X→Y, X→σY lub X→Yσ, σ∈Σ, ale język generowany przez gramatykę nie jest regularny.
- Czy każdy język bezkontekstowy jest generowany przez gramatykę w postaci z poprzedniego zadania?
- Powiemy, że gramatyka G ma własność właściwego samozapętlenia, jeśli dla pewnej zmiennej X zachodzi XG→∗αXβ, gdzie α,β≠ϵ. Udowodnij, że gramatyka bezkontekstowa nie mająca własności właściwego samozapętlenia generuje język regularny.
-
Udowodnij, że każdy język bezkontekstowy nad jednoliterowym alfabetem jest regularny.
-
Udowodnij, że jeśli L jest bezkontekstowy to język {a|w| : w∈L} jest regularny.
-
Niech G będzie gramatyką bezkontekstową, z m zmiennymi i niech, dla każdej reguły YG→w, |w|≤ℓ. Dowieść, że jeśli XIG∗→ϵ, to istnieje wyprowadzenie o długości 1+ℓ+ℓ2+…+ℓm−1. Czy to oszacowanie jest optymalne?
-
Dowieść, że dla każdej gramatyki G istnieje stała C, taka, że dla dowolnego w≠ϵ, jeśli XIG∗→w, to istnieje wyprowadzenie o długości ≤C⋅|w|.
-
Załóżmy, że mamy pewną skończoną liczbę reguł wymazujących postaci α→ϵ. Stosując takie reguły możemy w danym słowie zastępować słowo α przez słowo puste. Niech L będzie zbiorem słów, które możemy przekształcić na słowo puste stosując reguły wymazywania.
Czy zawsze istnieje gramatyka bezkontekstowa generująca L i mająca tylko jeden symbol nieterminalny ?
- Zaprojektować algorytm, który, dla danej gramatyki G, odpowiada na pytanie, czy język L(G) jest nieskończony.
- Udowodnij, że każdy język bezkontekstowy może być generowany przez gramatykę w której każdy symbol nieterminalny (poza być może symbolem początkowym) generuje nieskończenie wiele słów terminalnych.