20.07.2013 Views

3.6 Uzávěrové vlastnosti bezkontextových ja- zyků

3.6 Uzávěrové vlastnosti bezkontextových ja- zyků

3.6 Uzávěrové vlastnosti bezkontextových ja- zyků

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

36 [110110-2241 ]<br />

<strong>3.6</strong> <strong>Uzávěrové</strong> <strong>vlastnosti</strong> <strong>bezkontextových</strong> <strong>ja</strong><strong>zyků</strong><br />

<strong>3.6</strong>.1 Tvrzení. Bezkontextové <strong>ja</strong>zyky jsou uzavřeny na sjednocení.<br />

To znamená, jsou-li L1 a L2 dva bezkontextové <strong>ja</strong>zyky, pak také <strong>ja</strong>zyk L1∪L2<br />

je bezkontextový.<br />

Zdůvodnění: Jazyky L1, L2 jsou bezkontextové, proto existují bezkontextové<br />

gramatiky G1 = (N1, Σ, S1, P1) a G2 = (N2, Σ, S2, P2) takové, že G1 generuje L1<br />

a G2 generuje L2. Přejmenujeme neterminály gramatiky G2 tak, aby gramatiky<br />

neměly žádný společný neterminál (tj. N1 ∩ N2 = ∅).<br />

Gramatiku G = (N, Σ, S, P ) generující <strong>ja</strong>zyk L1 ∪ L2 vytvoříme takto:<br />

• N = N1 ∪ N2 ∪ {S}, kde S je nový startovací symbol.<br />

• P = P1 ∪ P2 ∪ {S → S1, S → S2}, tj. k pravidlům gramatik G1 a G2<br />

přidáme dvě nová pravidla S → S1 a S → S2}.<br />

Gramatika G generuje <strong>ja</strong>zyk L1 ∪ L2.<br />

<strong>3.6</strong>.2 Tvrzení. Bezkontextové <strong>ja</strong>zyky jsou uzavřeny na zřetězení.<br />

To znamená, jsou-li L1 a L2 dva bezkontextové <strong>ja</strong>zyky, pak také <strong>ja</strong>zyk L1 L2<br />

je bezkontextový.<br />

Zdůvodnění: Jazyky L1, L2 jsou bezkontextové, proto existují bezkontextové<br />

gramatiky G1 = (N1, Σ, S1, P1) a G2 = (N2, Σ, S2, P2) takové, že G1 generuje L1<br />

a G2 generuje L2. Přejmenujeme neterminály gramatiky G2 tak, aby gramatiky<br />

neměly žádný společný neterminál (tj. N1 ∩ N2 = ∅).<br />

Gramatiku G = (N, Σ, S, P ) generující <strong>ja</strong>zyk L = L1L2 vytvoříme takto:<br />

• N = N1 ∪ N2 ∪ {S}, kde S je nový startovací symbol.<br />

• P = P1 ∪ P2 ∪ {S → S1S2}, tj. k pravidlům gramatik G1 a G2 přidáme<br />

nové pravidlo S → S1S2}.<br />

Gramatika G generuje <strong>ja</strong>zyk L1L2.<br />

<strong>3.6</strong>.3 Tvrzení. Bezkontextové <strong>ja</strong>zyky jsou uzavřeny na Kleeneho operaci ⋆.<br />

To znamená, je-li L bezkontextový <strong>ja</strong>zyk, pak také <strong>ja</strong>zyk L ⋆ je bezkontextový.<br />

Zdůvodnění: Jazyk L je bezkontextový, proto existuje bezkontextová gramatika<br />

G1 = (N1, Σ, S1, P1) taková, že L = L(G1). Gramatiku G = (N, Σ, S, P )<br />

generující <strong>ja</strong>zyk L ⋆ vytvoříme takto:<br />

• N = N1 ∪ {S}, kde S je nový startovací symbol.<br />

• P = P1 ∪ {S → S1S, S → S1, S → ɛ}, tj. k pravidlům gramatik G1 a G2<br />

přidáme tři nová pravidla S → S1S | S1 | ɛ}.<br />

Gramatika G generuje <strong>ja</strong>zyk L ⋆ .<br />

Marie Demlová: Jazyky, automaty a gramatiky Před. 12: 6/12/2010


<strong>3.6</strong>. <strong>Uzávěrové</strong> <strong>vlastnosti</strong> <strong>bezkontextových</strong> <strong>ja</strong><strong>zyků</strong> [110110-2241 ] 37<br />

<strong>3.6</strong>.4 Tvrzení. Bezkontextové <strong>ja</strong>zyky jsou uzavřeny na reverzi.<br />

To znamená, je-li L bezkontextový <strong>ja</strong>zyk, pak také <strong>ja</strong>zyk L R je bezkontextový.<br />

Zdůvodnění: Jazyk L je bezkontextový, proto existuje bezkontextová gramatika<br />

G = (N, Σ, S, P ), která ho generuje. Gramatika GR, která generuje <strong>ja</strong>zyk<br />

L R je (N, Σ, S, PR), kde<br />

A → α ∈ PR iff A → α R ∈ P.<br />

<strong>3.6</strong>.5 Tvrzení. Bezkontextové <strong>ja</strong>zyky nejsou uzavřeny na průnik.<br />

To znamená, jsou-li L1 a L2 dva bezkontextové <strong>ja</strong>zyky, pak <strong>ja</strong>zyk L1 ∩ L2<br />

nemusí být bezkontextový.<br />

Zdůvodnění: Uvažujme <strong>ja</strong>zyk L1 = {0 k 1 n 2 n | k, n ≥ 1} a <strong>ja</strong>zyk L2 =<br />

= {0 k 1 k 2 n | k, n ≥ 1}. Oba tyto <strong>ja</strong>zyky jsou bezkontextové, ale jejich průnik<br />

je <strong>ja</strong>zyk L = {0 n 1 n 2 n | n ≥ 1}, který bezkontextový není.<br />

<strong>3.6</strong>.6 Tvrzení. Bezkontextové <strong>ja</strong>zyky nejsou uzavřeny na doplněk.<br />

To znamená, je-li L bezkontextový <strong>ja</strong>zyk, pak jeho doplněk ¯ L nemusí být<br />

bezkontextový.<br />

Zdůvodnění: Kdyby třída <strong>bezkontextových</strong> <strong>ja</strong><strong>zyků</strong> byla uzavřena na doplňky,<br />

byla by uzavřena i na průniky, protože<br />

L1 ∩ L2 = L1 ∪ L2.<br />

<strong>3.6</strong>.7 Tvrzení. Třída <strong>bezkontextových</strong> <strong>ja</strong><strong>zyků</strong> je uzavřena na průniky s regulárními<br />

<strong>ja</strong>zyky.<br />

To znamená, je-li L bezkontextový <strong>ja</strong>zyk a R regulární <strong>ja</strong>zyk, pak <strong>ja</strong>zyk L∩R<br />

je bezkontextový.<br />

Nástin důkazu: Jazyk L je bezkontextový, tudíž existuje zásobníkový automat<br />

A = (Q1, Σ, Γ, δ1, q1, Z1, F1) takový, že A přijímá L koncovým stavem.<br />

Jazyk R je regulární, tudíž existuje deterministický konečný automat M =<br />

= (Q2, Σ, δ2, q2, F2), který přijímá <strong>ja</strong>zyk R.<br />

Zkonstruujeme zásobníkový automat B tak, že B přijímá <strong>ja</strong>zyk L ∩ R<br />

koncovým stavem. (Všimněte si, že se v podstatě jedná o součinovou konstrukci).<br />

Zásobnikový automat je B = (Q1 × Q2, Σ, Γ, δ, (q1, q2), Z1, F1 × F2), přechodová<br />

funkce δ je definována takto: pro (q, p) ∈ Q1 × Q2, a ∈ Σ ∪ {ɛ} a Y ∈ Γ<br />

platí<br />

((r, s), γ) ∈ δ((q, p), a, Y ) iff<br />

• buď a ∈ Σ, (r, γ) ∈ δ1(q, a, Y ) a s = δ2(p, a),<br />

• nebo a = ɛ, (r, γ) ∈ δ1(q, ɛ, Y ) a s = p.<br />

Uvědomte si, že v prvé složce se B chová <strong>ja</strong>ko zásobníkový automat A, ve druhé<br />

složce <strong>ja</strong>ko deterministický konečný automat M.<br />

Není těžké nahlédnout, že zásobníkový automat B opravdu přijímá <strong>ja</strong>zyk<br />

L ∩ R.<br />

Marie Demlová: Jazyky, automaty a gramatiky Před. 12: 6/12/2010


38 [110110-2241 ]<br />

<strong>3.6</strong>.8 Tvrzení. Třída <strong>bezkontextových</strong> <strong>ja</strong><strong>zyků</strong> je uzavřena na substituce.<br />

To znamená: Máme dány dvě abecedy Σ a Γ a substituci σ, která každému<br />

písmenu a ∈ Σ přiřadí bezkontextový <strong>ja</strong>zyk σ(a). Pak je-li L bezkontextový<br />

<strong>ja</strong>zyk nad Σ, pak jeho obraz v substituci σ je bezkontextový <strong>ja</strong>zyk nad Γ.<br />

(Substituce byla zavedena v 2.5.5.)<br />

Marie Demlová: Jazyky, automaty a gramatiky Před. 12: 6/12/2010

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!