Pumpovat lemma
V teorii formální jazyky, pumpovat lemma je prohlášení, že některý jazyk dané třídy může být " pumpoval ". Jazyk může být pumpovaný jestliže nějaký dostatečně dlouhý řetězec v jazyce může být rozbit do kusů a tyto kusy mohou být opakovány produkovat ještě delší řetězec v jazyce. Tak, jestliže tam je pumpovat lemma pro danou jazykovou třídu, některý jazyk ve třídě bude obsahovat nekonečný soubor řetězců všichni produkovali jednoduchým pravidlem daný pumpovat lemma.Dva nejdůležitější příklady jsou pumpovat lemma pro pravidelné jazyky a pumpovat lemma pro kontext-uvolnit jazyky. Tito jsou voláni ' lemmas ' poněkud než ' teorémy ' ne protože oni jsou nedůležití, ale protože jejich primární použití má tvořit rychlé důkazy, že zvláštní jazyk je ne ve třídě jazyka. Nicméně, oni nemohou být používáni ukázat se jako prohlášení, že jazyk je ve třídě; uspokojující pumpovat lemma je nutný, ale ne dostatečný, podmínka.
Někdo známý s pumpovat lemma pro pravidelné jazyky moci vidět bezprostředně to jazyk, který dovolí parenthesized výrazy, ale vyžaduje parentheses balancovat, moci ne být pravidelný jazyk, a tak jazyk nemůže být vytvořen pravidelná gramatika ani uznaný konečný státní stroj. Namáhavý skládat takový důkaz přímo by vzal významnou délku času.
Pumpovat lemma pro pravidelné jazyky
Jestliže jazyk L je pravidelný, pak tam existuje číslo m > 0 takový ten každý řetězec w v L s délkou |w| & ge m moci být psán ve forměs řetězci x, y a z takový to |xy| & le m, |y| & ge 1 a
- w = xyz
- xykz je v L pro každý k& ge0.
Používat toto lemma, jeden může například dokázat, že jazyk L = {nbn : n & ge 0} přes abecedu & Sigma = {, b} je ne pravidelný. Pro jestliže to bylo, my jsme mohli vybrat si m jak v pumpovat lemma. Řetězec w = mbm je v L, a pumpovat lemma proto dá rozložení w = xyz s |xy| & le m, |y| & ge 1 a xykz v L pro každý k& ge0. Ale pak y musí sestávat z non-nulové číslo ' s, a xy2z má více ' s než b' s a je proto ne v L, rozpor.
Důkaz, že jazyk balancoval (i. e. vhodně vložený) parentheses je ne pravidelný následuje stejnou myšlenku. Given m, tam je řetězec balancoval parentheses to začne více než m odešel parentheses, tak to y bude sestávat se úplně odešel parentheses. Tím, že opakuje y, my můžeme produkovat řetězec, který dokonce neobsahuje stejné číslo odešel a pravý parentheses, a tak oni nemohou být vyrovnáni.
Nápad důkazu pro pumpovat lemma sám je takto: pravidelný jazyk je přijímán jistý deterministický konečný příjemce; každý řetězec, který je delší než číslo m stavů toho příjemce se vrátí k jistému státu, proto působit smyčku, která může být opakována; smyčka odpovídá řetězci y.
Poznamenat, že pumpovat lemma nedá dostatečný podmínka pro jazyk být pravidelný: pro příklad, jazyk {nbm : n & ge m} je ne pravidelný ale moci ještě být " pumpoval. " pro praktickou zkoušku testovat to přesně charakterizuje pravidelné jazyky, vidět Myhill-Nerode teorém.
Pumpovat lemma pro kontext-uvolnit jazyky
Jestliže jazyk L je kontext-volný, pak tam existuje nějaké číslo m > 0 takový to nějaký řetězec w v L s |w| & ge m moci být psán jaks řetězci u, v, x, y a z, takový to |vxy| & le m, |vy| & ge 1, a
- w = uvxyz
- uvkxykz je v L pro každý k & ge 0.
Typické použití tohoto pumpovat lemma je důkaz, že jazyk L = {nbncn : n & ge 0} přes abecedu & Sigma = {, b, c} je ne kontext-volný. Opravdu, jestliže tento jazyk byl kontext-volný, pak pumpovat lemma my mohl by výběr n větší než m a produkovat řetězec tak dlouho to když to je psáno jak uvxyz, protože vxy je krátký to může obsahovat jen dva tří dopisů. Pak tím, že pumpuje my produkujeme řetězec, který nemůže být v daném jazyce.