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.

82 CHAPTER 5.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES LIBRES DE CONTEXTOpresentará simplemente listando sus producciones. Si A → α 1 , A → α 2 , . . .,A → α N , son producciones parala variable A <strong>de</strong> alguna gramática, es posible expresarlas usando la notaciónA → α 1 | α 2 | . . . | α Nen que | es leído “o”. La gramática completa <strong>de</strong>l ejemplo anterior pue<strong>de</strong> escribirse comoE → E + E | E ∗ E | (E) | idAhora se <strong>de</strong>finirá formalmente el lenguaje generado por una gramática G = (V, T, P, S). Para ello esnecesario <strong>de</strong>sarrollar una notación que represente las <strong>de</strong>rivaciones.Primero, se <strong>de</strong>finen dos relaciones: ⇒ G y ∗ ⇒ G , entre strings en (V ∪ T ) ∗ . Si A → B es una producción enP y α y γ son strings cualesquiera en (V ∪ T ) ∗ , entoncesαAγ ⇒ GαβγSe dice que la producción A → β se le aplica al string αAγ para obtener αβγ, o que αAγ <strong>de</strong>rivadirectamente αβγ en la gramática G. Dos strings están relacionados por ⇒ G exactamente cuando el segundose obtiene <strong>de</strong>l primero por una aplicación <strong>de</strong> alguna producción.Suponga que α 1 , α 2 , . . . , α M son strings en (V ∪ T ) ∗ , con M ≥ 1, y queα 1⇒G α 2 , α 2⇒G α 3 , . . . , α M−1⇒G α M∗ ∗Entonces se dice que α 1⇒ G α M o que α 1 <strong>de</strong>riva α M en la gramática G. Esto es, ⇒ G es la clausurareflexiva y transitiva <strong>de</strong> ⇒ G. También, α⇒ ∗ G β si β proviene <strong>de</strong> α por la alicación <strong>de</strong> cero o más producciones<strong>de</strong> P . Nótese que α⇒ ∗ G α, para todo string α. Usualmente, si es claro cuál es la gramática G, se usa ⇒ enlugar <strong>de</strong> ⇒ G, y ⇒ ∗ en lugar <strong>de</strong> ⇒ ∗ G . También, si α <strong>de</strong>riva β en exactamente i pasos, se dice que α⇒β.iEl lenguaje generado por G, <strong>de</strong>notado por L(G), es el conjunto{w/w ∈ T ∗ y S ∗ ⇒ G w}esto es, un string está en L(G) si y sólo si• el string consiste sólo <strong>de</strong> terminales• el string es <strong>de</strong>rivable <strong>de</strong>s<strong>de</strong> SUn lenguaje se llamará lenguaje libre <strong>de</strong> contexto si es L(G) para alguna gramática libre <strong>de</strong> contexto G.Un string <strong>de</strong> terminales y variables, α, es llamado una forma sentencial si S ∗ ⇒ G α. Dos gramáticas se dicenequivalentes si L(G 1 ) = L(G 2 ).Ejemplo 69 Consi<strong>de</strong>re la gramática G = (V, T, P, S), con V = {S}, T = {a, b} y P dado porS → aSbS → abS es la única variable; a y b son terminales. Usando la primera producción N − 1 veces, seguidas <strong>de</strong> unaaplicación <strong>de</strong> la segunda producción, se obtiene:S ⇒ aSb ⇒ aaSbb ⇒ . . . ⇒ a N−1 Sb N−1 ⇒ a N b NA<strong>de</strong>más, sólo strings <strong>de</strong> la forma a N b N (N ≥ 1) están en L(G). Cada vez que S → aSb es usada, semantiene el número <strong>de</strong> S’s. Después <strong>de</strong> usar la producción S → ab, el número <strong>de</strong> S’s <strong>de</strong> la forma sentencialdisminuye en uno. Por lo tanto, ya que se empieza con S y ya que ambas producciones son para S, elúnico or<strong>de</strong>n en que ellas pue<strong>de</strong>n ser usadas es empleando S → aSb algún número <strong>de</strong> veces seguidas por unaaplicación <strong>de</strong> S → ab. Por lo tanto,L(G) = {a N b N /N ≥ 1}Este lenguaje es el ejemplo <strong>de</strong> un lenguaje libre <strong>de</strong> contexto que no es un lenguaje regular.

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

Saved successfully!

Ooh no, something went wrong!