Kalábovi

Kalábovic wikina

Uživatelské nástroje

Nástroje pro tento web


tin:pulsemestralka

Toto je starší verze dokumentu!


Tahák

Půlsemestrálka

Gramatika

Formal grammar

G = (N, Σ, P, S)

  • N – konečná množina neterminálů
  • Σ – konečná množina terminálů, disjunktní s N
  • P – přepisovací pravidla, obecně ve tvaru (ΣN)* N (ΣN)* → (ΣN)*
  • SN – startovací symbol

Podle tvaru P se rozlišují třídy gramatik.

Operace nad jazyky

Formal language

  • Konkatenace (zřetězení): L₁ · L₂ = {xy | xL₁, yL₂}
  • Iterace a pozitivní iterace:
    • L⁰ = {ε}
    • Lⁿ = L · Lⁿ⁻¹ pro n ≥ 1
    • L* = ∪ Lⁿ pro pro n ≥ 0
    • L⁺ = ∪ Lⁿ pro pro n ≥ 1
  • Doplněk: L′ = Σ* \ L
  • Průnik: L₁ ∩ L₂ = {w | wL₁ ∧ wL₂}
  • Sjednocení: L₁ ∪ L₂ = {w | wL₁ ∨ wL₂}

Regulární jazyky

Gramatika

Regular grammar

Viz gramatika.

Rozlišujeme pravou a levou lineární, podle pozice neterminálu na pravé straně pravidel (v příkladu je pravá):

  • AxB; A, BN, xΣ*
  • Ax; xΣ*

Rozlišujeme pravou a levou regulární:

  • AxB; A, BN, xΣ
  • Ax; xΣ
  • Sε, pokud se S neobjevuje na pravé straně žádného pravidla

Konečný automat

Finite-state machine

M = (Q, Σ, δ, q₀, F)

  • Q – konečná množina stavů
  • Σ – konečná vstupní abeceda
  • δ – přechodová funkce ve tvaru δ: Q × Σ → 2Q1)
  • q₀ ∈ Q – počáteční stav
  • FQ – množina koncových stavů
  • Konfigurace: C = (q, w), (q, w) ∈ Q × Σ* (Prostě stav ve kterém se automat právě nachází a co má ještě přečíst.)
  • Přechod automatu: binární relace ⊢ ⊆ (Q × Σ*) × (Q × Σ*)
    • (q, w) ⊢ (q′, w′) ⇔ w = aw′ ∧ q′ ∈ δ(q, a) pro q, q′ ∈ Q; aΣ; w, w′ ∈ Σ*
Deterministický konečný automat

Pouze se změní δ: Q × ΣQ ∪ {nedef}, nedefQ.

Úplně definovaný konečný automat

Stejný jako deterministický, ale neobsahuje nedef, protože δ: Q × ΣQ musí platit pro všechny Q × Σ.

Pumping lemma

Pumping lemma for regular languages

p > 0: ∀wL: |w| ≥ p ⇒ ∃x, y, z ∈ Σ*:

  • w = xyz
  • 0 < |y| ≤ p
  • i ≥ 0: xyⁱzL

Dokazuje se sporem.

Pumping lemma je podmínka nutná, nikoliv dostačující. Takže s ní dokážete, že jazyk není ragulární, ale na důkaz že regulární je nestačí. Jak tedy dokázat regulárnost? Třeba sestavit automat.

Uzávěrové vlastnosti

Sjednocení (∪)
Průnik (∩)
Konkatenace (•)
Iterace (*)
Doplněk (‾)
Reverze (ᴿ)
Substituce
Morfismus
Inverzní morfismus

Rozhodnutelné problémy

  • Problém neprázdnosti: L ≠ ∅
  • Problém náležitosti: wL
  • Problém ekvivalence: L(G₁) = L(G₂)

Bezkontextové jazyky

Gramatika

Context-free grammar

Viz gramatika.

Bezkontextová gramatika má konečnou množinu přepisovacích pravidel P, tvaru:

  • Aα, AN, α ∈ (NΣ)*

Zásobníkový automat

Pushdown automaton

M = (Q, Σ, Γ, δ, q₀, Z₀, F)

  • Q – konečná množina stavů
  • Σ – konečná vstupní abeceda
  • Γ – konečná zásobníková abeceda
  • δ – přechodová funkce ve tvaru δ: Q × (Σ ∪ {ε}) × Γ → 2Q × Γ*
  • q₀ ∈ Q – počáteční stav
  • Z₀ ∈ Γ – počáteční symbol zásobníku
  • FQ – množina koncových stavů
Determinsitický zásobníkový automat

Deterministic pushdown automaton

Automat je deterministický, pokud jsou splněný obě podmínky:

  • qQ, aΣ ∪ {ε}, xΓ: |δ(q, a, x)| ≤ 1
    Existuje maximálně 1 přechod pro každou δ.
  • qQ, xΓ: pokud δ(q, ε, x) ≠ ∅, pak δ(q, a, x) = ∅ pro aΣ
    Můžu mít přechod který nic nečte ze vstupu při daném vrcholu zásobníku, ale pak nesmím mít se stejným vrcholem zásobníku přechod který by něco četl. Proste to musí být jednoznačné!

Jiný zápis toho samého (je tam hezká symetrie):

  • aΣ: |δ(q, a, z)| ≤ 1 ∧ δ(q, ε, x) = ∅, nebo
  • aΣ: δ(q, a, z) = ∅ ∧ |δ(q, ε, x)| ≤ 1
Rozšířený zásobníkový automat

δ: Q × (Σ ∪ {ε}) × Γ* → 2Q × Γ*

Rozdíl je v Γ*, automat tedy může číst 0–n symbolů ze sásobníku.

Syntaktická analýza

Shora dolů

Top-down parsing

Přijímá prázdným zásobníkem!

P = ({q}, Σ, NΣ, δ, q, S, ∅)

  • Je-li Aα pravidlo z P, pak δ(q, ε, A) ∋ (q, α)
  • δ(q, a, a) = {(q, ε)} pro všechna aΣ
Zdola nahoru

Bottom-up parsing

Vyžaduje rozšířený zásobníkový automat!

P = ({q, r}, Σ, NΣ ∪ {#}, δ, q, #, {r})

  1. Redukce: Je-li Aα pravidlo z P, pak δ(q, ε, α) ∋ (q, A)
  2. Shift: δ(q, a, ε) = {(q, a)} pro všechna aΣ
  3. Accept: δ(q, ε, S#) = {(r, ε)}

Pumping lemma

Pumping lemma for context-free languages

Nechť L je bezkontextový jazyk. Pak existuje konstanta k > 0 taková, že je-li zL a |z| ≥ k, pak lze z zapsat ve tvaru: z = uvwxy, vx ≠ ε, |vwx| ≤ k a pro všechna i ≥ 0 je uvⁱwxⁱyL.

Opět platí to samé, co u regulárních jazyků.

Uzávěrové vlastnosti

Sjednocení (∪)
Průnik (∩) 2)
Konkatenace (•)
Iterace (*)
Doplněk (‾)
Reverze (ᴿ)
Substituce
Morfismus
Inverzní morfismus

Rozhodnutelné problémy

  • Problém neprázdnosti jazyka
  • Probém příslušnosti řetězce wΣ* do jazyka
  • Problém konečnosti jazyka

Nerozhodnutelné problémy

  • Problém ekvivalence jazyků bezkontextových gramatik
  • Problém inkluze jazyků bezkontextových gramatik

Semestrálka

Vědět i to, co bylo na půlsemestrálce!

Turingovy stroje

Turing machine

M = (Q, Σ, Γ, δ, q₀, qF)

  • Q – konečná množina stavů
  • Σ – konečná vstupní abeceda, ΔΣ
  • Γ – konečná pásková abeceda, ΣΓ, ΔΓ
  • δ – parciální přechodová funkce, δ: (Q \ {qF}) × ΓQ × (Γ ∪ {L, R}), kde L, RΓ
  • q₀ – počáteční stav, q₀ ∈ Q
  • qF – koncový stav, qFQ

Jestli má stroj více pásek, nebo je nedeterministický nijak nezvětšuje jeho schopnost přijímat jazyky!

Cookův teorém

Je-li L libovolný jazyk z NP, pak je redukovatelný na SAT problém.

Důkaz: Protože LNP, exsituje nedeterministický Turingův stroj M a polynom p(x) tak, že pro každé wL stroj M přijímá maximálně v p(|w|) krocích. Jádro důkazu tvoří konstrukce polynomiální redukce f z L na LSAT: Pro každý řetězec wL bude f(w) množina klauzulí, které jsou splnitelné, právě když M přijímá w.

1)
Power set, potenční množina
2)
Jsou uzavřené pouze na průnik s regulárními jazyky
/var/www/wiki/data/attic/tin/pulsemestralka.1325420385.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)