abeceda
- libovolná konečná množina
- značená symbolem Σ
- např. {a, b, c, d}, {@, #, %, ...}
- prvek abecedy nazýváme jako symbol
slovo (řetězec)
- nad abecedou Σ je libovolná konečná posloupnost znaků této abecedy
Σ = {a, b, c}
slova zde budou například:- u = abba
- v = a
- w = cacacaca
- y = ε
- prázdnou posloupnost znaků odpovídá prázdné slovo, ozančované jako ε
- počet znaků v posloupnosti v značíme |v|
jazyk
- nad abecedou Σ je libovolná množina slov nad Σ
Σ = {a, b, c}
L = {aa, abac, cc}
L' = {ε}
L''' = prázdná množina
- množina všech slov značíme jako Σ*
- množinu všech neprázdných slov značíme jako Σ+
zřetězení je binární operace, označována . , je definována předpisem: u.v = uv
abac . bb = abacbb
aba . ε = aba
ε . aba = aba
- zřetězení je asociativní, tj. u.(u.w) = (u.v).v
(ab.bac).ac = abbac.ac = abbacac
ab.(bac.ac) = ab.bacac = abbacac - není komutativní
podslovo
- u je podslovem v, jestliže existují slova x, y taková, že v = x.u.y
- libovolná podposloupnost daného slova
v = baca
podslova: baca, bac, aca, ba, ac, ca, b, a, c, ε
předpona
- pokud je x = ε, tak slovo u je předponou (prefixem)
- pokud je y = ε, tak slovo u nazýváme příponou (suffixem)
mocniny
- unární operace definována pro všechny i
- N0 = přirozená čísla s 0
- N = přirozená čísla od 1...N
u0 = {ε}
ui+1 = u.ui - konkrétní příklad:
u = ba
u0 = ε
u1 = u . u0 = ba . ε = ba
u2 = u . u1 = ba . ba = baba
- výsledkem je vždy jazyk ∪ nad oběma zastoupenými abecedami
- standardní operace: sjednoccení, průnik, rozdíl
- zřetězení jazyků L a K je jazyk L . K = {u.v | u ∈ L, v ∈ K}, zachovává se pořadí
1 = {0, 1}, 2 = {a, b}
L = {00, 01}, K = {aa, bb}
L.K = {00aa, 00bb, 01aa, 01bb} - (prázdná množina) . L = prázdná množina, ale pozor {(prázdné slovo)} . L = L
Iterace jazyka L je jazyk L* = ∪ Li (i = 0, nekonečno)
L = {aa, b}
L = L0 ∪ L1 ∪ L2 ...
L* = {ε, aa, b, aaaa, aab, baa, bb, aaaaaa, aaaab, ... }
Pozitivní iterace L+ = L*
Doplněk jazyka L je jazyk co-L = Σ* bez L, je pro to třeba znát abecedu
L = {a, aa}
Σ = {a} co-L = {ε, aaa, aaaa, ...}
Σ = {a, b} co-L = {ε, b, ab, ba, bb} ∪ {w ∈ {a, b}* | |w| ≥ 3}
Zrcadlový obraz
{abacca}R = accaba
Σ = {a}
L1 = {ε, a, aa, aaa, aaaa...}
L2 = {a, aa, aaa, aaaa...}
L3 = {aa, aaa, aaaa...}
Li = {aj | j ≥ i}
L je uzavřená na: ∪, ∩, Ln | (n > 0), ., +
L není uzavřená na: (diff), L0, *, L+, R
Li ∪ Lj = Lmin(i,j)
Li ∩ Lj = Lmax(i,j)
L1 ∪ L2 = {a}
N = {1, 2, 3, 4...}
Σ = {0, 1, 2, 3, ... , 9}
N = {1, 2, ... , 9} . {0, 1, 2, ... 9}*
N0 = N . {0}
nebo N = Σ+ - {0} . Σ+
- je popis jazyka pomocí pravidel, podle kterých se vytvářejí všechna sova daného jazyka
- např. →
- k zadání syntaxe vyšších programovacích jazyků používáme Backus-Naurova normální formu (BNF)
- definice: Gramatika je čtveřice (N, Σ, P, S), kde
- N je neprázdná konečná množina neterminálů
- Σ je konečná množina terminálů, taková, že N ∩ Σ = (null) , množinu všech symbolů definujeme jako N ∪ Σ
- P je komečná množina pravidel, pravidlo (alfa, beta) zapisujeme jako alfa → beta (alfa přepiš na beta)
- S je počáteční terminál
G = ({s}, {a, b}, P, S) P = {S → a, S → baS, aS → bb} ... doplnit na prtsc ...*
přímé odvození
- doplnit def. přímého odvození
odvození v k krocích
- doplnit
Větná forma
- každý řetěz z množiny V*, který lze odvodit z počátečního neterminálu gramatika
Věta gramatiky
- každá větná forma, která obsahuje pouze terminály
Σ - terminály: a, b, c, .... , 0, 1, ... N - neterminály, S, A, B, C, ....