2. gyakorlat
1.14. Feladat
Döntsük el, hogy az alábbi nyelvek végesek vagy végtelenek! A végteleneket kezdjük el felsorolni lexikografikusan!
| \(\varnothing\) | véges |
| \(\{\varepsilon\}\) | véges |
| \(\{a^nb^n \; \| \; n \geq 0\}\) | \(\{\varepsilon, ab, aabb, aaabbb, \dots\}\) |
| \(\{a^nb^n \; \| \; n \geq 0\}\) | \(\{\varepsilon, ab, aabb, aaabbb, \dots\}\) |
| \(\{a\}^*\{b\}^*\) | \(\{\varepsilon, a, b, aa, ab, bb\}\) (véges) |
| \(\{ a^n b^k \;\) | \(\; n \geq 0\), \(k \geq 0\}\) | \(\{\varepsilon, a, b, aa, ab, bb, aaa, aab, abb, bbb, \ldots\}\) |
| \(\{ u\in\{a,b\}^*\| u=u^{-1} \}\) (palindrom szavak) | \(\{\varepsilon, a, b, aa, bb, aaa, aba, bab, bbb, \ldots\}\) |
| \(\{ uu^{-1} \| u\in\{a,b\}^* \}\) | TODO |
Nyelvtanok (grammatikák)
Definíció: Grammatikának (nyelvtannak) a következő négyest nevezzük:
\(G = (N,T,P,S)\)
- \(N\): a nemterminális ábécé
- \(T\): a terminálisok ábécéje
- \(P\): átirányítási szabályok véges halmaza
- \(S\): a kezdőszimbólum
Példa
| - OR (ejtsd: csík)
S: start szimbólum
(\(\Rightarrow\)) = levezetési lépés jelőlése
The goal: Eljutni egy olyan állapotba hogy csak kisbetűk legyenek, nagybetűk bad because yes.
Ami megegyezik: \(L(G)=\{a\}\{b\}^*\{c\}=\{ab^nc|n \geq 0\}\)
"Látunk szabály bal oldalán betűt és átírjuk másik betűre a szabály jobb oldala alapján"
- Logika 101
1. feladat
- Mely szavak vezethetők le az alábbi nyelvtanokból? (A kezdőszimbólumot S jelöli.)
1. feladat / a
Ez már volt!
1. feladat / b
\(S \Rightarrow aaSb \Rightarrow aaaaSbb \Rightarrow \cdots \Rightarrow aaaaaaaaaabbbbb\)
\(\varepsilon, aab, aaaabb, ...\) = \(\{a^{2n}b^n\;|\; n \geq 0\}\)
1. feladat / c
\(S \Rightarrow \green{YSb} \Rightarrow Y\green{YSb}b \Rightarrow YY\green{V}bb \Rightarrow Y\green{Vaa}bb \Rightarrow \green{aaa}aabb\)
(Zöld: az újonnan beírt rész)
\(\{a^{2n+1}b^n \; | \; n \geq 1\}\)
n-szer alkalmazzuk az első szabályt: \(Y^nVb^n\)
3. szabályt ismételjük, ameddig csak egy \(YV\) marad. (tehát n-1 alkalommal). Ez minden iterációkor 2 \(aa\)-t add hozzá
alkalmazzuk a 4. szabályt (ez a string elejére helyez \(aaa\)-t)
Nyelvek fajtái
- környezetfüggő
- A szabály bal oldalán is lehet tetszőleges számű terminális és nemterminális szimbólum
- környezetfüggetlen
- A szabály bal oldalán csak EGY nemterminális szimbólum szerepelhet (pl. bötűűű)
1. feladat / c folytatása
megegyező, de környezetfüggetlen
Eredeti (környezetfüggő):
Átalakított (környezetfüggetlen):
\(S \Rightarrow aaaVb \Rightarrow aaaaaVbb \Rightarrow aaaaabb\)
2. feladat
Készítsünk nyelvtant, mely azokat az \(u \in \{a, b\}^*\) szavakat fogadja el, melyek a-val kezdődnek és b-vel végződnek!
\(S \Rightarrow aBb \Rightarrow ?\)
3. feladat
Készítsünk nyelvtant a 4-gyel osztható bináris számok nyelvéhez!
4 binárisan: \(100\)
Példák: \(0 = 0\), \(100 = 4\), \(1000 = 8\), \(1100 = 12\), \(10000 = 16\)
\(0: S \Rightarrow 0 \Rightarrow 1B \Rightarrow 100\)
\(100: S\) etc
4. feladat
Készítsünk nyelvtant, mely \(\{a^n b^n \mid n \geq 1\}\) szavait fogadja el!
Hárommal osztható számok, for shits and giggles
Szorgalmi házi
5. feladat
ZH plusz pont
\(\varepsilon, ab, ba, aabb, \dots\)
Egy megoldás: \(S \to \varepsilon \mid aSbS \mid bSaS\)