Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
Verzia z 08:25, 10. december 2024, ktorú vytvoril SKevo (diskusia | príspevky) (Vytvorená stránka „Automaty, ktoré pracujú s bezkontextovou gramatikou. {{Pojmová mapa}} == Bezkontextová gramatika == Je taká gramatika, kde pravidlá majú tvar: <math>A \rightarrow \alpha</math>, pričom <math>A \in N</math> (na ľavej strane je práve jeden neterminálny symbol); <math>\alpha \in (N \cup T)^+</math>(na pravej strane je ľubovoľná neprázdna postupnosť neterminálnych alebo terminálnych symbolov). == Zásobníkový automat == === Zásobník === Je to…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)

Automaty, ktoré pracujú s bezkontextovou gramatikou.


Bezkontextová gramatika

Je taká gramatika, kde pravidlá majú tvar: Aα, pričom AN (na ľavej strane je práve jeden neterminálny symbol); α(NT)+(na pravej strane je ľubovoľná neprázdna postupnosť neterminálnych alebo terminálnych symbolov).

Zásobníkový automat

Zásobník

Je to pamäť typu LIFO (last in: first out), kde prvok vložený ako posledný ide von prvý.

Zásobníkové automaty definujeme ako sedmicu:

A=(K,Σ,Γ,δ,q0 Z0,F)

  • A - označenie automatu;
  • K - konečná, neprázdna množina neterminálnych symbolov;
  • Σ - konečná, neprázdna množina terminálnych symbolov (znakov, ktoré automat rozpoznáva);
  • Γ (gamma) - zásobníková abeceda (symboly, ktoré sa môžu nachádzať v zásobníku);
  • δ - prechodové funkcie (napr.: orientovaný, ohodnotený multigraf - vizuálna reprezentácia automatu);
  • q0 - začiatočný prechod (musí patriť do množiny K);
  • Z0 - začiatočný zásobníkový symbol (ktorý symbol je v zásobníku ako prvý?);
  • F - množina konečných neterminálnych symbolov (stavov)

Zásobníkové automaty fungujú tak, že pri každom prechode (kroku výpočtu) môžeme prepísať posledný symbol v zásobníku na iný symbol, alebo postupnosť symbolov. Prechody obsahujú rôzne podmienky, teda môžeme vytvoriť algoritmy, ktoré prejdú po určitých prechodoch ak sa na vrchu zásobníka nachádza určitý symbol.

Podľa toho, či je množina stavov F prázdna (F=), rozlišujeme dva typy automatov:

  1. Automaty, ktoré rozpoznávajú koncovým stavom;
    • Dôležité je, či výpočet určitého slova skončí v koncovom stave, pričom neberieme do úvahy to, aké symboly sa nachádzajú v zásobníku.
  2. Automaty, ktoré rozpoznávajú prázdnou pamäťou;
    • Pri tomto spôsobe rozpoznávania musí byť prázdna pamäť (zásobník) pre to, aby slovo patrilo do daného jazyka.

Ak sa na automat pozrieme, vieme určiť spôsob rozpoznávania: ak obsahuje koncový stav, tak rozpoznáva koncovým stavom (teda, vidíme v zápise definovanú množinu F, alebo jednoducho v obrázku vidíme stav ktorý je označený ako koncový - je označený dvojitým kruhom). Tým pádom vieme aj určiť podmienku, ktorá je nutná pre to aby slovo patrilo do daného jazyka.

Ku každej bezkontextovej gramatike existuje zásobníkový automat. Tento prevod sa dá urobiť tiež naopak, ale je to ťažšie zrealizovať.

Úloha na zásobníkový automat

Povedzme, že máme zadaný graf automatu a musíme ho vedieť popísať (teda, definovať A) a určiť, aké slová rozpoznáva a akým spôsobom.