You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KAPITOLA 2. JAZYKY, GRAMATIKY A JEJICH KLASIFIKACE 11<br />
Součinem jazyků L 1 · L 2 je jazyk, který obsahuje všechny identifikátory, tak jak<br />
jsou obvykle definovány v programovacích jazycích.<br />
Prostřednictvím součinu jazyka se sebou samým (mocniny jazyka) můžeme<br />
definovat důležitou operaci nad jazykem – iteraci jazyka.<br />
Definice 2.9 Nechť L je jazyk nad abecedou Σ. Iteraci L ∗ jazyka L a pozitivní<br />
iteraci L + jazyka L definujeme takto:<br />
L 0 = {ɛ} (1)<br />
L n = L · L n−1 pro n ≥ 1 (2)<br />
L ∗ = ⋃ n≥0<br />
L n (3)<br />
L + = ⋃ n≥1<br />
L n (4)<br />
Věta 2.1 Je-li L jazyk, pak platí:<br />
L ∗ = L + ∪ {ɛ} a (1)<br />
L + = L · L ∗ = L ∗ · L (2)<br />
Důkaz: Tvrzení 1 plyne z definice iterace a pozitivní iterace:<br />
L ∗ = L 0 ∪ L 1 ∪ L 2 ∪ . . . , L + = L 1 ∪ L 2 ∪ . . .<br />
L ∗ = L 0 ∪ L + = L + ∪ L 0 = L + ∪ {ɛ}<br />
Tvrzení 2 dostaneme provedením součinu L · L ∗ resp. L ∗ · L:<br />
L · L ∗ = L · (L 0 ∪ L 1 ∪ L 2 ∪ . . . ) = L 1 ∪ L 2 ∪ L 3 ∪ · · · = L + ,<br />
s použitím distributivního zákona L 1 (L 2 ∪L 3 ) = L 1 L 2 ∪L 1 L 3 . Podobně, s využitím<br />
ekvivalentní definice mocniny L n = L n−1 L, n ≥ 0 obdržíme L ∗ · L = L + . ✷<br />
Příklad 2.9 Je-li L 1 = {(p}, L 2 = {, p}, L 3 = {)} potom jazyk L 1 · L ∗ 2 · L 3<br />
obsahuje řetězce:<br />
(p) (p, p) (p, p, p) (p, p, p, p) . . .<br />
Definice 2.10 Algebraická struktura 〈A, +, ·, 0, 1〉 se nazývá polokruh s aditivním<br />
jednotkovým prvkem 0 a multiplikativním jednotkovým prvkem 1, jestliže<br />
(1) 〈A, +, 0〉 je komutativní monoid<br />
(2) 〈A, ·, 1〉 je monoid<br />
(3) pro operaci · platí distributivní zákon vzhledem k +:<br />
a · (b + c) = a · b + a · c pro a, b, c ∈ A.<br />
Věta 2.2 Algebra jazyků 〈2 Σ∗ , ∪, ·, ∅, {ɛ}〉, kde ∪ je sjednocení a · konkatenace<br />
jazyků tvoří polokruh.