Pumping lemma pro regulární jazyky
- Užitečný nástroj, který umožňuje dokázat, že daný jazyk není regulární (neumožňuje dokázat, že jazyk regulární je)
Definice
- Nechť je regulární jazyk, pak existuje číslo tak, že každý řetězec délky alespoň lze rozdělit na tři části , které splňují
- pro všechna
- pokud je jazyk konečný (a tedy i regulární), pak lemma platí triviálně - zvolíme větší než je délka nejdelšího řetězce v
Postup při použití lemma v důkazu sporem
- Předpokládáme, že daný jazyk je regulární a tedy musí existovat z lemma
- (nikdy nevolíme konkrétní , protože pokud není regulární, neexistuje)
- Zvolíme vhodný řetězec takový, že
- ( je tedy nějak vyjádřeno pomocí ; opět nikdy nevolíme konkrétní řetězec!)
- Ukážeme, že pro každé rozdělení splňující podmínky a z lemma existuje tak, že nelze napumpovat dle bodu
Příklady
- Dříve jsme tvrdili, že není regulární jazyk.
- Předpokládejme, že by byl
- Pak by existovalo pro pumping lemma
- Nechť .
- Můžeme psát , kde a jsou v a
- Pak by ale patřilo do , ale má víc než .
Pumping lemma pro bezkontextové jazyky
Definice
- Nechť je bezkontextový jazyk, pak existuje číslo tak, že každý řetězec délky alespoň lze rozdělit na pět částí , které splňují
- pro všechna
- Intuice: je bezkontextový, proto existuje PDA P, který jej rozpoznává; pokud máme dostatečně dlouhý řetězec , pak se v něm musí nějaký podřetězec opakovat, přičemž si na zásobník uloží výskyty tohoto podřetězce, a později je může srovnat s výskyty jiného podřetězce (proto mezu počtem opakování a může být závislost). Zásobník umožňuje pouze LIFO přístup, a proto nemůže zároveň srovnávat výskyty více jak jedné dvojice; navíc řetězce ze zásobníku čteme v opačném pořadí, než byly uloženy (proto )
Navigace
Předchozí: Minimalizace konečného deterministického automatu Následující: Bezkontextové jazyky a jejich vlastnosti (uzávěrové vlastnosti, jednoznačnost) Celý okruh: 1. Teoretické základy informatiky