Se prohíbe la reproducción total o parcial de este documento, excepto para uso privado de los alumnos de la asignatura Teoría de AutómatasI de la UNED y los alumnos de asignaturas equivalentes de otras universidades Problemas resueltos del libro de texto: J. G. Brookshear, Teoría de la Computación, Addison-Wesley Iberoamericana, 1993 Teoría de Autómatas I Profª Dra. Mª Ángeles Manjarrés Prof. Dr. Francisco Javier Díez Correo-e:
[email protected] Dpto. Inteligencia Artificial E.T.S.I. Informática UNED Primera edición: diciembre de 1999 Revisado en junio de 2001 Problemas de repaso del capítulo 1 Problema 1 Tal y como se muestra en el ejercicio número 2, la intersección de una colección finita de lenguajes regulares siempre es regular. Basta probar pues que el lenguaje descrito en el enunciado coincide con la intersección de una colección finita de lenguajes regulares del alfabeto {x, y, z}. Una tal colección la constituyen los lenguajes L1, L2 y L3 donde: L1 es la colección de todas las cadenas de x, y y z con un número impar de xs L2 es la colección de todas las cadenas de x, y y z con un número impar de ys L3 es la colección de todas las cadenas de x, y y z con un número par de zs Las cadenas que pertenezcan al lenguaje L =L1 ∩ L2 ∩ L3 habrán de verificar las tres condiciones anteriores. Podemos demostrar que los lenguajes L1, L2 y L3 son regulares mostrando los autómatas finitos que los reconocen: y x 1 x z z 2 z 3 y z y x y 4 x x z 5 z y 6 x y Problema 2 Demostraremos que el lenguaje L intersección de una colección finita de lenguajes regulares {Li}i=1..n es un lenguaje regular describiendo un procedimiento sistemático de construcción del autómata finito que lo reconoce. Sea {Mi(Si, Σ, δi, ιi, Fi)}i=1..n un conjunto de autómatas finitos tales que ∀ i Mi reconoce el lenguaje Li. Entonces el autómata M (S, Σ, δ, ι, F) tal que: S = S1 x S2 x…Sn, producto cartesiano de los respectivos conjuntos de estados Si; Σ alfabeto de los lenguajes Li; δ: S x Σ → S, función de transición definida en términos de las funciones δi, tal que dado un estado s = (s1, s2,…sn), con si ∈ Si, y un símbolo x∈Σ entonces δ(s,x) = q, q ∈ S q = (δ1(s1,x), δ2(s2,x),… δn(sn,x)) (al dibujar el diagrama del autómata M, desde cada estado s = (s1, s2,…sn) se traza un arco hacia q = (q1, q2,…qn) rotulado por x si y sólo si para todo i en el diagrama del autómata Mi existe un arco hacia qi rotulado por x) ; ι = (ι1, ι2,…ιn), ι ∈ S, estado producto de los estados iniciales ιi; F = {f ∈ S , | f = (f1,f2,…fn), fi ∈ Fi}, F ⊆ S, colección de estados producto de estados finales fi; reconoce el lenguaje L = L1 ∩ L2 ∩ …Ln. Demostremos que el autómata M acepta exclusivamente las cadenas que pertenecen al lenguaje L. Por definición de aceptación de una cadena por un autómata finito, M acepta una cadena x1x2..xL si y sólo si existe una secuencia de estados E1, E2…EL (Ej = (e1j, e2j,…enj)), con E1 = ι y EL ∈ F, tales que desde Ej-1 existe un arco rotulado por xj hacia Ej, para todo valor de j. Dado el procedimiento de construcción del autómata M, lo anterior tiene lugar si y sólo si ∀ i existe una secuencia de estados ei1, ei2…eiL con ei1 = ιi y EiL ∈ Fi, tales que desde eij-1 existe un arco rotulado por xj hacia eij, para todo valor de j. La afirmación anterior implica que el autómata M acepta una cadena si y sólo si cada autómata Mi acepta dicha cadena. Puesto que existe un procedimiento de construcción de un autómata finito que reconoce el lenguaje L, podemos afirmar que L es regular. Siguiendo el procedimiento indicado, puede construirse el autómata finito que reconoce el lenguaje especificado en el enunciado del problema 1, a partir de los autómatas que reconocen los lenguajes L1, L2 y L3. y 235 y z x x y 135 245 z 236 x y y x y 145 z z 246 x z x z z 136 z y y 146 Problema 3 Veamos igualmente un procedimiento sistemático de construcción de un autómata finito M (S, Σ, δ, ι, F) que reconoce el lenguaje L = L1 – L2. Sean M1(S1, Σ, δ1, ι1, F1) y M2(S2, Σ, δ2, ι2, F2) los autómatas finitos que reconocen los lenguajes L1 y L2. Entonces el autómata M (S, Σ, δ, ι, F) tal que: . para todo valor de j. F ⊆ S. δ: S x Σ → S. y por tanto la cadena es reconocida por el autómata M1. q ∈ S q = (δ1(s1. con E1 = ι y EL ∈ F. es fácil ver que una cadena es reconocida por M si y sólo si es reconocida por M1 y rechazada por M2: M acepta una cadena x1x2. ι2). desde cada estado s = (s1. f1 ∈ F1 y f2 ∉ F2}. s2) se traza un arco hacia q = (q1. q2) rotulado por x si y sólo si en los diagramas de los autómatas M1 y M2 existe un arco hacia q1 y q2. respectivamente. Si este es el caso existe asimismo una secuencia de estados e11. A continuación ilustramos este procedimiento de construcción cuando el lenguaje L1 es el conjunto de cadenas con un número impar de xs y el lenguaje L2 es el conjunto de cadenas con un número impar de ys.xL si y sólo si existe una secuencia de estados E1. Dado el procedimiento de construcción del autómata. con s1 ∈ S1 y s2 ∈ S2. (al dibujar el diagrama del autómata. tales que desde Ej-1 existe un arco rotulado por xj hacia Ej. Σ alfabeto de los lenguajes L1 y L2. s2). δ2(s2.x)). | f = (f1. función de transición definida en términos de las funciones δ1 y δ2.S = S1 x S2. ι ∈ S. y x 1 x z z 2 y x x y 3 y z z 4 z z y y 13 14 x x z 24 x x 23 y y z El mismo resultado puede demostrarse considerando dos resultados previos: . producto cartesiano de los conjuntos de estados S1 y S2. e2j)). y un símbolo x∈Σ entonces δ(s. e12…e1L con e11 = ι1 y e1L ∈ F1.f2). El reconocimiento de la cadena lleva sin embargo al autómata M2 a un estado e2L que no es de aceptación. F = {f ∈ S . Obsérvese que el procedimiento de construcción es el mismo que el del autómata que reconoce el lenguaje intersección excepto en lo que respecta a la designación de los estados de aceptación. L = L1 – L2 es el conjunto de las cadenas con un número impar de xs y un número par de ys. estado producto de los estados iniciales ι1 y ι2. reconoce el lenguaje L = L1 – L2. rotulado por x) ι = (ι1.x) = q. E2…EL (Ej = (e1j.x). tal que dado un estado s = (s1. tal que desde e1j-1 existe un arco rotulado por xj hacia e1j. Para n mayor que el número de estados del autómata. Para demostrar esto. Expresiones regulares de un alfabeto Σ son: ∅ (que representa el lenguaje vacío). Las cadenas capicuas de este lenguaje responden precisamente al patrón xnymxn. En ese caso. y considerando la relación L1 –L2 = L1 ∩ (Σ* . reconocer cadenas que respondieran al patrón xnymxn. forzosamente en el reconocimiento de la subcadena xn el autómata pasaría más de una vez por al menos uno de los estados. recorriendo un bucle o camino cerrado en el diagrama de estados. Supongamos que el número de símbolos xs leídos en ese tránsito es j. . cualquier cadena de configuración xn+kjymxn sería asimismo reconocida por el autómata para cualquier valor de k ∈ N. con ω∈ L y ν ∈(Σ*-L) es regular por ser la concatenación de dos lenguajes regulares: el lenguaje L y su lenguaje complementario. Problema 5. también es regular el lenguaje Linv obtenido al escribir de forma inversa las cadenas de L. Problema 6. El lenguaje que consiste en las cadenas de la forma ων. en particular. donde x e y son dos símbolos cualesquiera del alfabeto. veremos que existe un procedimiento sistemático para formular la expresión regular que representa al lenguaje Linv.L2) Problema 4. Consideremos como contraejemplo la colección de palíndronos del lenguaje regular caracterizado por la expresión regular x*· y*· x*. siempre que Σ sea un alfabeto con más de un símbolo (en el caso de un sólo símbolo la colección de palíndronos coincide con Σ*). Si L es un lenguaje regular. que caracteriza un lenguaje no regular.1) la intersección de dos lenguajes regulares es un lenguajes regular (demostrado en el problema 2) 2) el complemento de un lenguaje regular es un lenguaje regular (para construir el autómata que reconozca dicho lenguaje basta con cambiar en el autómata que reconoce el lenguaje inicial los estados de aceptación por estados de no aceptación y viceversa) . por tener un número finito de estados. para n y m arbitrariamente grandes.a Un autómata finito no puede reconocer la colección de palíndronos de Σ*. a pesar de no ser un palíndrono.b La colección de palíndronos de un lenguaje regular no necesariamente es un lenguaje regular. Problema 4. El autómata que reconociese este lenguaje debería. cualquier combinación de expresiones regulares mediante las operaciones ∪. x) = s. función de transición inversa de δ. para todo valor de j entre 1 y L. estado de aceptación de Minv) verifica que desde ιinv existe un arco rotulado por x1 hacia EL-1 y desde EL-j existe un arco rotulado por xj+2 hacia EL – j+1. Si M (S. Es fácil ver que: I(∅) = ∅ I(x) = x ∀ x ∈Σ ∀ r. tal que dado un estado s ∈ Sinv. ∀ f ∈ F. para todo valor de j. estado inicial Finv = {ι} si ι ∉F (el único estado de aceptación es el estado inicial de M).x) = q si δ(q. se añaden las transiciones δinv (ιinv. ι. y un símbolo x∈Σ entonces δinv (s. E1 = ι y EL ∈ F.xL si y sólo si existe una secuencia de estados E1. δ. denominaremos I(r) a la expresión regular que representa al lenguaje constituido por las cadenas inversas de las cadenas contenidas en L. Dado su procedimiento de construcción. F) es el autómata finito que reconoce el lenguaje L. M acepta una cadena x1x2. (con E1 = ι. x) = f. Σ. El ejemplo muestra el autómata que reconoce el lenguaje constituido por las cadenas inversas del lenguaje generado por la expresión regular (x·y*·z) ∪ y. La afirmación anterior implica que el autómata Minv acepta una cadena si y sólo si el autómata M acepta la cadena inversa. Si r es la expresión regular que representa el lenguaje L.. E1. ιinv.x) = q si δ(q. el autómata Minv reconocerá la cadena xL…x2x1 ya que la secuencia de estados ιinv. tales que desde Ej-1 existe un arco rotulado por xj hacia Ej. · y ∗. ιinv } si ι ∈ F (los estados de aceptación son el estado inicial de M y el nuevo estado inicial). el lenguaje Linv será reconocido por el autómata Minv (Sinv. Además.EL-1…E2. E2…EL. Finv = {ι. δinv. Σ. s expresiones regulares en Σ: I(r·s) = I(r) · I(s) I(r*) = (I(r))* I(r∪s) = I(r)∪I(s) La demostración puede basarse asimismo en la demostración de existencia de un autómata finito que reconoce tal lenguaje. construído a partir del autómata que reconoce el lenguaje de partida. ιinv. obtenido por el procedimiento descrito: .los símbolos de Σ. Finv) tal que: Sinv = S∪ιinv δinv: Sinv x Σ → Sinv. todas las cadenas del tipo xnyn. Problema 9 Dado un conjunto de reglas gramaticales que genera un lenguaje regular. que no pertenecerán al lenguaje especificado. la gramática que resulta al intercambiar el orden entre terminales y no terminales en la parte derecha de las reglas generará. L = (Linv)inv). por tanto. con un número finito de estados) que acepte dichas cadenas aceptará también determinadas cadenas que respondan al patrón xnym. un lenguaje regular (resultado obtenido en el problema 6). para n∈N. . Por un razonamiento análogo al utilizado en el problema 4 puede deducirse que un autómata finito (y. con n ≠m. Demostrar que todo lenguaje regular puede generarse mediante una gramática de estas características es trivial. obviamente. el lenguaje constituido por las cadenas inversas. en este caso. Tal lenguaje será. por tanto. en particular. ya que todo lenguaje regular es el lenguaje obtenido al invertir las cadenas de otro lenguaje regular (en particular.y x z y x z y y y z Los estados de aceptación del autómata de partida pueden. eliminarse del diagrama: y x z y z Problema 7 El lenguaje L’ definido por la colección de cadenas de L cuyas inversas también se encuentran en L puede expresarse como: L’ = Linv∩L Y por tanto es un lenguaje regular. Problema 10 El lenguaje descrito debería incluir. x x x y x x y x x y y x y y Problema 12 Cualquier lenguaje finito puede expresarse como la unión finita de los lenguajes que constituyen cada una de sus cadenas.Problema 11 El lenguaje que consiste en aquellas cadenas que no contienen tres xs consecutivas es el lenguaje complementario del que consiste en aquellas cadenas que sí contienen tres xs consecutivas. Su lenguaje complementario es también por tanto regular (ver problema 3). si L = {ωi}i=1…n. puesto que puede representarse mediante la expresión regular: (x∪y)* ·x·x·x· (x∪y)*. A continuación se muestran los respectivos diagramas de los autómatas que reconocen los dos lenguajes anteriores. Es decir. b 1 b 3 2 a b b 1 23 b a 13 a 3 12 2 a . Este último lenguaje es regular. y Li ={ωi}. entonces L = {∪ Li}i=1…n Problema 13 El diagrama se obtiene siguiendo las indicaciones del libro de texto (página 46). Todas las cadenas que consisten en un número impar de xs y un número par de ys. no determinismo.xi. d. Es decir. ((x·x*)∪(y·y*)) Cadenas de xs con al menos una x y cadenas de ys con al menos una y.xi. Todas las cadenas que consisten en un número impar de x. el diagrama D´ conduce a un estado de aceptación bajo la lectura de las mismas cadenas que D. x · (x · x) * b. Problema 15 (z ∪ y)* · x Cualquier combinación de z e y seguida de x.Eliminando los estados no accesibles se obtiene: b a Problema 14 Cada transición (p.q) del diagrama D se sustituye en el diagrama D’ por el conjunto de transiciones {(p.si) | (q. Problema 16 a. Veremos primero cuál es el autómata finito que reconoce este lenguaje y de ahí derivaremos la expresión regular que lo describe. ((x*·y*)·z)) Cadenas formadas por cero o más xs seguidas de cero o más ys seguidas de cero o más zs. por tanto. a. El lenguaje puede verse como la intersección de dos lenguajes más sencillos: el conjunto de cadenas con un . la transición λ se elimina y a su estado origen se añaden todos los arcos que partían de su estado destino (conservando sus etiquetas y destinos). abreviando el tránsito de p a los estados si al saltarse el estado q. ((x·x*)·y·y*)) Cadenas que empiezan por una sucesión de xs (con al menos una x) y termina con una sucesión de ys (con al menos una y) c. o bien una única x b. Lógicamente en este proceso de construcción del nuevo diagrama pueden aparecer etiquetas repetidas en los arcos y.λ.si) transición de D}. Puesto que la transición λ no implica la lectura de ningún símbolo de la cadena de entrada. El autómata que reconoce el lenguaje puede construirse a partir de los correspondientes autómatas. el autómata anterior puede describirse mediante un diagrama de tan sólo dos estados. x· x y· y y· x x· y 24 13 y x x 23 y (y · x) · (x · x)* · (x · y) ∪ (y · y) (((y · x) · (x · x)* · (x · y))∪ (y · y) y · (x · x)*) · y 13 (y · (x · x)*) · (x · y)) ∪ x 23 Aplicando las reglas de obtención de expresiones regulares correspondientes a autómatas de dos estados (uno inicial y otro de aceptación): r s t u (((r · s) · t ) · (u · ((r · s) · t*))*) * * * . y x 1 x 2 y ∩ y y 13 14 x y 4 y 3 x x x x x 23 24 y y Siguiendo el procedimiento indicado en la página 63 del libro de texto.número impar de xs y el conjunto de cadenas con un número par de ys. partiendo del autómata: x x y Se obtiene la expresión regular: (x · x*) · (y · x · x*)* Problema 18. Demostraremos que el lenguaje {ω | ω∈Σ∗ y xω∈ L} es regular mostrando que existe una gramática regular que lo genera. Considerando reglas lineales por la izquierda (ver problema 9) se demuestra análogamente que el lenguaje {ω | ω∈Σ∗ y ωx∈ L} es también regular.Se obtiene la expresión regular: ((((((y · x) · (x · x)* · (x · y))∪ (y · y ))* · (((y · x) · (x · x)*) · y) ∪ x) · (y · (x · x)*) · y)* · (y · (x · x)*) · (x · y)) ∪ x) · (((((y · x) · (x · x)* · (x · y))∪ (y · y ))* · (((y · x) · (x · x)*) · y) ∪ x))*) c. Dicha gramática verifica las propiedades de las gramáticas regulares: en la parte izquierda de sus reglas sólo aparecen símbolos no terminales. donde S es el símbolo de inicio de la gramática. Es posible pues seleccionar de entre las reglas de la gramática que genera el lenguaje L un subconjunto que genera el lenguaje constituido por las cadenas ω (el subconjunto que reescribe a símbolos terminales el no terminal A) al que habrá que añadir la regla S → λ en el caso en que x∈ L. Análogamente. existe una gramática regular que lo genera. tal que la reescritura del símbolo no terminal A mediante la aplicación de cierta secuencia de reglas genera la cadena ω. y en la parte derecha de sus reglas aparece el símbolo de cadena vacía o bien un símbolo terminal seguido de un no terminal o un solo símbolo terminal. y desde cuyo estado de aceptación existan transiciones distintas de aquellas que conducen a un estado de error o captación global. Si L es regular. Si ω = λ entonces la regla S → x forma parte de la gramática. Si xω∈ L y ω ≠ λ. Todas las cadenas de x e y tales que cada y esté inmediatamente precedida por una x e inmediatamente seguida por una x. existe una regla de reescritura S → xA. Problema 19 Vale como ejemplo cualquier lenguaje regular que se exprese como la unión de lenguajes cuya intersección sea el lenguaje vacío. . rotulado por la etiqueta que se indica en la figura. alguna subcadena xjxj+1…xk es reconocida en un camino cerrado entre estados del autómata. uno de inicio y otro de aceptación. y por tanto aceptara un número infinito de cadenas. Forzosamente en el reconocimiento de esta cadena el autómata pasa más de una vez por un cierto estado. 2) En cada uno de los diagramas anteriores se van suprimiendo estados hasta que sólo queden el estado inicial y el de aceptación. por cada par de arcos eliminado (uno que llega al estado y otro que emerge de él) se añade un arco desde el estado origen del primero al estado destino del segundo. Por cada estado suprimido se suprimen también sus arcos incidentes y emergentes y. Problema 21 El algoritmo se deduce de la demostración de equivalencia entre los lenguajes aceptados por los autómatas finitos y los lenguajes generados por expresiones regulares (ver página 63 del libro de texto). es decir.b a a b ∪ a b b a Problema 20 Denotemos la cadena con un número de símbolos mayor que el número de estados del autómata como x1x2…xn. El lenguaje aceptado por el autómata que representa el diagrama de transiciones original es igual a la unión de los lenguajes aceptados por los autómatas que representan los diagramas así obtenidos. El algoritmo consta de tres etapas: 1) El diagrama de transiciones se replica tantas veces como estados de aceptación tenga el autómata. considerando la notación de la figura: . pero de modo que en cada réplica sólo uno de los estados de aceptación siga siendo de aceptación. r p q ((p · r*) · q) 3) Una vez que se dispone de un diagrama con sólo dos estados. El autómata aceptará también necesariamente cualquier cadena de la forma x1x2…(xjxj+1…xj+k)m…xn ∀ n ∈ N. necesariamente el autómata pasa más de una vez por un mismo estado en el proceso de reconocimiento. pn+1= n(j+1). (x · (x ∪ y)* y ((x ∪ y)* · y) x · (x ∪ u)* · y c. si existe el arco etiquetado por u Problema 22 Veamos que no existe ningún autómata finito que reconozca exclusivamente las cadenas indicadas.r s t u Se obtiene la expresión regular asociada como: ((r* · s) · t*) . ∀ k ∈ N. Veamos. Si a > b > c. finalmente. Si xj es una subcadena leída en un camino cerrado (xn = xmxjxn-m-j). que no es un número primo. (x ∪ y*) y (x ∪ y*) (x ∪ y*) b. Para cadenas con n superior al número de estados del autómata. a. que pk= m + kj + n – m – j = (k – 1)j +n no puede ser un número primo para todo valor de k. si no existe el arco etiquetado por u (((r* · s) · t*) · (u · ((r* · s) · t*))*). ((x ∪ y) · (x ∪ ∅)) y (x ∪ y) · (x ∪ y)* ((x ∪ y) · (x ∪ ∅)) Problema 25. entonces el conjunto de cadenas en L de longitud impar es también un lenguaje regular. Problema 24 a. (((x ∪ y) · y) · (x ∪ y)*) y (y · (x ∪ y)*) y ·y · (x ∪ y)* d. b. cualquier cadena de tipo xmxkjxn-m-j será también reconocida por el autómata. Problema 23 Análogamente (k – 1)j +n no puede tener raíz cuadrada exacta para todo valor de k. . Si L es un lenguaje regular. c∈ N entonces a2-b2 > b2-c2. Si k = n + 1. ya que no existe una serie infinita de números {pk} con raíz cuadrada exacta tales que pk+1 > pk ∀ k ∈ N y que la diferencia entre dos números consecutivos de la serie sea constante (pk+1 – pk = j). y Li ={ωi}. puede trazarse un arco desde los antiguos estados de aceptación hacia el nuevo estado de aceptación con la etiqueta λ. y es también por tanto un lenguaje regular. El conjunto de cadenas en L de longitud par coincide con la intersección entre el lenguaje L y el lenguaje de las cadenas de longitud par de Σ*. Como alternativa a la etapa 2). Dicho lenguaje es regular.Se dibuja un nuevo estado que será ahora el único estado de aceptación del autómata. Así por ejemplo. para los lenguajes no regulares. no siempre es el caso cuando se trata de la unión de una colección infinita.Por cada uno de los anteriores estados de aceptación. que no es regular Problema 28 Convirtiendo la gramática en una gramática regular con reglas λ es más fácil. Convirtiendo la gramática en una gramática regular con reglas λ es más fácil. n∈ N}. El diagrama de un autómata finito con más de un estado de aceptación puede transformarse en el diagrama de un autómata – posiblemente no determinista . puede expresarse como la unión de una colección de lenguajes regulares tales que cada uno de ellos consiste exclusivamente en una de sus cadenas (Si L = {ωi}i=1…n. se duplican todos los arcos de entrada con los mismos orígenes y etiquetas dándoles como destino el nuevo estado de aceptación 3.j (xixj))*. entonces L = {∪ Li}i=1…n. dejando inalterado el resto del autómata. el lenguaje L = {∪ xiyi}i=0…∞. se obtiene el autómata correspondiente por el procedimiento indicado en la página 54 del libro de texto. S → xN S → xZ Z→λ . Los anteriores estados de aceptación dejan de serlo. Por tanto. se obtiene el autómata correspondiente por el procedimiento indicado en la página 54 del libro de texto. El conjunto de cadenas en L de longitud impar es el complementario en L del lenguaje anterior. 2. Problema 26. así como de la unión de una colección finita de lenguajes regulares se obtiene siempre un lenguaje regular.que reconoce el mismo lenguaje y tiene un único estado de aceptación mediante el siguiente procedimiento: 1. Lo anterior es cierto. Problema 27 Cualquier lenguaje. en particular. donde n puede tener un valor infinito).Consideremos el lenguaje constituido por el conjunto de todas las cadenas de longitud par de Σ*. ya que puede representarse mediante la expresión regular: (∪i. coincide con el lenguaje {xnyn.Si el antiguo estado de aceptación no tenía arcos de salida puede eliminarse. y por tanto es también un lenguaje regular. ya sea finito o infinito. N → yM N → yQ Q→λ M → zN M → zT T→λ y x S x N y Z z M zz T Q La expresión regular correspondiente es: S → xN S → xZ Z→λ N → yM N → yQ Q→λ M → zN M → zT T→λ y x S x N y Z Q z T M zz . Problema 30. página 94. Problema 31 El diagrama de transiciones es el siguiente: x w w y z w z x z w w x y y . toda cadena reconocida tendrá un número de símbolos inferior o igual al número de estados del autómata. Si el lenguaje incluye más cadenas aparte de la cadena vacía. La longitud de esta cadena será obviamente menor o igual que el número de estados del autómata. Sin embargo. siempre existirá al menos una cadena de símbolos cuya lectura lleve al autómata a un estado de aceptación recorriendo sus caminos cerrados una única vez (y pasando por tanto una sola vez por cada estado). y será no vacía si el lenguaje incluye cadenas distintas de la cadena vacía.La expresión regular correspondiente es: (x ∪ (x · (y · z)* · y) ∪ (x · y ) · (z · y)* · z ) Problema 29 Demostración en el capítulo 2. En autómatas que tienen caminos cerrados. Si el autómata no tiene ningún camino cerrado. dichas cadenas tendrán una longitud no nula. las cadenas de longitud mayor que el número de estados del autómata se reconocen pasando más de una vez por alguno o algunos de los estados. Existe una expresión regular que lo representa: xx*yy*. Por tratarse de un autómata finito. • Lenguaje general. {xmyn | m. Supongamos que existe tal autómata. S → AB A → xAy A→λ B → yBz B→λ Problema 3. y lo mismo ocurre en el reconocimiento de la segunda subcadena xm. debería tener un número finito de estados. • Lenguaje independiente del contexto reconocido por un autómata de pila determinista que vacía su pila antes aceptar una cadena. n ∈ N+}. Es el lenguaje generado por la siguiente gramática. {xnynz | n ∈ N+}. • Lenguaje regular: Σ*. Es el lenguaje generado por la siguiente gramática. Para m > número de estados del autómata. en el reconocimiento de la primera subcadena xm forzosamente se recorren más de una vez uno o más estados (se recorren bucles). o 2 . {xnyx | n ∈ N+} ∪ {xnyxn| n ∈ N+}. {x}. a. • Lenguaje independiente del contexto que no puede ser reconocido por ningún autómata de pila determinista: {xnyn | n ∈ N+} ∪ {xn y2n | n ∈ N+} • Lenguaje independiente del contexto no reconocido por ningún autómata de pila determinista que vacíe su pila antes de aceptar una cadena: {xn | n ∈ N+} ∪ {xnyn | n ∈ N+}.Problemas de repaso del capítulo 2 Problema 1. n ∈ N+}. n ≥ m}. S → xSx S → xMx M → yM M→ y Si el lenguaje fuera regular. b. debería existir también un autómata finito que lo reconociese. {xmynxn| m. y}. m ∈ N+. Esto significa que podrán reconocerse cadenas con más x’s antes de las y’s que después de las y’s. {λ}. ∅. n ∈ N+}. pero no es regular: {xnyn| n ∈ N+}. {xz. {xmynxmyn | m. {xmymzn | n. Problema 2. {xn| n ∈ N+}. no independiente del contexto: {xnynzn | n ∈ N+}. {xnyxn| n ∈ N+}. Problema 3. teorema 1. o bien un símbolo terminal o bien un par de símbolos no terminales) junto con un par de reglas S´ → S. Existe un autómata de pila determinista que acepta dicho lenguaje: Problema 5. Las reglas de reescritura que definen la gramática de dicho lenguaje siguen verificando las restricciones propias de las gramáticas independientes del contexto. n ∈ N+} o el lenguaje {xmynxnym | m. No existe pues el autómata de pila que reconozca las cadenas del lenguaje. Problema 4. pero después no sería posible acceder a las x´s sin vaciar primero las y´s. un autómata de pila que reconoce el lenguaje {xmynynxm | m. Las reglas de reescritura de la gramática que genera el lenguaje de las cadenas de L escritas a la inversa se obtienen sin más que alterar las reglas de tipo A → BC convirtiéndolas en A → CB.viceversa. sin embargo.2). Sería posible guardar en la pila la primera secuencia de x´s y a continuación la primera secuencia de y´s. No podemos por tanto utilizar este lema para demostrar que no es independiente del contexto. Problema 6. (demostración análoga en la página 40. n ∈ N+}. Una gramática independiente del contexto siempre puede escribirse al menos parcialmente en la forma normal de Chomsky (en la parte izquierda de las reglas aparece un único símbolo no terminal y en la parte derecha. Problema 3. resulta evidente que un autómata de pila no puede llevar el recuento de las dos variables x e y independientemente (cuando el número de x’s y de y’s puede ser arbitrariamente grande) puesto que sólo dispone de una pila para almacenar símbolos. c. Sí existe. Sin embargo. Este lenguaje verifica el lema de bombeo (condición necesaria pero no suficiente para que un lenguaje sea independiente del contexto). S → zMNz M → aMa M→ z N → bNb N→z S / / \ \ z M N z / /|\ z b N b /|\ bNb | z 3 . S → λ si contiene la cadena vacía. porque cada bucle puede recorrerse en el autómata un número indeterminado de veces. n ≥ m}. Problema 10. Es el lenguaje {xnym | n. Las cadenas que se aceptan cuando la pila no está vacía es el subconjunto del anterior cuyas cadenas tienen más x’s que y’s. Este autómata acepta cadenas con cualquier número de x e y tal que al leer la cadena de izquierda a derecha el número de y leídas no supera al número de x leídas en ningún momento. S → S1 S1 → x S1 y S1 → xy (estas tres reglas generan las cadenas con m = n ) S → S2 S2 → xS2 yy S2 → xy (estas tres reglas generan las cadenas con m = 2n ) Problema 12. m ∈ N. Problema 9. S → xSz S→y S Problema 13. S → xSy S→y S x xSy y y FDC error 4 x xSz y y z error FDC error . Problema 8.Derivación por la izquierda: S → zMNz → zzNz → zzbNbz → zzbbNbbz → zzbbzbbz Derivación por la derecha: S → zMNz → zMbNbz → zMbbNbbz → zMbbzbbz → zzbbzbbz Otra derivación: S → zMNz → zMbNbz → zzbNbz → zzbbNbbz → zzbbzbbz Hay en total tres derivaciones posibles. Es generado por una gramática independiente del contexto: S → xSx S → ySy S→x S→y S→λ Problema 22. Basta construir un autómata finito determinista a partir de esta gramática y luego sustituir cada transición x por x. S → xS S → xSy S→x Problema 22. Problema 20. S → xSx S → ySy S→λ Problema 21.λ. La gramática del enunciado es equivalente a la siguiente: S → xM M → yN N → zS N→z N→λ que es regular. b. a.λ. S → Sy S → xSy S→y 5 . {xmyn | m y n son enteros no negativos donde n < m}. {xmyn | m y n son enteros no negativos donde n > m}.Problema 18. etc. S → MzN M → xM M→λ N → yN N→λ 1) Encadenamientos: M→λ N→λ => S → MzN M → xM 6 . Considerando un alfabeto Σ. Problema 32. Es evidente que también pueden escribirse una a una de forma ordenada si consideramos la forma normal de Chomsky y tomamos como criterio de ordenación el número de símbolos no terminales en la gramática). por ser finitos. es posible realizar la unión a partir de las reglas correspondientes a sus respectivas gramáticas: G1 = (T1. Por ejemplo. el número de lenguajes definibles sobre Σ es incontable. a continuación los autómatas de dos estados etc. puede que la unión no sea independiente del contexto. los autómatas de pila que reconocen lenguajes de este alfabeto constituyen un conjunto contable. por tanto. el lenguaje {xnynzn} puede formarse como la unión de infinitos lenguajes. Para un número de estados determinado. V1. R2) G = G1 ∪ G2 → T = T1 ∪ T2 V = V1 ∪ V2 ∪ S (nuevo símbolo inicial) R = R1 ∪ R2 ∪ {S → S1 . se consideran todas las distintas combinaciones de transiciones posibles (considerando todas las operaciones posibles sobre la pila). V2. independientes del contexto): {xnynzn} = {λ} ∪ {xyz} ∪ {xxyyzz} ∪ {xxxyyyzzz} ∪ … Problema 29. S1.) se puede demostrar que la unión finita de una colección de lenguajes independientes del contexto es independientes del contexto. etc. cada uno de los cuales tiene solamente una cadena (estos lenguajes. Como el conjunto Σ* es infinito. y el cuarto con la unión de los tres primeros. Si se trata de dos lenguajes. Sin embargo. luego existen más lenguajes que los lenguajes independientes del contexto. si la colección es infinita. ya que puede idearse un procedimiento para enumerarlos: empezamos por los autómatas de un estado. S2.Problema 28. uniendo el tercer lenguaje con la unión de los dos primeros. son regulares y. (Igualmente podría haberse demostrado el carácter contable del conjunto de los lenguajes independientes del contexto viendo que también las gramáticas independientes del contexto constituyen un conjunto contable. R1) G2 = (T2. S → S2} Por inducción (es decir. S → zN M → x S → Mz N → yN S→z N→y 2) Eliminación de terminales mezclados con no terminales: => S → MZN M → XM Y → y S → ZN M → x Z → z S → MZ N → YN X → x S→z N→y 3) Eliminación de más de dos no terminales: => S → MA M → XM Y → y S → ZN M → x Z → z S → MZ N → YN X → x S → z N → y A → ZN Problema 33. X → xY Y → yZ Z→z Z→λ 7 . S → zMNz M → aMa M→z N → bNb N→z 2) => S → ZMNZ Z → z M → AMA A → a M→z B→b N → BNB N→z 3) => S → ZR Z → z M → AV A → a M→z B→b N → BW T → NZ N → z V → MA R → MT W → NB Problema 34. para la segunda se necesita un analizador LL(2): hace falta conocer por anticipado dos símbolos para deducir la aplicación de la regla X → xyz (aplicable si los dos primeros símbolos son xy) o X →x (aplicable en presencia de xFDC).X → xyz X→x La primera da lugar a un analizador LL(1) (sólo se necesita conocer el siguiente símbolo para saber qué regla aplicar: Z → z o Z → λ ) En cambio. cada no terminal forzosamente puede reescribirse al menos en una forma en términos de símbolos terminales) 3) Una vez que el lado derecho de todas las reglas empieza por un terminal. se reescribe este (de todas las formas posibles) utilizando el resto de las reglas hasta conseguir que aparezca un terminal al principio de la cadena (en todo conjunto de reglas de una gramática bien constituido. Problema 35. añadiéndose las nuevas reglas de reescritura correspondientes. se sustituyen los terminales que aparezcan en otras posiciones por nuevos símbolos no terminales (del mismo modo en que se hacía para obtener la forma normal de Chomsky). La forma normal de Griebach puede obtenerse aplicando los siguientes pasos: 1) Se eliminan las reglas λ (siempre es posible cuando el lenguaje no contiene la cadena vacía). 2) En las reglas cuyo lado derecho comience por un símbolo no terminal. Veamos un ejemplo: S → MzN M → xM M→λ N → yN N→λ 1) => S → MzN S → zN S → Mz S→z M → xM M→x N → yN N→y y y S → xzN S → xz 2) => De S → MzN obtenemos S → xMzN De S → Mz obtenemos S → xMz Conservamos las otras reglas: S → zN S→z M → xM M→x N → yN N→y 8 . Si f es nula para alguna de ellas. luego la formada por los símbolos 2-6. La cadena vacía. f(cadena) = 2 × nX − 3 × nY. Como punto de partida definimos una función f tal que.3) => S → xMZN S → xZN S → xMZ S → xZ S → zN S→z Problema 37. hasta llegar a la subcadena 5-10 (la segunda de las subcadenas que teníamos). tomamos la subcadena formada por los símbolos 1-5 (la primera subcadena). S S S S S S S S S S S S →λ → SS → xSxSxSySy → xSxSySxSy → xSxSySySx → xSySxSxSy → xSySxSySx → xSySySxSx → ySxSxSxSy → ySxSxSySx → ySxSySxSx → ySySxSxSx M → xM M→x N → yN N→y Z→z Observe que estas reglas incluyen todas las permutaciones de las x’s y las y’s: P53+2 = C35 × C22 = 5! / (3! × 2!) = 10.1 si sustituimos esta subcadena por S.. debe ser 0. la cadena resultante de suprimir 1 La demostración es bastante compleja. y denominaremos como subcadena nula. Dadas dos subcadenas consecutivas de signos opuestos. 9 . Una cadena pertenece al lenguaje si y sólo si f(cadena) = 0. que es la suma de las f’s de las subcadenas. de longitud múltiplo de 5). Está claro que todas las cadenas generadas por esta gramática pertenecen al lenguaje. es de nuevo una cadena del lenguaje. f debe ser positiva para unas subcadenas y negativa para otras. porque la f de la cadena primitiva. dada una cadena cuyo número de x’s es nX y cuyo número de y’s es nY. es generada por la gramática. la dividimos en varias subcadenas de longitud 5. Si la secuencia tiene 10 o más símbolos terminales. salvo por la S. sino que debe pasar primero de positiva a nula y luego a negativa. 10 cadenas) también son generadas por la gramática. porque f nunca puede psar de positiva a negativa al sustituir una x por una y —o viceversa—. que forman una cadena de longitud 10. Toda cadena que pertenece al lenguaje y tiene longitud mayor que cinco contiene al menos una subcadena de longitud 5 que también pertenece al lenguaje. en este “viaje” el signo de f ha pasado de positivo a negativo —o viceversa— y para alguna de estas subcadenas que están “a caballo” de las dos subcadenas iniciales f debe ser nula. Si esta nueva secuencia tiene cinco símbolos terminales (que necesariamente serán 3 x’s y 2 y’s). Lo que es mucho más complicado demostrar es que todas las cadenas del lenguaje pueden ser generadas por esta gramática. Dada una cadena del lenguaje (por tanto. Así se demuestra que hay al menos una subcadena nula. Todas las cadenas de longitud igual a 5 (en total. etc. Observamos primero que toda cadena que pertenezca al lenguaje debe tener una longitud múltiplo de 5. que pertenece al lenguaje. está claro que puede ser generada por la gramática. obtenemos una secuencia tal que. Si no. ya hemos demostrado que hay al menos una subcadena nula (de ahí su nombre). Empezamos buscando una subcadena nula. Nótese que en este proceso lo que hacemos siempre es buscar la subcadena nula y aplicar a la inversa alguna de las reglas de la gramática.la S (o las S’s. Sustituimos esta subcadena por S y obtenemos yxxxxSyxxxyxyxyy. que puede reescribirse como yxxxSy. la secuencia anterior. y ésta a su vez como yxxxxSxyxyy. La cadena resultante al omitir la S también pertenece al lenguaje. que resulta ser yxxxxSyxxxyxyxyy (lo único que hemos hecho ha sido subrayar la cadena nula). por la segunda regla de la gramática. de longitud 20. y debe contener una subcadena nula. Ilustramos el proceso tomando como ejemplo la cadena yxxxxxyxyxyxxxyxyxyy. que identificamos mediante un subrayado: yxxxxxyxyxyxxxyxyxyy. el ejemplo anterior puede resumirse así: yxxxxxyxyxyxxxyxyxyy ← yxxxxSyxxxyxyxyy ← yxxxxSyxxxyxyxyy ← yxxxxSSxyxyy ← yxxxxSxyxyy ← yxxxxSxyxyy ← yxxxxSxyxyy ← yxxxSy ← S 10 . y por ello debe contener una subcadena nula: yxxxxyxxxyxyxyy. puede reescribirse como yxxxxSSxyxyy. en plural. en sucesivas iteraciones) es de nuevo una cadena del lenguaje. que puede ser sustituida por S. Buscando de nuevo la subcadena nula llegamos a yxxxxSxyxyy. De hecho. pero a la inversa. una secuencia generada por la gramática. Recuperando la S que habíamos eliminado. El proceso se puede repetir sucesivamente hasta llegar a una secuencia de cinco símbolos no terminales. El resultado es una derivación de la cadena a partir de la gramática. En el segundo caso hay una terminación anormal si la celda inicial es el extremo de la cinta. y Otra solución: } u #R∆R∆ uL# u →R∆ L x. 11 . S→M S→N S→P M → xMx M→λ N → yNy N→λ P → xUP P → PVy P→λ Ux → xU Uy → xy UV → VU yV → Vy xV → xy Observe que las reglas que contienen M generan el lenguaje {x2m. y Problema 2. m ≥ 0}. →R∆ L x. } u ∆R∆R∆ uL∆L∆u → R∆SLL∆ Problema 3.Problemas de repaso del capítulo 3 Problema 1. U o V generan {xm yn xm yn. n ≥ 0}. Problema 6. las que contienen N generan {y2n. m > 0}. y las que cotienen P. S → SPQR S→λ QP → PQ PQ → QP PR → RP 12 . [s∆∆yx∆] [∆t∆yx∆] [∆h∆yx∆] Problema 9. Podría describirse con la gramática independiente del contexto: S → xA A → xAx A→y Es el lenguaje {xnyxn-1| n ∈ N+} Problema 11. S → S1 S1 → xyMS1z yMx → xyM yMz → yyz yMy → yyM S1 → λ S → S2 S2 → xyNS2z yNx → xyN yNz → yz yNy → yyN S2 → λ Problema 8. S → xN N → Sx xNx → y Lo es.Problema 7. [i∆xyx∆] [i*xyx∆] [*pxyx∆] [*xpyx∆] [*xypx∆] [*xyxp∆] [*xyqx∆] [*xyq∆][*xqy∆] [*xq∆] [*qx∆] [*q∆] [q*∆] [h∆] Problema 10. . Problema 15. Intuitivamente se ve que no es un lenguaje independiente del contexto. y. en las cadenas de Σ*–L. porque un autómata de pila no puede llevar el recuento de 3 variables independientes. z} con el mismo número de x’s. Podemos ordenar las cadenas de L’ (en orden alfabético) y 13 .. Para que una cadena sea aceptada por M cada uno de los Mi debe alcanzar el estado de parada con dicha cadena. Sea L’ el complementario de L... puede modificarse M para construir una M’ que en esos casos provoque un desplazamiento repetido hacia la izquierda. b. No. En este caso. todo lenguaje sería estructurado por frases (por el mismo motivo que expusimos en la solución del problema 28 del capítulo 2). a.. la demostración rigurosa puede hacerse por el lema de bombeo. y’s y z’s.→ Mn Donde las máquinas Mi son máquinas de dos cintas. Problema 16.. a. Lo demostramos por reducción al absurdo. porque para las cadenas que no pertenecen al lenguaje L puede ocurrir que la máquina original M no se detenga nunca. por las razones que se expusieron en el problema 28 del capítulo 2. L. Problema 16.. Sólo si L es decidible.. el autómata que acepta la intersección de lenguajes puede diseñarse del siguiente modo: M| → M1 → M2 .. b. Sea un lenguaje no estructurado por frases. Si el lenguaje no es decidible. En ese caso existe una máquina de Turing M que se detiene con la configuración ∆Y∆∆ para las cadenas de L y con la configuración ∆N∆∆. en cualquier orden. Problema 15. y por tanto no puede entrar en funcionamiento la parte de M’ que llevaría a una terminación anormal. Al poderse detectar las cadenas en Σ*–L..RP → PR QR → RQ RQ → QR P→x Q→y R→z Se trata de cadenas del alfabeto Σ = {x.. en general no es posible construir tal máquina M’. porque si fuera así. de modo que inicialmente duplican la cadena de entrada desde la primera a la segunda cinta y a continuación trabajan sobre la réplica. Cuando se detienen borran la segunda cinta y vuelven las cabezas a su posición inicial. Sí. hasta provocar una terminación anormal. si hay una Y en la segunda cinta. La intersección de todos los Li es el conjunto L. y por tanto el Li correspondiente excluye w. considerar reglas de tipo: S → S1. se detiene. S1 → S2. …. lo cual permite decidir cuál de las dos debe ir antes que la otra en el orden. entonces L sería estructurado por frases. y por eso se detiene.3 La máquina M funciona así: — si hay menos de dos cadenas para ordenar. A partir de ella podemos generar otras gramáticas introduciendo tantos símbolos innecesarios y reglas redundantes como deseemos.2 Por tanto. Problema 21. Construimos una máquina M de varias cintas basándonos en una máquina auxiliar M1. si la intersección de una colección de lenguajes estructurados por frases fuera siempre un lenguaje estructurado por frases. M1 funciona así: — si en la cinta de entrada sólo hay una cadena a la derecha de la cabeza lectora. Luego va desplazando simultáneamente las cabezas de estas dos cintas hasta encontrar el primer símbolo en que difieren estas cadenas. y por tanto no hay ningún Li que excluya w. si se ha cambiado el orden de estas dos cadenas. Sn → S. Sea Li el lenguaje que contiene todas de Σ* excepto la i-ésima cadena de L’. las escribe otra vez en la cinta ordenadas y se detiene en el espacio de separación entre ambas. — si hay dos o más cadenas a la derecha. lee las dos primeras. entonces pertenece a L’. que sólo tiene una cadena. mientras que el conjunto de lenguajes generales no lo es. no pertenece a L’. lo cual está en contradicción con nuestro punto de partida. Como el conjunto de lenguajes generales es la unión del conjunto de los lenguajes estructurados por frases y el La demostración es ésta: si una cadena w pertenece a L. si no. por ejemplo. El conjunto de lenguajes aceptados por máquinas de Turing (estructurados por frases) es contable. cada Li es regular (porque su complementario. es regular) y estructurado por frases. 3 La máquina M1 puede funcionar así: copia la primera cadena de la derecha en la tercera cinta y la segunda cadena en la cuarta cinta. 2 14 . Por el contrario. vuelve al inicio de la primera cinta repite el proceso. borra esta Y. Por definición. S → xSy xSy → λ Problema 19. Baste. Problema 18. ha de existir al menos una gramática estructurada por frases para L. escribe Y en la segunda cinta. si una cadena w no pertenece a L. de donde se deduce que w no pertenece a la intersección. se sitúa en el inicio de la cinta y simula M1 hasta situarse entre las dos últimas cadenas. no modifica esta cinta.numerarlas. Entonces si en la segunda cinta no hay nada escrito. — si hay al menos dos cadenas. también pertenece a la intersección de todos ellos. se detiene. Problema 20. eso significa que las cadenas estaban ordenadas y no se ha hecho ninguna modificación. y si w pertenece a todos los Li. la máquina acepta la cadena. por tanto. puesto que los tres primeros conjuntos son contables. R) G’ = (T’. y waux a la cadena que está en la segunda cinta en cada momento. pueden darse tres casos: 15 . De otro modo. Si el lenguaje es aceptable según Turing entonces existe una gramática estructurada por frases que lo genera. que no se modifica. que son infinitos. Σ* es un lenguaje estructurado por frases. Esta gramática se construye del siguiente modo a partir de la gramática G de L: G = (T. que inicialmente será xx (con un espacio a su izquierda). y por tanto es un conjunto incontable. La colección de lenguajes decidibles es contable por ser un subconjunto de los lenguajes estructurados por frases (que son contables). de mayor cardinalidad que el anterior. S. En otro caso. y sin embargo existe un número incontable de lenguajes del alfabeto Σ que no lo son. Si w es la cadena vacía. V. el conjunto de los lenguajes no estructurados por frases debe ser por fuerza incontable y. No. S’. Problema 25. Es infinita porque contiene a los lenguajes independientes del contexto. V’. Si |w| ≤ |waux|. Problema 23. esto nos garantiza que acepta x y xx. Utilizaremos de nuevo un argumento de cardinalidad. su unión también sería un conjunto contable. deducimos que el cuarto conjunto debe ser no vacío e incontable. Es aceptado por la siguiente máquina de Turing de dos cintas: llamaremos w a la cadena analizada (primera cinta). Consideremos los siguientes conjuntos: {L | L y Σ*–L son aceptados por máquinas de Turing} {L | L es aceptado y Σ*–L no lo es} {L | L no es aceptado y Σ*–L sí lo es} {L | L no es aceptado y Σ*–L tampoco} Puesto que la unión de estos cuatro conjuntos es conjunto de los lenguajes generales. Problema 26. Problema 22. R’) T’= T V‘= V R’ = R ∪ {S → SS} Problema 27. la máquina entra en un bucle (rechaza la cadena).conjunto de los lenguajes no estructurados por frases. desplaza la cabeza de la primera cinta tantas celdas como símbolos tiene waux. L* será aceptable si también existe una gramática estructurada por frases que genere L*. Por ejemplo. 176-177) se muestra cómo diseñar una máquina que acepte un lenguaje a partir de las reglas de reescritura de la gramática que lo genera. Basta con añadir. significa que |w| no es múltiplo de |waux|. — si está sobre un espacio en blanco. y repetir el proceso. y por eso la máquina debe entrar en un bucle. vuelve a desplazarse |waux| celdas hacia la derecha. hasta que se cumpla una de las condiciones siguientes. Los lenguajes recursivamente enumerables son aquéllos que pueden aceptar una máquina de Turing. es decir. — si la cabeza de la primera cinta está sobre una x que tiene a su derecha un espacio en blanco. La máquina que buscamos puede prescindir de la cinta 1 y mostrar como resultado las cadenas que genera en la cinta 2. 16 . Entonces debe añadir una x más a waux. los lenguajes estructurados por frases. la máquina se detiene cuando |w| = |waux|. Esta máquina aplica las reglas de reescritura para generar las cadenas y compararlas con la cadena analizada.— si la cabeza de la primera está sobre una x que tiene a su derecha otra x. llevar la cabeza de la primera cinta al inicio. Si |w| es número primo. En la demostración del teorema 3. Problema 34. y así sucesivamente. deberíamos escribir X’ u otro terminal diferente que no pertenezca a la gramática original. para no aceptar la cadena. para cada terminal x.4 (págs. si lo fuera.) Así. eso indica que la longitud de la cadena de la primera cinta es múltiplo de |waux|. (Naturalmente. por ejemplo: S → xyNSz S→λ yNx → xyN yNz → yz yNy → yyN se convierte en S → XYNSZ S→λ YNX → XYN YNZ → YZ YNY → YYN X→x Y→y Z→z Problema 35. suponemos que X no era un símbolo de la gramática original. una regla del tipo X → x y sustituir en el resto de las reglas todos los símbolos terminales por el no terminal correspondiente.