• Podobně jako regulární jazyky mají též CFG i značný praktický význam, například při definici syntaxe programovacích jazyků, formalizaci pojmu syntaktická analýza a návrhu překladu programovacích jazyků a dalších.

Bezkontextová gramatika

Definice bezkontextové gramatiky

  • Gramatika je bezkontextová (zkratka CFG z context-free grammar), pokud jsou všechna pravidla ve tvaru , kde , tedy neterminál generuje libovolný řetězec terminálů a neterminálů

Derivační stromy

  • Derivační strom je grafická reprezentace derivace nějakého řetězce v CFG

Definice derivačního stromu

  • Nechť je CFG. Strom nazveme derivačním stromem v , právě když platí tyto podmínky:
    1. Každý uzel má návěští, které je symbolem z
    2. Kořen má návětší
    3. Má-li vnitřní uzel návěští , pak
    4. Má-li uzel návěští a jeho všichni synové mají v uspořádání zleva doprava návěští , pak
    5. Má-li uzel návěští , pak je list a je jediným synem svého otce.
  • Výsledkem derivačního stromu nazveme slovo vzniklé zřetězením návěští listů v uspořádání zleva doprava.

Příklad

  • Nechť je gramatika s pravidly

pak derivační strom reprezentuje deset vzájemně ekvivalentních derivací, např.

  1. nebo
  2. a též
  3. a další
  • Všimněme si, že je levá, kdežto je pravá derivace.
  • CFG je víceznačná/nejednoznačná, pokud existuje řetězec , který je derivací alespoň dvou různých derivačních stromů (v opačném případě je jednoznačná)
  • Bezkontextový jazyk je jednoznačný, pokud existuje jednoznačná gramatika, která jej generuje (víceznačnost je vlastnost gramatiky, nikoliv jazyka který generuje)
  • Pro některé bezkontextové jazyky neexistuje jednoznačná gramatika, takový jazyk je dědičně víceznačný

Příklad

  • Gramatika s pravidly , která je ekvivalentní s gramatikou z příkladu výše. Je víceznačná, např. protože věta má dvě různé levé derivace a jim odpovídající dva různé derivační stromy:
  • Chromského normální forma

    • Řekneme, že CFG je v Chromského normální formě, právě když je bez -pravidel a každé pravidlo z má jeden z těchto tvarů:
  • Greibachová normální forma

    • Řekneme, že CFG je v Greibachové normální formě, právě když je bez -pravidel a každé pravidlo z je tvaru

Bezkontextové jazyky

  • Jazyk, který je definovaný nějakou bezkontextovou gramatikou

Vyjádření bezkontextových jazyků

  • Nechť máme bezkontextový jazyk
    1. pro nějakou CFG
      • (Lze vyjádřit pomocí bezkontextové gramatiky)
    2. pro nějaký PDA
      • (Lze vyjádřit pomocí zásobníkového automatu akceptující pomocí koncového stavu)
    3. pro nějaký PDA
      • (Lze vyjádřit pomocí zásobníkového automatu akceptující pomocí prázdného zásobníku)

Přehled rozhodnutelných vlastností CFL

  • Řetězec patří do bezkontextového jazyka .
    • Algoritmus CYK
  • Bezkontextový jazyk je prázdný.
    • Umíme odstranit neterminály, které negenerují žádný terminální řetězec, jestliže je počáteční symbol jeden z nich, pak je bezkontextový jazyk prázdný; jinak ne
  • Bezkontextový jazyk je nekonečný.
    • Použij konstantu z pumping lemmatu.
    • Jestliže existuje řetězec v jazyku délky mezi a , pak je jazyk nekončený; jinak je konečný.

Uzávěrové vlastnosti bezkontextových jazyků

  • V níže uvedených důkazech lze použít jak bezkontextových gramatik, tak i zásobníkových automatů.

Uzavřenost na sjednocení, konkatenaci a Kleeneho uzávěr

  • Třída všech bezkontextových jazyků je uzavřena vzhledem k operaci sjednocení, zřetězení (konkatenace), iteraci (Kleeneho uzávěr) a pozitivní iteraci

Neuzavřenost na průnik a doplněk

  • Třída všech bezkontextových jazyků není uzavřena vzhledem k operaci průnik a doplněk.

Uzavřenost na homomorfismu a inverzní homomorfismus

  • Třída všech bezkontextových jazyků je uzavřena vzhledem k substituci

  • Třída všech bezkontextových jazyků je uzavřena vůči homomorfismu a izomorfismu

Uzavřenost na reverz

  • Třída všech bezkontextových jazyků je uzavřena na reverz

Předchozí: Pumping lemma Následující: Zásobníkové automaty Celý okruh: 1. Teoretické základy informatiky