11.07.2015 Views

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.6.SIMPLIFICACIÓN DE GRAMÁTICAS 89(1) OLDV := ∅;(2) NEWV := {A/A → w ∈ P con w ∈ T ∗ };(3) while OLDV ≠ NEWV do begin(4) OLDV := NEWV;(5) NEWV := OLDV ∪{A/A → w ∈ P con α ∈ (T ∪ OLDV ) ∗ }end(6) V-PRIMA := NEWVEl algoritmo anterior encuentra todas las variables A que pertenecen a V ′ . Si A es puesto en NEWVen línea (2) ó (5) es porque <strong>de</strong>riva un string <strong>de</strong> terminales. Para <strong>de</strong>mostrar que NEWV tendrá todas esasvariables, se <strong>de</strong>be probar que si A <strong>de</strong>riva un string <strong>de</strong> terminales, w, entonces A será eventualmente puestoen NEWV. La prueba es por inducción en el largo <strong>de</strong> la <strong>de</strong>rivación A ∗ ⇒w. Nótese que P ′ es el conjunto <strong>de</strong>todas las producciones cuyos símbolos están en V ′ ∪ T .Base: Si el largo <strong>de</strong> la <strong>de</strong>rivación es 1, entonces A → w es una producción y A es puesto en NEWV en lalínea (2).∗Inducción: Sea A → X 1 X 2 . . . X n⇒w una <strong>de</strong>rivación con k pasos. Entonces se pue<strong>de</strong> escribir w =∗w 1 w 2 . . . w n , en que X i⇒wi , 1 ≤ i ≤ n, por una <strong>de</strong>rivación <strong>de</strong> menos <strong>de</strong> k pasos. Por la hipótesis<strong>de</strong> inducción los X i que sean variables son eventualmente puestos en NEWV. La condición <strong>de</strong> la sentenciawhile en la línea (3), justo <strong>de</strong>spués que el último <strong>de</strong> los X i se agrega a NEWV es falsa, ya que eseX i no está en OLDV. Por lo tanto hay una iteración adicional (al menos), en la que A será agregadaa NEWV en la línea (5). Sea V ′ el conjunto calculado en línea (6) y sea P ′ el conjunto <strong>de</strong> todaslas producciones cuyos símbolos están en V ′ ∪ T . Con toda seguridad G ′ = (V ′ , T, P ′ , S) satisface lapropiedad <strong>de</strong> que si A ∈ V ′ , entonces A⇒w, ∗ para algún w ∈ T ∗ . También, como cada <strong>de</strong>rivación en G ′es una <strong>de</strong>rivación <strong>de</strong> G, se sabe que L(G ′ ) ⊆ L(G). Si hubiera algún w ∈ L(G) y no en L(G ′ ), entoncescualquier <strong>de</strong>rivación <strong>de</strong> w ∈ G <strong>de</strong>be incluir una variable en V ′ − V o una producción en P − P ′ (queimplica que se usa una variable en V − V ′ ). Pero entonces existe una variable en V − V ′ que <strong>de</strong>rivaun string <strong>de</strong> terminales, una contradicción.Lema 4 Dada una gramática libre <strong>de</strong> contexto G = (V, T, P, S), es posible encontrar efectivamente unagramática libre <strong>de</strong> contexto equivalente, G ′ = (V ′ , T ′ , P ′ , S), tal que por cada X en V ′ ∪ T ′ existen α y β en(V ′ ∪ T ′ ) ∗ tales que S ∗ ⇒ G ′αXβ.Demostración : El conjunto V ′ ∪ T ′ <strong>de</strong> símbolos que aparecen en las formas sentenciales <strong>de</strong>rivables <strong>de</strong> G sepue<strong>de</strong> construir por un algoritmo iterativo. Ponga S en V ′ . Si A está en V ′ y A → α 1 |α 2 . . . α n , entoncesagregue a V ′ todas las variables que aparezcan en α 1 , α 2 , . . . o α n , y a T ′ todos los terminales en α 1 ,α 2 , . . . , α n . P ′ es el conjunto <strong>de</strong> producciones en P que sólo tienen símbolos <strong>de</strong> V ′ ∪ T ′ .Aplicando primero el lema anterior, y a continuación este último, es posible convertir una gramática enuna equivalente sin símbolos inútiles. Es interesante notar que si se utilizan en el or<strong>de</strong>n contrario es posibleque aún que<strong>de</strong>n símbolos inútiles.Teorema 18 Todo lenguaje libre <strong>de</strong> contexto no vacío es generado por una gramática libre <strong>de</strong> contexto queno tiene símbolos inútiles.Demostración : Sea L = L(G) un lenguaje libre <strong>de</strong> contexto no vacío. Sea G 1 el resultado <strong>de</strong> usar el primerlema en G, y sea G 2 el resultado <strong>de</strong> aplicar la construcción <strong>de</strong>l segundo lema a G 1 . Suponga que G 2 tieneun símbolo inútil X. Por el último lema, hay una <strong>de</strong>rivación S⇒ ∗ G 2 αXβ. Ya que todos los símbolos <strong>de</strong> G 2son símbolos <strong>de</strong> G 1 , <strong>de</strong>l primer lema se sabe que S⇒ ∗ G 1 αXβ⇒ ∗ G 1 w para algún string <strong>de</strong> terminales w. Porlo tanto, ningún símbolo en la <strong>de</strong>rivación αXβ⇒ ∗ G 1 w es eliminado por el segundo lema. Por lo tanto, X<strong>de</strong>riva un string <strong>de</strong> terminales en G 2 y no es inútil como se suponía.✷✷

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!