1. gyakorlat
16:00-kor kezdünk!
Formális nyelvek és fordítóprogramok alapjai
- Formális nyelvek
- fordítóprogramok

Mindig lesz hívás Team-en (nincs jelenléti ív)
- 2 ZH (1-1 a témakörökből)
- Jegy: két ZH átlaga
- ZH 30 pontos
- Feladatgyűjtemény Teams-en
- Lesznek szorgalmi feladatok ebből
Bevezetés
ábécé: Jelek egy nem üres, véges halmaza
betű: az ábécé elemei
szó: Egy \(V\) ábécé elemeinek véges sorozata \(\rightarrow\) \(V\) feletti szó (\(V^*\))
\(\varepsilon\): 0 hosszúságú szó
Nyelv: \(V^*\) valamely részhalmaza, a \(V\) ábécé feletti nyelv. Jele: L
- \(L \subseteq V^*\)
Lexikografikus rendezés:
- Szavak rendezése hossz szerint
- Azonos hosszúságú szavak rendezése a jól ismert ábécé rendezés szerint
Konkatenáció: összefűzés (egymás mögé írjuk a két szót dah)
Feladat (fgy/1.)
Megfordítással és konkatenációval létrehozva az alábbiakat az alábbiakból
aabcd, dcba, aa, 321b2, b123, b2, aab2, 321321b321, 123, abc, dcbaaaaaabcd
aa + b2 = aab2
dcba + aa + aa + rev abcd = dcbaaaaaabcd
123 + b2 = 123b2
dcbaaaaaabcd = dcba + aa + aa + rev(dcba)
321b2 = rev(123) + b2
321321b321 = rev(123) + rev(b123) + rev(123)
dcbaa + aa + aabcd
Második feladat +0.5 pont
Sorolja fel az összes, legfeljebb 6 hosszú szót, ami az alábbi kettőből előállítható összefűzés (konkatenáció) és megfordítási műveletek segítségével!
😛😬, 😍😷🙂
További alapfogalmak
- Részszó: a \(v\) részszava \(u\), ha van olyan \(w_1\) és \(w_2\) szavak, hogy \(u = w_1 \; v \; w_2\) - Valódi résszó, ha \(v \neq u\) és (\(w_1 \neq \varepsilon\) vagy \(w_2 \neq \varepsilon\))
- Szó prefixe: A \(v\) az \(u\) szó prefixe, ha van olyan \(w\) szó, hogy \(u = vw\).
- Valódi prefix, ha \(v \neq \varepsilon\) és \(v \neq u\).
- Szó suffixe: A \(v\) az \(u\) szó suffixe, ha van olyan \(w\) szó, hogy u = wv.
- Valódi suffix, ha \(v \ne \varepsilon\) és \(v \ne u\).
Feladat (fgy/3.)
Legyen \(V = \{a, b, c\}\) és legyen \(u1 = cca\), \(u2 = aabc\) egy–egy \(V\) feletti szó. Soroljuk fel u1 és u2 valódi részszavait, adjuk meg a hosszukat, konkatenáltjukat, tükörképüket, 0-adik, 1., 2. és 3. hatványukat!
\(u_1\) valódi részszavai: c, a, cc, ca, cca
\(|u_1| = 3\)
\(|u_2| = 4\)
\(u_1\) + \(u_2\) = ccaaabc
\(u_1^{-1}\) = acc (ez a fordított)
\(u_2^{-1}\) = cbaa (ez a fordított)
\(u_1^0 = \varepsilon\)
\(u_1^1 = \text{cca}\)
\(u_1^2 = \text{ccacca}\)
\(u_1^3 = \text{ccaccacca}\)
\(u_2^0 = \varepsilon\)
\(u_2^1 = \text{aabc}\)
\(u_2^2 = \text{aabcaabc}\)
\(u_2^3 = \text{aabcaabcaabc}\)
\(u_2\) valódi részszavai: a, b, c, aa, ab, bc, aab, abc, aabc
Feladat (fgy. 4)
\(\varepsilon\) = ""
{\(\varepsilon\), a, c, x, ba, ca, xy, yx, abc, bca, bxyz, xabc}
Feladat (fgy. 6)
Adja meg az alábbi két nyelv egyesítését (unióját), összefűzését (konkatenációját) és metszetét!
{@#, !%%}, {&@, @#, !%}
Unió: {@#, !%%, &@, !%} (hagyományos unió művelet)
Metszete: {@#} (hagyományos metszet művelet)
Konkatenációja: ???
\(L \subseteq V^*\) nyelv komplementere: \(\overline L = V^* \setminus L\) Két nyelv konkatenációja:
Gyakorlatilag egy Descartes szorzat
\(L_1L_2 := \{uv | u \in L_2 \land v \in L_2\}\)
\(\{\varepsilon\}L = L = L\{\varepsilon\}\)
\(L\emptyset=\emptyset=\emptyset L\)
LG =
[l + g for l in L for g in G]Nyelv tükörképe a szavak tükörképe\(L^{-1} := \{u \in V^* | u^{-1} \in L\}\)
Az üres nyelv és az egy üres elemet tartalmazó nyelv nem ugyanaz!
Üres elemet tartalmazó nyelv: {\(\varepsilon\)}
Üres nyelv: {}
nyelv hatványa
A 0. hatvány az 1 db üres elemet tartalmazó nyelv
Az 1. hatvány a nyelv önmaga
feladat (fgy. 6 (megint))
Konkatenációja: {@#&@, @#@#, @#!%, !%%&@, !%%@#, !%%!%}
amongusamonguamongus :sus: ඞඞ
Feladat (fgy / 7.)
Adja meg az alábbi nyelv nulladik, első, második és harmadik hatványát!
{x, xy, yyx} = L
\(L^0 = \{\emptyset\} \; \text{vagy} \; \{\varepsilon\}\)
\(L^1 = L = \{x, xy, yyx\}\)
\(L^2 = L^1L = \{xx, xxy, xyyx, xyx, xyxy, xyyyx, yyxx, yyxxy, yyxyyx\}\)
\(L^3 = L^2L = \{xxx , xxxy, xxyyx, xxyx, xxyxy, xxyyyx, xyyxx, xyyxxy, xyyxyyx, xyxx, xyxxy, xyxyyx, xyxyx, xyxyxy, xyxyyyx, xyyyxx, xyyyxxy, xyyyxyyx, yyxxx, yyxxxy, yyxxyyx, yyxxyx, yyxxyxy, yyxxyyyx, yyxyyxx, yyxyyxxy, yyxyyxyyx\}\)
Általánosan:
\(L^n := L^{n-1}L\) és
\(L^0 = \{\varepsilon\}\)
which insane person did \(L^3\) lmao ඞ (Boxy did)
Feladat (fgy. 9.)
Melyik nyelv(ek)nek a második hatványa a {\(\varepsilon\), 0, 1, 00, 01, 10, 11, 100, 010, 101, 110, 1010}?
\(L^0\) = {\(\varepsilon\)}
\(L^1 = L\) = {\(\varepsilon\), 0, 1, 10}
\(L^2 = LL\) = {\(\varepsilon\), 0, 1, 10, \(0\), 00, 01, 010, \(\red 1\), \(\red 10\), 110, \(\red 10\), 100, 101, 1010} = {\(\varepsilon\), 0, 1, 00, 01, 10, 11, 100, 010, 101, 110, 1010}
>>> a = ['', '0', '1', '10']
>>> set([x + y for x in a for y in a])
{'', '00', '010', '10', '110', '0', '1', '11', '101', '1010', '100', '01'} # somethings not right? no, it's fine. I think. Csak nincs lexikálisan rendezve ohhhh
a = ["", "0", "1", "10"]
[x ++ y | x <- a , y <- a]
["","0","1","10","0","00","01","010","1","10","11","110","10","100","101","1010"]
-- oh wait i have repeating
Nyelv lezártja
Fogjuk az összes hatványát, és uniózzuk őket
\(L^* = \bigcup\limits_{i \ge 0} L_i\)
Illetve
\(L^+ = \bigcup\limits_{i \ge 1} L_i\)
Feladat (fgy. 11)
Adja meg az alábbi nyelvek lezártját! (Legfeljebb 6 hosszú szavak)
- {}
- {\(\varepsilon\)}
- {a}
- {x, yz}
- \(\{\}^* = \{\varepsilon\}\)
- \(\{\varepsilon\}^* = \{\varepsilon\}\)
- \(\{a\}^* = \{\varepsilon, a, aa, aaa, aaaa, aaaaa, aaaaaa, \dots\}\)
- \(\{x, yz\}^* = \{\varepsilon, x, yz, xx, yzyz, xxx, xyz, yzx, xxxx, xxyz, xyzx, yzxx, xxxxx, xxxyz, xxyzx, xyzxx, yzxxx, yzxyz, yzyzx, xxxxyz, xxxyzx, xxyzxx, xyzxxx, xyzxyz, xyzyzx, yzxxxx, yzxxyz, yzxyzx, yzyzxx\}\)
Feladat (fgy / 8.) (szorgalmi, +1 pontért)
Adjon meg olyan nyelveket, amelyeknek második hatványa egyenlő önmagukkal!
Hány ilyen tulajdonságú véges nyelv van?
Tehát, ahol \(L^2 = LL\)
Ha \(L = \{\varepsilon\}\)
\(L^0 = \{\varepsilon\}\)
\(L^1 = L = \{\varepsilon\}\)
\(L^2 = LL = \{\varepsilon\}\)