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.

5.5. ÁRBOLES DE DERIVACIÓN 83 ✷Ejemplo 70 Consi<strong>de</strong>re la gramática G = (V, T, P, S), con V = {S, A, B}, T = {a, b} y P dado por lassiguientes produccionesS → aB A → bAAS → bA B → bA → a B → bSA → aS B → aBBEl lenguaje L(G) es el conjunto <strong>de</strong> todos los strings en T ∗ que tienen el mismo número (≥ 1) <strong>de</strong> a’s yb’s. Se probará, por inducción en la longitud <strong>de</strong>l string que• S ∗ ⇒w si y sólo si w tiene tantas a’s como b’s• A ∗ ⇒w si y sólo si w tiene una a más que b’s• B ∗ ⇒w si y sólo si w tiene una b más que a’sLa hipótesis es obviamente cierta si |w| = 1, ya que A ⇒ a y B ⇒ b y ningún string <strong>de</strong> largo 1 <strong>de</strong>terminales es <strong>de</strong>rivable <strong>de</strong> S. También, ya que todas las producciones, excepto A → a y B → b incrementanel largo <strong>de</strong> un string, ningún string <strong>de</strong> longitud 1, excepto a y b, son <strong>de</strong>rivables <strong>de</strong> A y B, ni ninguno es<strong>de</strong>rivable <strong>de</strong> S.Suponga ahora que la hipótesis inductiva es verda<strong>de</strong>ra para todo w <strong>de</strong> largo k − 1 ó menos. Se mostraráque se cumple para |w| = k. Si S ∗ ⇒w entonces la <strong>de</strong>rivación <strong>de</strong>be comenzar con S → a o S → bA. En elprimer caso, w = aw 1 con |w 1 | = k − 1 y B ⇒ w 1 . Por la hipótesis inductiva, el número <strong>de</strong> b’s en w 1 es 1más que el número <strong>de</strong> a’s; por lo tanto, w tiene igual número <strong>de</strong> b’s que <strong>de</strong> a’s. Un argumento similar esválido si la <strong>de</strong>rivación comienza con S → bA. Para la prueba en la otra dirección, esto es, si |w| = k y wtiene tantas a’s como b’s, entonces S ⇒ w, consi<strong>de</strong>re que el primer símbolo <strong>de</strong> w es una a o una b. Supongaque w = aw 1 ; pero |w 1 | = k − 1 y tiene una b más que a’s. Por la hipótesis inductiva entonces B ⇒ w 1 .Luego S ⇒ aB ∗ ⇒aw 1 = w. Un argumento similar es válido si el primer símbolo <strong>de</strong> w es una b.Debe ahora probarse las aserciones para A y B, pero se hacen en forma similar a la <strong>de</strong> S.Otra gramática posible para este mismo lenguaje esS → abS → baS → aSbS → bSaS → SS5.5 Árboles <strong>de</strong> DerivaciónEs muy útil representar las <strong>de</strong>rivaciones como árboles. Estos árboles, llamados árboles <strong>de</strong> <strong>de</strong>rivación (o<strong>de</strong> parse) imponen una estructura en los strings <strong>de</strong> un lenguaje que es muy útil en aplicaciones como lacompilación <strong>de</strong> lenguajes <strong>de</strong> programación.Los vértices o nodos <strong>de</strong> un árbol <strong>de</strong> <strong>de</strong>rivación tienen etiquetas que son terminales, variables o el stringnulo ε. Si un nodo interior n tiene etiqueta A y los hijos <strong>de</strong> n tienen etiquetas X 1 , X 2 , . . . , X k (<strong>de</strong> izquierdaa <strong>de</strong>recha), entonces A → X 1 X 2 . . . X k <strong>de</strong>be ser una producción.La Figura 5.2 muestra el árbol para la <strong>de</strong>rivación <strong>de</strong> (id + id) ∗ id mostrada anteriormente.Nótese que si se leen las hojas <strong>de</strong> izquierda a <strong>de</strong>recha, se obtiene el string (id + id) ∗ id.Más formalmente, sea G = (V, T, P, S) una gramática libre <strong>de</strong> contexto. Un árbol es un árbol <strong>de</strong> <strong>de</strong>rivaciónsi• Cada vértice tiene una etiqueta que es un símbolo en V ∪ T ∪ ε✷

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

Saved successfully!

Ooh no, something went wrong!