- 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:
- Každý uzel má návěští, které je symbolem z
- Kořen má návětší
- Má-li vnitřní uzel návěští , pak
- Má-li uzel návěští a jeho všichni synové mají v uspořádání zleva doprava návěští , pak
- 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ř.
- nebo
- a též
- 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ů:
- Ř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
- pro nějakou CFG
- (Lze vyjádřit pomocí bezkontextové gramatiky)
- pro nějaký PDA
- (Lze vyjádřit pomocí zásobníkového automatu akceptující pomocí koncového stavu)
- 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
Důkaz
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.
Důkaz
Uzavřenost na homomorfismu a inverzní homomorfismus
Třída všech bezkontextových jazyků je uzavřena vzhledem k substituci
Důkaz
Třída všech bezkontextových jazyků je uzavřena vůči homomorfismu a izomorfismu
Důkaz
Uzavřenost na reverz
Třída všech bezkontextových jazyků je uzavřena na reverz
Důkaz
- Nechť CFL generovaný gramatikou
- Sestrojíme gramatiku pro tak, že otočíme pravou stranu každého pravidla
- Např. Nechť má pravidla . Pak reverz jazyka má gramatiku
Navigace
Předchozí: Pumping lemma Následující: Zásobníkové automaty Celý okruh: 1. Teoretické základy informatiky