logo

Lemme de pompage en théorie du calcul

Il existe deux lemmes de pompage, qui sont définis pour 1. Langages réguliers et 2. Contexte – Langages libres. Lemme de pompage pour les langages réguliers Pour tout langage régulier L, il existe un entier n, tel que pour tout x ? L avec |x| ? n, il existe u, v, w ? ?*, tel que x = uvw, et (1) |uv| ? n (2) |v| ? 1 (3) pour tout je ? 0 : UVjew ? L En termes simples, cela signifie que si une chaîne v est « pompée », c'est-à-dire si v est inséré un certain nombre de fois, la chaîne résultante reste toujours dans L. Le lemme de pompage est utilisé comme preuve de l'irrégularité d'un langage. Ainsi, si un langage est régulier, il satisfait toujours au lemme de pompage. S'il existe au moins une chaîne issue du pompage qui n'est pas dans L, alors L n'est sûrement pas régulier. Le contraire n’est peut-être pas toujours vrai. Autrement dit, si Pumping Lemma est vrai, cela ne signifie pas que le langage est régulier.

p1



Par exemple, prouvons L01= n ? 0 est irrégulier. Supposons que L soit régulier, alors par Pumping Lemma les règles données ci-dessus suivent. Maintenant, laissez x ? L et |x| ? n. Ainsi, d’après le lemme de pompage, il existe u, v, w tels que (1) – (3) sont valables. Nous montrons que pour tout u, v, w, (1) – (3) n’est pas vrai. Si (1) et (2) sont valables alors x = 0n1n= uvw avec |uv| ? n et |v| ? 1. Donc, u = 0un, v = 0b, w = 0c1noù : a + b ? n, b ? 1, c ? 0, a + b + c = n Mais alors (3) échoue pour i = 0 uv0w = uw = 0un0c1n= 0a + c1n? L, puisque a + c ? n.

p2

Lemme de pompage pour les langages sans contexte (CFL) Le lemme de pompage pour le CFL indique que pour tout langage L sans contexte, il est possible de trouver deux sous-chaînes qui peuvent être « pompées » un nombre illimité de fois tout en restant dans la même langue. Pour n'importe quelle langue L, nous divisons ses chaînes en cinq parties et pompons les deuxième et quatrième sous-chaînes. Le Pumping Lemma, ici aussi, est utilisé comme un outil pour prouver qu'un langage n'est pas du CFL. Parce que si une chaîne ne satisfait pas à ses conditions, alors le langage n’est pas CFL. Ainsi, si L est une CFL, il existe un entier n, tel que pour tout x ? L avec |x| ? n, il existe u, v, w, x, y ? ?*, tel que x = uvwxy, et (1) |vwx| ? n (2) |vx| ? 1 (3) pour tout je ? 0 : UVjewxjeet ? je



p3

Pour l'exemple ci-dessus, 0n1nest CFL, car toute chaîne peut être le résultat d'un pompage à deux endroits, l'un pour 0 et l'autre pour 1. Montrons que L012= n ? 0 n'est pas sans contexte. Supposons que L soit sans contexte, alors par Pumping Lemma, les règles données ci-dessus suivent. Maintenant, laissez x ? L et |x| ? n. Ainsi, d'après le lemme de pompage, il existe u, v, w, x, y tels que (1) – (3) sont valables. Nous montrons que pour tout u, v, w, x, y (1) – (3) ne sont pas valables. Si (1) et (2) sont valables alors x = 0n1n2n= uvwxy avec |vwx| ? n et |vx| ? 1. (1) nous dit que vwx ne contient pas à la fois 0 et 2. Ainsi, soit vwx n’a pas de 0, soit vwx n’a pas de 2. Nous avons donc deux cas à considérer. Supposons que vwx n'ait pas de 0. D’après (2), vx contient un 1 ou un 2. Ainsi, uwy a « n » 0 et uwy a soit moins de « n » 1, soit moins de « n » 2. Mais (3) nous dit que uwy = uv0wx0oui ? L. Donc, uwy a un nombre égal de 0, de 1 et de 2, ce qui nous donne une contradiction. Le cas où vwx n’a pas de 2 est similaire et nous donne également une contradiction. Ainsi L n’est pas hors contexte. Source : John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman (2003). Introduction à la théorie, aux langages et au calcul des automates.

programmation cobol

Cet article a été rédigé par Nirupam Singh .