logo

Pumping Lemma i teorien om beregning

Der er to pumpelemmaer, som er defineret for 1. Almindelige sprog og 2. Kontekst – Frie sprog Pumpende Lemma for almindelige sprog For ethvert regulært sprog L eksisterer der et heltal n, således at for alle x ? L med |x| ? n, der findes u, v, w ? ?*, således at x = uvw, og (1) |uv| ? n (2) |v| ? 1 (3) for alle i ? 0: uvjegw ? L Enkelt sagt betyder dette, at hvis en streng v er 'pumpet', dvs. hvis v indsættes et vilkårligt antal gange, forbliver den resulterende streng stadig i L. Pumping Lemma bruges som et bevis for uregelmæssighed i et sprog. Således, hvis et sprog er regulært, opfylder det altid pumpende lemma. Hvis der findes mindst en streng lavet af pumpning, som ikke er i L, så er L bestemt ikke regelmæssig. Det modsatte af dette er måske ikke altid sandt. Det vil sige, hvis Pumping Lemma holder, betyder det ikke, at sproget er regulært.

p1



Lad os for eksempel bevise L01= n ? 0 er uregelmæssig. Lad os antage, at L er regulær, så følger ovenstående givne regler ved at pumpe Lemma. Lad nu x? L og |x| ? n. Så ved at pumpe Lemma eksisterer der u, v, w sådan at (1) – (3) holder. Vi viser, at u, v, w, (1) – (3) ikke holder. Hvis (1) og (2) holder, så er x = 0n1n= uvw med |uv| ? n og |v| ? 1. Så u = 0-en, v = 0b, w = 0c1nhvor : a + b ? n, b? 1, c? 0, a + b + c = n Men så mislykkes (3) for i = 0 uv0w = uw = 0-en0c1n= 0a + c1n? L, da a + c ? n.

string.valueof java

s2

Pumping Lemma for kontekstfri sprog (CFL) Pumping Lemma for CFL angiver, at for ethvert Context Free Language L er det muligt at finde to understrenge, der kan 'pumpes' et vilkårligt antal gange og stadig være på det samme sprog. For ethvert sprog L opdeler vi strengene i fem dele og pumper anden og fjerde understreng. Pumping Lemma, også her, bruges som et værktøj til at bevise, at et sprog ikke er CFL. For hvis en streng ikke opfylder sine betingelser, er sproget ikke CFL. Således, hvis L er en CFL, eksisterer der et heltal n, således at for alle x ? L med |x| ? n, der eksisterer u, v, w, x, y ? ?*, sådan at x = uvwxy, og (1) |vwx| ? n (2) |vx| ? 1 (3) for alle i ? 0: uvjegwxjegog ? l



deterministiske endelige automater

s3

For eksempel ovenfor, 0n1ner CFL, da enhver streng kan være resultatet af pumpning to steder, en for 0 og en anden for 1. Lad os bevise, L012= n ? 0 er ikke kontekstfri. Lad os antage, at L er kontekstfri, så følger de ovenstående givne regler ved Pumping Lemma. Lad nu x? L og |x| ? n. Så ved at pumpe Lemma eksisterer der u, v, w, x, y sådan at (1) – (3) holder. Vi viser, at u, v, w, x, y (1) – (3) ikke holder. Hvis (1) og (2) holder, så er x = 0n1n2n= uvwxy med |vwx| ? n og |vx| ? 1. (1) fortæller os, at vwx ikke indeholder både 0 og 2. Således har enten vwx ingen 0'er, eller vwx har ingen 2'er. Derfor har vi to sager at tage stilling til. Antag, at vwx ikke har nogen 0'er. Ved (2) indeholder vx en 1 eller en 2. Således har uwy 'n' 0'er, og uwy har enten mindre end 'n' 1'er eller har mindre end 'n' 2'er. Men (3) fortæller os, at uwy = uv0wx0y ? L. Så uwy har et lige antal 0'ere, 1'ere og 2'ere giver os en selvmodsigelse. Tilfældet, hvor vwx ikke har nogen 2'er, er lignende og giver os også en selvmodsigelse. L er således ikke kontekstfri. Kilde: John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman (2003). Introduktion til automatteori, sprog og beregning.

Denne artikel er bidraget af Nirupam Singh .