“Conocimiento Programación>Lenguajes De Programación

¿Cómo se puede utilizar el lema de bombeo para demostrar que los siguientes idiomas no son libres de contexto?

2013/5/13
El lema de bombeo para los idiomas sin contexto es una herramienta poderosa para demostrar que un idioma * no * está libre de contexto. Funciona por contradicción:asumimos que el lenguaje * es * libre de contexto, luego mostramos que esta suposición conduce a una contradicción. Así es como se aplica, junto con ejemplos:

El lema de bombeo (para CFL):

Si L es un lenguaje libre de contexto, entonces existe una constante * p * (la longitud de bombeo) de modo que cualquier cadena * w * en l con | w | ≥ *p *puede escribirse como *w =uvxyz *, donde:

1. | Vxy | ≤ *p *

2. | Vy | ≥ 1

3. Para todos *i *≥ 0, *uv i xy i Z* está en L.

La estrategia de prueba es encontrar una cadena *W *en el idioma de modo que no importa cómo la descompongamos en *uvxyz *satisfacer las condiciones del lema, bombeándola (aumentando *i *) producirá una cadena que *no *en el idioma. Esto contradice el lema, demostrar que el lenguaje no es libre de contexto.

Ejemplos:

Ilustramos con algunos ejemplos de idiomas y cómo demostrar que no están libres de contexto usando el lema de bombeo:

1. L₁ ={a n b n c n | n ≥ 0}

1. Suponga que L₁ está libre de contexto. Esto significa que se aplica el lema de bombeo.

2. Elija una cadena w: Elegamos *w =a p B P c p *, donde *p *es la longitud de bombeo. | W | ≥ *p *.

3. Bombeo: Porque | vxy | ≤ *p *, *vxy *puede abarcar como máximo dos de las secciones (aaa ... bbb ... ccc ...). Hay tres posibilidades:

* vxy contiene solo A y B: El bombeo cambiará el número de A y/o B sin cambiar el número de C, lo que resulta en una cadena no en L₁.

* vxy contiene solo B y C: Similar al anterior, el número de B y/o C cambiará desproporcionadamente.

* vxy contiene solo A: El bombeo solo afectará el número de A.

4. Contradicción: En todos los casos, el bombeo produce una cadena no en L₁. Esto contradice la afirmación del lema de bombeo de que *uv i xy i Z* está en L₁ para todos* i* ≥ 0.

5. Conclusión: Por lo tanto, L₁ no está libre de contexto.

2. L₂ ={a n b m c n+m | n, m ≥ 0}

1. Suponga que L₂ está libre de contexto.

2. Elija una cadena w: Sea *w =a p B P c 2p *.

3. Bombeo: De nuevo, | vxy | ≤ *p *. Las posibilidades son similares a L₁:si * vxy * contiene solo A y B, el bombeo cambiará el número de A y B sin cambiar proporcionalmente el número de C.

4. Contradicción: El bombeo conducirá a cadenas no en L₂.

5. Conclusión: L₂ no es libre de contexto.

3. L₃ ={ww | w ∈ {a, b}*} (El lenguaje de las cuerdas que son la concatenación de una cadena consigo misma)

1. Suponga que L₃ está libre de contexto.

2. Elija una cadena w: Sea *w =a p B P A P B P *.

3. Bombeo: Porque | vxy | ≤ *p *, *vxy *no puede cruzar el medio de la cuerda (no puede abarcar ambas mitades de `ww`). Si * vxy * está completamente en la primera mitad, el bombeo desequilibrará las dos mitades.

4. Contradicción: La cadena bombeada no estará en L₃.

5. Conclusión: L₃ no es libre de contexto.

Consideraciones importantes:

* Elegir la cadena correcta *W *: Esto es crucial. La cadena debe elegirse cuidadosamente para explotar las limitaciones impuestas por | vxy | ≤ *p *. A menudo, las cadenas con patrones repetidos son útiles.

* Manejo de todos los casos: Debe considerar todas las formas posibles de descomponer * w * en * uvxyz * satisfacer las condiciones del lema y demostrar que el bombeo conduce a una contradicción en cada caso.

* La longitud de bombeo * P * es arbitraria: No necesita saber el valor de *P *; La prueba funciona para cualquier *P *.

Al aplicar cuidadosamente estos pasos, puede usar el lema de bombeo para demostrar que muchos idiomas no están libres de contexto. Recuerde que el lema de bombeo solo proporciona un método para probar los idiomas * no * sin contexto; No se puede usar para demostrar que un lenguaje * es * sin contexto.

Lenguajes De Programación
Cómo crear Entrar en HTML
¿Qué es Python 2.4.3
Cómo editar un registro con Austrumi
Cómo configurar SourceSafe
Cómo configurar un servidor IRC Gorila
Funciones implícitas y explícitas de la Programación
Cómo vincular un conjunto de datos de una cuadrícula de datos
¿Cuál es el Microsoft Network Frame NET
Conocimiento de la computadora © http://www.ordenador.online