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...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

88 CHAPTER 5.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES LIBRES DE CONTEXTOSi en cada paso <strong>de</strong> una <strong>de</strong>rivación se usa una producción para reemplazar la variable <strong>de</strong> más a la izquierdaen la forma sentencial, se dice que esa es una <strong>de</strong>rivación por la izquierda. Similarmente, si es la variable <strong>de</strong>más a la <strong>de</strong>recha, se dice que es una <strong>de</strong>rivación por la <strong>de</strong>recha.Si w ∈ L(G) para alguna gramática libre <strong>de</strong> contexto G, entonces w tiene al menos un árbol <strong>de</strong> <strong>de</strong>rivación;y correspondiente a un árbol <strong>de</strong> <strong>de</strong>rivación en particular, w tiene una única <strong>de</strong>rivación por la izquierda yuna única <strong>de</strong>rivación por la <strong>de</strong>recha. Por supuesto que w pue<strong>de</strong> tener varias <strong>de</strong>rivaciones por la izquierda yvarias <strong>de</strong>rivaciones por la <strong>de</strong>recha ya que pue<strong>de</strong> haber más <strong>de</strong> un árbol <strong>de</strong> <strong>de</strong>rivación para w. Sin embargo,es fácil mostrar que por cada árbol <strong>de</strong> <strong>de</strong>rivación hay sólo una <strong>de</strong>rivación por la izquierda y, también, unaúnica <strong>de</strong>rivación por la <strong>de</strong>recha.Ejemplo 73 La <strong>de</strong>rivación por la izquierda que correspon<strong>de</strong> al árbol <strong>de</strong>l ejemplo anterior esS ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaay la <strong>de</strong>rivación por la <strong>de</strong>recha esS ⇒ aAS ⇒ aAa ⇒ aSbAa ⇒ aSbbaa ⇒ aabbaaUna gramática G tal que algún string tiene dos árboles <strong>de</strong> <strong>de</strong>rivación se dice que es ambigua. Una<strong>de</strong>finición equivalente es que algún string tenga más <strong>de</strong> una <strong>de</strong>rivación por la izquierda o más <strong>de</strong> una por la<strong>de</strong>recha. Un lenguaje libre <strong>de</strong> contexto para el cual toda gramática es ambigua, se dice que es un lenguajeinherentemente ambiguo. Más a<strong>de</strong>lante se verá que existen lenguajes inherentemente ambiguos.5.6 Simplificación <strong>de</strong> GramáticasHay varias maneras en que se pue<strong>de</strong> restringir el formato <strong>de</strong> las producciones, sin reducir el po<strong>de</strong>r generador<strong>de</strong> las gramáticas libres <strong>de</strong> contexto. Si L es un lenguaje libre <strong>de</strong> contexto no vacío, entonces pue<strong>de</strong> sergenerado por una gramática libre <strong>de</strong> contexto, G, con las siguientes propieda<strong>de</strong>s:• Cada variable y cada terminal <strong>de</strong> G aparece en la <strong>de</strong>rivación <strong>de</strong> algún string <strong>de</strong> L• No hay producciones <strong>de</strong> la forma A → B, en que A y B son variablesMás aún, si ε ∉ L, no es necesario que haya producciones <strong>de</strong> la forma A → ε.Primero se verá cómo eliminar símbolos inútiles <strong>de</strong> una gramática. Sea G = (V, T, P, S) una gramática.Un símbolo X es útil si existe una <strong>de</strong>rivaciónS ∗ ⇒αXβ ∗ ⇒wpara algún α, β y w, con w ∈ T ∗ . Si un símbolo no es útil, se dice que es inútil. Hay dos aspectos queconsi<strong>de</strong>rar en esto <strong>de</strong> la utilidad. Primero, algún string <strong>de</strong> terminales <strong>de</strong>be ser <strong>de</strong>rivable <strong>de</strong> X y, segundo,X <strong>de</strong>be ser parte <strong>de</strong> un string <strong>de</strong>rivable <strong>de</strong> S. Pero no sólo eso, sino que a<strong>de</strong>más X <strong>de</strong>be ocurrir en algunaforma sentencial <strong>de</strong> la que es posible <strong>de</strong>rivar un string <strong>de</strong>l lenguaje.Lema 3 Dada una gramática libre <strong>de</strong> contexto G = (V, T, P, S), con L(G) ≠ ∅, es posible encontrar efectivamenteuna gramática libre <strong>de</strong> contexto, G ′ = (V ′ , T, P ′ , S), tal que para todo A ∈ V ′ hay un w ∈ T ∗ parael cual A ∗ ⇒w.Demostración : Cada variable A con producciones A → w en P , pertenece a V ′ . Si A → X 1 X 2 . . . X n esuna producción en que cada X i es un terminal o una variable que ya está en V ′ , entonces es posible <strong>de</strong>rivarun string <strong>de</strong> terminales <strong>de</strong>s<strong>de</strong> A por una <strong>de</strong>rivación que comienza con A ⇒ X 1 X 2 . . . X n y, por lo tanto,A ∈ V ′ . El conjunto V ′ se pue<strong>de</strong> calcular con el siguiente algoritmo:✷

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

Saved successfully!

Ooh no, something went wrong!