Professional Documents
Culture Documents
1.- Diseñe un diagrama de transiciones para reconocer expresiones aritméticas de longitud arbitraria que comprenden enteros
positivos separados por signos de suma, resta, multiplicación o división.
Solución:
dígito
dígito
operador dígito
dígito
1 2 3 4
operador
letra letra
operador letra letra
error operador
Comentarios:
1º No puede comenzar recibiendo un operador, por dos razones:
1ª Está especificado que los números son positivos.
2ª Si se empieza admitiendo un operador, es estaría admitiendo que la cadena empezara con * ó /.
2º En el diagrama dado se llega al estado de aceptación tras leer dos y sólo dos números enteros de longitud arbitraria.
Si el número de operaciones pudiera ser mayor que una, tendríamos un arco del estado 4 al 3 con etiqueta operador:
dígito
dígito
operador dígito
dígito
1 2 3 operador 4
dígito letra
letra
1 3 =
4
dígito
5 dígito
Solución:
Estado := 1;
Leer el siguiente símbolo de entrada
WHILE El último símbolo leído no sea el de Fin de Cadena DO
CASE Estado OF
1: CASE Símbolo actual OF
Letra : Estado := 2 ;
‘:’ : Estado := 3 ;
Dígito : Estado := 5 ;
ELSE Salir a rutina de error ;
END (* del CASE interno *)
3.- Construya una tabla de transiciones a partir del diagrama del ejercicio anterior y escriba un analizador léxico basado en la tabla.
Solución:
TABLA DE TRANSICIONES
Símbolo
letra dígito ‘:’ ‘=‘ FDC
Estado
1 2 5 3 Error Error
2 2 2 Error Error Aceptar
3 Error Error Error 4 Error
4 Error Error Error Error Aceptar
5 Error 5 Error Error Aceptar
ANALIZADOR LÉXICO
Estado := 1 ;
REPEAT
Leer el siguiente símbolo de entrada ;
CASE Símbolo OF
0..9 : Entrada := dígito ;
a..z, A..Z : Entrada := letra ;
‘:’ : Entrada := ‘:’ ;
‘=’ : Entrada := ‘=’ ;
Marca de fin de cadena : Entrada := FDC ;
ELSE Salir a rutina de error ;
END (* del CASE *)
4.- Muestre que se puede modificar un diagrama de transiciones que contiene un arco rotulado por una cadena de símbolos de
longitud dos o más (lo cual significa que para recorrer el arco se requiere la cadena completa y no un sólo símbolo) para que
contenga sólo arcos rotulados con símbolos simples, pero de manera que siga aceptando las mismas cadenas que antes.
Solución:
Inicialmente:
x1 x2 ... xn-1 xn
I F
x1 x2 xn-1 xn
I S2 S3 ... Sn F
1.- Describa las cadenas que acepta el autómata finito determinista representado en el siguiente diagrama de transiciones:
letra letra
dígito dígito
Solución:
2.- Modifique el siguiente esqueleto de diagrama de transiciones de manera que esté completamente definido y acepte las mismas
cadenas que antes.
b a b a b
Solución:
b a b a b
a b a
error
a b
3.- Identifique otro autómata finito determinista de la vida diaria y dibuje su diagrama de transiciones.
Solución:
Un bolígrafo. Las entradas posibles al sistema son: x1=pulsar ó x2= no pulsar. La respuesta ante una misma entrada no siempre es la
misma. Depende también de la historia de las entradas anteriores. Dicha historia de entradas anteriores se resume diciendo que el
sistema está en un estado dado. Todo lo que puede pasar en la vida útil de un bolígrafo es que su punta esté dentro o esté fuera. La
respuesta depende de la entrada aplicada y de si está dentro o fuera. Además, en la definición de autómata finito debe haber un estado
inicial. Podemos elegir un bolígrafo que inicialmente tuviera la punta dentro.
entrada x1 =no pulsar x2 =pulsar
estado
s1=punta dentro y1 = no se mueve y2 = sale
s2 =punta fuera y1 = no se mueve y3 = entra
pulsar entra
1.- ¿Cómo puede modificarse el autómata finito determinista M=(S, 6, G, , F) para obtener una máquina que acepte el lenguaje 6*-
L(M)?. Obsérvese que, si esto es posible, entonces, el complemento de un lenguaje regular respecto a 6* también es regular.
Solución:
Convirtiendo los estados de aceptación en estados de no aceptación; y viceversa, las cadenas que antes eran aceptables ya no lo son;
y viceversa.
Sea M = (S,6, G, L, F), entonces el M’ tal que L(M’) = 6*-L(M) es M’= (S, 6, G, L, S-F)
Si el autómata debiera tener por lo menos un estado de aceptación (página 29 del libro de texto) deberíamos contemplar esta
excepción:
xn
xn xn
Solución:
Además, contra los indicado el la página 29 del texto base, admitiremos que un autómata puede no tener ningún estado de aceptación.
01 x
02 x
Recordemos que al ser determinista, en cada estado debe haber un arco y sólo un arco para cada símbolo de alfabeto. El
procedimiento para contar los autómatas es:
Nº de autómatas Nº de arcos posibles en cada estado Nº de estados posibles actuales
Como para un mismo símbolo (en cada estado) debe haber un único arco, el número de arcos posibles en cada estado es igual al
número de arcos diferentes en cada estado.
Nº de arcos diferentes N
A
Nº de símbolos de alfabeto Nº de estados siguientes posibles
por tanto:
Nº de autómatas >Nº de símbolos de alfabeto Nº de estados posibles siguientes @Nº de estados posibles actuales >2 2@2 16
Nº x del estado inicial y del estado inicial x del estado no inicial Y del estado no inicial
1 Al estado inicial Al estado inicial Al estado no inicial Al estado no inicial
2 Al estado no inicial Al estado inicial Al estado no inicial Al estado no inicial
3 Al estado inicial Al estado no inicial Al estado no inicial Al estado no inicial
4 Al estado no inicial Al estado no inicial Al estado no inicial Al estado no inicial
x
05 x x 06 07 x x 08 x
x x
1 2 1 2 1 y 2 1 y 2
y y y y y y
x
09 x x 10 11 x x x
x 12 x
1 2 1 2 1 y 2 1 y 2
y
y
y y y y
13 x x 14 x 15 x x x
x 16 x
1 2 1 2 1 y 2 1 2
y y y
y y y y
2.b.ii)
Hay otras 16 combinaciones, con la única variación respecto a las de 2.b.i) de considerar como estado de aceptación sólo el 1.
17 x x 18 x x 19 x x 20 x x
1 2 1 2 1 y 2 1 y 2
y y y y y y
21 22 x 23 24
x x x x x
x x
1 2 1 2 1 y 2 1 y 2
y y y y y y
25 26 x 27 28
x x x x x
x x
1 2 1 2 1 y 2 1 y 2
y
y
y y y y
29 x x 30 x 31 x x x
x 32 x
1 2 1 2 1 y 2 1 2
y y y
y y y y
2.b.iii)
33 x x 34 x x 35 x x 36 x x
1 2 1 2 1 y 2 1 y 2
y y y y y y
37 38 x 39 40
x x x x x
x x
1 2 1 2 1 y 2 1 y 2
y y y y y y
41 42 x 43 44
x x x x x
x x
1 y 2 1 2 1 y 2 1 y 2
y
y y y y
45 x x 46 x 47 x x x
x 48 x
1 y 2 1 y 2 1 y 2 1 y 2
2.b.iv) y y y y
Hay otras 16 combinaciones, con la única variación respecto a las de 2.b.i) de no considerar como estados de aceptación ni el 1 ni el 2.
Estas 16 no existirían si en el autómata por lo menos uno fuera de aceptación.
Comentarios:
Posible duda: ¿No serían autómatas distintos, si el estado inicial fuera el 2, es decir 96 en total (puesto que no se habla de
autómatas como reconocedores de lenguajes, de forma que son distintos aunque reconozcan el mismo lenguaje)? Si
incluimos la variación en la que estado inicial es el 2, el autómata obtenido no es nuevo. Por ejemplo, partiendo del autómata
Nº 02:
En el que:
El cual es el mismo (aunque los estados tengan nombres diferentes) que otro del segundo grupo de 16; en concreto el 21:
21 x x
1 2
y y
Tengamos en cuenta que cambiar de nombre los estados no hace que los autómatas sean diferentes. De no ser así,
podríamos llamarlos x x
a p
y y
También podemos tener en cuenta un estado de error. ¿Acaso el estado de captación global no es un estado posible?. Pues claro que
sí. No se puede tener en cuenta en los diagramas de dos estados, pues entonces serían de tres estados. Pero sí se puede tener en
cuenta en el diagrama de un estado para formar diagramas de dos estados.
x x x x x x
1º Los arcos que salen del estado de captación sólo pueden tener como destino el estado de captación.
2º Los arcos que salen del estado inicial no pueden tener la combinación en la que ambos arcos vuelven al estado inicial
pues este diagrama
x x
1 error
y y
es equivalente a este (el cual no es de dos estados):
x
3.- Muestre que si un autómata finito determinista es capaz de aceptar un número de cadenas infinito, entonces debe aceptar una
cadena que consista en la concatenación de tres segmentos tales que cualquier repetición del segmento central (que es no vacío) dé
como resultado otra cadena aceptable. Esto se conoce como lema de bombeo (“pumping lemma”), pues indica que pueden generarse
otras cadenas aceptables bombeando o ampliando una cadena aceptable.
Solución:
Estos dos hechos implican el que existan cadenas de longitud l>n. Es decir, existen cadenas en las que algún estado es recorrido más
de una vez. Estas cadenas pueden ser de esta forma:
Segmento central
o de esta otra forma:
Segmento central
Y si nos fijamos bien, vemos que al llegar al extremo final del segmento central, nada impide que ocurra la entrada que provoca la
vuelta al extremo inicial de dicho segmento. Por tanto, es posible que se repita cualquier número de veces; y posteriormente recorrer
desde Sj hasta Sn, con lo que son admisibles cadenas con un número cualquiera de repeticiones del segmento central.
Sergio Gálvez Rojas aporta un enunciado más formal y general; y una conclusión:
Es más, el lema nos dice que esta es la única forma de obtener cadenas arbitrariamente largas (de longitud superior a un p dado. Si
n n
hay alguna otra forma, entonces el lenguaje no es regular, como ocurre con el mencionado L={0 1 , nt0} en el que no hay ningún trozo
intermedio que, repitiéndose varias veces, siga perteneciendo al lenguaje.
4.- Muestre que no existe un autómata finito determinista M tal que L(M)={xnynzn: n N}.
Ejercicios de Teoría de Autómatas I 9 José Garzía
Solución:
5.- Muestre que puede utilizarse un autómata finito determinista para reconocer una cadena de paréntesis anidados y equilibrados si
se asegura que la profundidad de anidamiento no excederá de un nivel preestablecido.
Este autómata lee cadenas de paréntesis anidados hasta un nivel n, y los acepta sólo cuando están todos equilibrados.
Solución:
Este autómata permite cadenas del tipo ( ( ) ( ) ). Se vuelven a abrir paréntesis después de aparecer el primero que cierra.
) ) ) ) ) )
( S1 ( S2 ( S3 ( ... ( Sn-1 ( Sn
S0
) (
error
Francesc Xavier Torres opina que las cadenas deben ser del tipo ( ( ( ) ) ). Una vez aparece el primero que cierra, no se pueden abrir
más. Propone este autómata:
( S1 ( S2 ( S3 ( ... ( Sn-1 ( Sn
S0
) ) ) ) )
( ( ( (
error
) (
1.- Identifique los puntos donde existe no determinismo en el siguiente diagrama de transiciones:
letra
2
letra
letra
dígito
1 dígito
letra
dígito 3
dígito
Solución:
letra
2
letra
letra
dígito
1 dígito
letra
dígito 3
dígito
2.- Utilizando métodos intuitivos y sui generis, modifique el diagrama de transiciones de la siguiente figura (fig. 1.17) para que
acepte las mismas cadenas que antes, pero ahora sin ramificaciones no deterministas.
dígito
dígito
5
Solución:
dígito
3.- Muestre que cada autómata finito determinista (S, 6, G, , F), es un autómata finito no determinista, demostrando que la función
de transición G puede representarse como un subconjunto de Sx6xS.
Solución:
A cada elemento de Sx6 le corresponde uno sólo de S. Por eso, G es un subconjunto de Sx6xS formado por todos los pares posibles
de Sx6, junto con un sólo elemento de S.
Al ser G un subconjunto de Sx6xS, cumple las condiciones de la definición de autómata finito determinista.
b a
3
Solución:
1, 2
1 b a 2
a b
a b
b
1, 3 2, 3
a
a a b b
1, 2, 3
a b
a vacío b
1.- Elabore una lista con con todas las frases generadas por esta gramática:
Solución:
2.- Muestre que es posible modificar la gramática que se presenta a continuación (con el símbolo inicial S) para formar una
gramática regular, sin cambiar el lenguaje que genera. ¿Cuál de los ejercicios de alguna sección anterior es en esencia el mismo
problema, aunque en un contexto diferente?.
S oy X
X ox x X
X oy Y
Y oO
Solución:
n
Frases que genera: y (x x) y ; n t 0
Para que sea regular, debemos cambiar la regla X o x x X, manteniendo el mismo lenguaje generado. Para ello, sustituimos la
antedicha regla por estas otras dos:
Xox Z
ZoxX
SoyX
Xox Z
ZoxX
XoyY
YoO
Este problema es, en esencia, el mismo que el 4º de la sección 1.1. En ambos se descompone una cadena de longitud mayor que la
unidad, en varias de longitud unidad.
Solución:
m n
Lenguaje generado: { y, z, xy, xz, xxy, xxz, xxxy, xxxz, ..., x...xy, x...xz }, en forma compacta: {x y, x z: m,n t 0, m, n N }
Gramática modificada:
SoxS
SoyY
YoO
SozZ
ZoO
4.- Dibuje un diagrama de transiciones para un autómata finito que acepte el lenguaje generado por la gramática regular (con
símbolo inicial S) que se presenta a continuación. Describa el lenguaje generado.
S o O
Sox X
SoyY
YoyY
Y o O
Xox X
X o O
Solución:
m
Lenguaje generado: { O, x , x : m, n
n
N }
Diagrama de transiciones:
X x
x
S
y
Y y
5.- Presente una gramática regular que genere el lenguaje aceptado por el autómata finito cuyo diagrama de transiciones se muestra
a continuación:
b
a a
M
a
S P
b
N
b
b
a
Solución:
SoaM
SobN
MoaP
MobM
MoO
NoaN
NobP Nota: Las reglas 3, 7, 9 y 10 pueden ser suprimidas. Son improductivas. Si se cae en el estado P,
NoO luego no se puede llegar a ningún estado de aceptación. Aunque la gramática resultante de suprimir
estas reglas sea diferente, tiene el mismo lenguaje. Démonos cuenta que se pide “una gramática”, no
“la gramática”.
PoaP
PobP
1.- ¿Cuáles de los lenguajes descritos en las siguientes expresiones regulares para el alfabeto { x, y, z } son infinitos?. Describa, en
una sóla frase, el contenido de cada uno de estos lenguajes infinitos; y elabore una lista exhaustiva de las cadenas de los lenguajes
finitos.
a) (x q (y q z*) ) b) (x* q (y q z)) c) ((z y) q x) d) (x y)*
e) (y q y)* f) (x* y*) g) ((x q x) z) h) ((z y) x)
Solución:
a) Por tener la operación estrella de Kleene, es infinito. Las frases son de la forma: xy, xyz, xyzz, xyzzz,..., xyz...z.
b) Infinito. Las frases son de la forma: yz, xyz, xxyz, xxxyz,..., x...xyz.
f) Infinito. El conjunto de frases es de la forma x, xx, xxx,..., x...x, y, yy, yyy, ..., y...y, es decir: { x , y ; m,n N} = {x*, y*}
m n
2.- Dibuje un diagrama de transiciones que acepte la estrella de Kleene del lenguaje aceptado por el siguiente diagrama de
transiciones: a c
1 2 3
b
Solución:
er
1 paso: Dibujamos un nuevo estado inicial (de aceptación) y lo conectamos al diagrama original. Todos los estados que en el original
eran destino del anterior inicial, deben ser destino de este nuevo inicial, con las mismas etiquetas:
a
a c
S 1 2 3
b
2º paso: Desde cada estado de aceptación del original, se añade un arco a cada estado que era destino del inicial original.
a
a c
S 1 2 3
b a
3.- Dibuje un diagrama de transiciones que acepte la unión de los lenguajes aceptados por los siguientes diagramas:
a) a b) x
1 2 3 4
b y
Solución:
Lenguajes generados:
a) Frases de la forma a, aba, ababa, abababa, etc.
b) Frases de la forma x, xyx, xyxyx, xyxyxyx, etc.
a
1 2
b
a
S
x x
3 4
y
Ejercicios de Teoría de Autómatas I 15 José Garzía
4.- Dibuje un diagrama de transiciones que acepte la concatenación del lenguaje aceptado por
a
1 2 b
b
Solución:
Lenguajes generados:
a) Frases de la forma a, abb, abbb, ..., ab...b, b, bb, bbb, b...b etc.
b) Frases de la forma x y , m, n N, mt0, n>0
m n
a b x y
1 2 x 3 4 y
b
y
5.- Construya una expresión regular que describa el lenguaje aceptado por el autómata del siguiente diagrama de transiciones:
b
a a a
2
1 5
4
b
3
b
b
a
Solución:
> @ >
(a b*) >(a b*) $ a @ (b a*) > (b a*) $ b@ @
Solución:
x, O ; x y, O ; O x, x ; O
O, O ; # O, O ; O O, O ; O O, # ; O
i 1 2 3 4
Es el autómata pedido. Es no determinista. Según el teorema 2.1, siempre se puede adaptar de forma que vacíe su pila antes de
aceptar la cadena. De hecho, ya lo hace.
Su funcionamiento es el pedido.
Cuando m=0 y n=0, se acaba en el estado 1.
Cuando m=0 y nz0, se acaba en el estado 2.
Cuando mz0 y n=0, se acaba en el estado 1.
Cuando mz0 y nz0, se acaba en el estado 4.
Es determinista, pero si acaba en los estados 1 ó 2 no vacía su pila al aceptar la cadena. El teorema 2.1 es aplicable, pues los
deterministas están incluidos en los no deterministas. Pero el resultado (debido al paso 2 de la demostración del teorema, página 81)
es un autómata de pila no determinista.
Se trata de un ejemplo similar al de la figura 2.22: un autómata de pila determinista que no puede modificarse para que (sin alterar el
lenguaje aceptado) vacíe su pila al aceptar la cadena. El razonamiento para demostrarlo es idéntico al presentado allí.
Estos dos ejemplos muestran que el conjunto de lenguajes deterministas se subdividen en dos: los que deben vaciar su pila al terminar
y los que pueden no vaciarla.
LENGUAJES ACEPTADOS POR AUTÓMATAS DE PILA DETERMINISTAS QUE DEBEN VACIAR SU PILA ANTES
DE ACEPTAR UNA CADENA
{ x y : n N } No es regular, pues podría ser n mayor que el número de estados del autómata (teorema 1.2)
n n +
Por supuesto (debido a que un conjunto está incluido en el otro), puede haber algunos (pero sólo algunos) autómatas de pila
deterministas que puedan modificarse para que vacíen su pila al aceptar la cadena.
Su funcionamiento es el pedido.
Como mz0 y nz0, sólo se acaba en el estado 4; y en este estado la pila está vacía.
y, x ; O
Solución:
Conclusión:
Acepta cualquier cadena que (empezando a contar por la izquierda) contenga un número de ‘y’ menor o igual a que de ‘x’. Pueden
estar intercaladas
Ejemplos: xyx, xxy, xxyxyx, etc.
3.- Modifique el diagrama de transiciones del ejercicio 2 para que el autómata de pila acepte el mismo conjunto de cadenas, pero
con su pila vacía.
Solución:
x, O ; x O, x ; O
O, O ; # O, O ; O O, # ; O
i 1 p q
y, x ; O
4.- Muestre cómo pueden combinarse dos autómatas de pila M1 y M2 para formar un sólo autómata de pila que acepte el lenguaje
L(M1) U L(M2).
Solución:
- Hasta cada estado que era destino del original inicial, se lleva un arco desde el nuevo inicial, con la misma rotulación.
1.- Muestre que toda cadena derivada por la izquierda de una gramática independiente del contexto puede derivarse también por la
derecha.
Solución:
S
z M N z
a M a b M b
z z
El lado por donde se empieza a construir (por la derecha o por la izquierda) sólo tiene relevancia en las etapas intermedias de la
construcción del árbol. Pero con la construcción terminada, no es relevante el lado por donde se empezó. La cadena es la misma en
ambos casos.
2.- Demuestre que la gramática presentada a continuación es ambigua, mostrando que la cadena “ictictses” tiene derivaciones que
producen distintos árboles de análisis sintáctico.
S o icts
S o ictSeS
Sos
Solución:
Podemos mostrar simultáneamente una analogía con un esquema de control de flujo típico de lenguajes de programación. Para ello
haremos las siguientes identificaciones:
i { if
c { (condicion)
t { {
e { else
s { enunciado
1º.- Cuando el else está asociado al if sin else más inmediatamente anterior (al if interno):
S if (condicion)
{
ictS if (condicion)
{
enunciado
ictSeS }
else
s s {
enunciado
}
}
Solución:
GA GB
SA o wA1 SB o wB1
... ...
SA o wAp SB o wBr
N1 o wA1 M1 o wB1
... ...
Nq o wAq Ms o wBs
G
S o wA1
...
S o wAp
S o wB1
...
SB o wBr
N1 o wA1
...
Nq o wAq
M1 o wB1
...
Ms o wBs
5.- Convierta la siguiente gramática, con el signo inicial S, en una gramática con forma normal de Chomsky que genere el mismo
lenguaje.
SoxSy
SowNz
No S
No O
Solución:
a) Preparación previa: Eliminación de la regla O tal como se explica en los párrafos anteriores al teorema 2.4
SoxSy
SowNz
Sow z
No S
b) Cambio de los terminales no aislados, según se explica en el primer paso del teorema 2.4.
S oXSY
S oWNZ
S oW Z
N o S
X o x
Y o y
Wo w
Z o z
Esto produce una gramática G’ independiente del contexto en la cual el lado derecho de cada regla de escritura es un solo terminal o
una cadena de no terminales
c) Separación de dos no terminales, según se explica en el segundo paso del teorema 2.4.
S oXR
R o SY
S oWT
T oNZ
S oW Z
N o S
X o x
Y o y
W o w
o zde Autómatas I
Ejercicios deZTeoría 20
INGENIERÍA TÉCNICA en INFORMÁTICA de SISTEMAS y de GESTIÓN de la UNED
ASIGNATURA: TEORÍA DE AUTÓMATAS I
Tutoría del Centro Asociado de Plasencia
Al llegar a esta etapa tenemos una gramática G’ independiente del contexto, para la cual el lado derecho de cada regla de reescritura
es un solo terminal, dos no terminales o un solo terminal.
d) Sustitución de las reglas con un único no terminal en el lado derecho, según se explica en el tercer paso del teorema 2.4.
Resulta:
Las secuencias S oXR
Nn o Nn-1 R o SY
...
S oWT
N1 o Fin1
T oNZ
N1 o Fin2
S oW Z
...
N oXR
N1 o Finm
N oWT
Se sustituyen por N oW Z
Nn o Fin1 X o x
Nn o Fin2 Y o y
... Wo w
Nn o Finm Z o z
Francesc Xavier Torres consigue una gramática con menos reglas, al emplear una estrategia alternativa:
Las reglas
Nn o Nn-1 Resulta:
Nn-1 o Nn-2 S oXR
... R o SY
N2 o N1 S oWT
T oSZ
Son aplicadas en todos los lugares donde aparezcan Nn, Nn-1, ..., ó N2 S oW Z
X o x
Y o y
Wo w
Z o z
En nuestro caso tenemos (NoS). La aparición de la N en (ToN Z) del paso c) es sustituida, obteniendo (ToS Z).
1.- Aplique el teorema 2.5 para demostrar que el lenguaje { xm yn xm yn xm yn : m, n N+} no es independiente del contexto.
Solución:
Solución:
3.- Trace la porción pertinente de un diagrama de transiciones para un autómata determinista que pasará del estado p al q leyendo
una x, extrayendo una y e insertando una z, si la cima de la pila contiene una y; o pasará al estado q leyendo una x, sin extraer nada e
insertando una z, si la pila no tiene una y en su cima.
Solución:
Este diagrama :
x, y ; z
p q
x, O ; z
No es determinista. Deberemos diseñarlo de otra forma. La transición (p, x, O; q, z) hay que sustituirla por todas las que sean
necesarias para eliminar la indeterminación. Sustituimos l una vez por cada uno de los símbolos de la pila, pero de forma que
globalmente no tengan ningún efecto:
x, y ; z
x, x ; x
p
q
x, z ; z
r O, O ; z
x, # ; #
4.- Identifique las situaciones que provocarían incertidumbres en la ejecución de una autómata de pila que contuviera las
transiciones (p, O, y; q, z) y (p, x, O; r, w).
Solución:
O, y ; z q
x, O ; w
r
a) (p, O, y; q, z) Aplicable sea cual sea la entrada, cuando en la cima de la pila hay una y.
b) (p, x, O; r, w) Aplicable cuando la entrada es x, sea cual sea la cima de la pila.
En conclusión: Existe un único caso en el que son aplicables ambas transiciones; cuando la entrada es x y la cima de la pila es y. En el
resto de casos, siempre habrá alguna transición de las dos que no se pueda aplicar.
1.- Reescriba el segmento de la figura 2.30 utilizando una estructura REPEAT_UNTIL en lugar de una estructura WHILE.
Insertar(S) ;
Leer(Símbolo) ;
WHILE Pila no vacía DO
CASE CimaPila OF
Terminal:
IF CimaPila = Símbolo
THEN
Extraer de la pila ;
Leer(Símbolo) ;
ELSE
Salir a rutina de error ;
END ;
No Terminal:
IF Tabla[CimaPila, Símbolo] z Error
THEN
Reemplazar CimaPila por Tabla[CimaPila, Símbolo] ;
ELSE
Salir a rutina de error ;
END ;
END ;
END ;
IF Símbolo z FDC THEN Salir a rutina de error; END ;
Solución:
Insertar(S) ;
Leer(Símbolo) ;
REPEAT
CASE CimaPila OF
Terminal:
IF CimaPila = Símbolo
THEN
Extraer de la pila ;
Leer(Símbolo) ;
ELSE
Salir a rutina de error ;
END ;
No Terminal:
IF Tabla[ CimaPila, Símbolo] z Error
THEN
Reemplazar CimaPila por Tabla[CimaPila, Símbolo] ;
ELSE
Salir a rutina de error ;
END ;
END (* Del CASE *)
UNTIL Pila vacía ;
IF Símbolo z FDC THEN Salir a rutina de error; END
O, O ; # O, O ; S O, # ; O
i p q f
x, x ; O z, z ; O
y, y ; O
Solución:
a) Segmento de programa:
Estado := i ;
Insertar(#) ;
Estado := p ;
Insertar(S) ;
Estado := q ;
Leer(Símbolo) ;
REPEAT
CASE CimaPila OF
S:
CASE Símbolo OF
x:
Extraer(S) ;
Insertar(xSz) ;
y:
Extraer(S) ;
Insertar(ySz) ;
END ;
x:
IF Símbolo z x
THEN
Salir a rutina de error ;
ELSE
Extraer(x) ;
Leer(Símbolo) ;
END ;
y:
IF Símbolo z y
THEN
Salir a rutina de error ;
ELSE
Extraer(y) ;
Leer(Símbolo) ;
END ;
z:
IF Símbolo z z
THEN
Salir a rutina de error ;
ELSE
Extraer(z) ;
Leer(Símbolo) ;
END ;
END ; (* Del CASE *)
UNTIL Pila vacía
Extraer(#) ;
IF Símbolo z FDC THEN Salir a rutina de error; END
Estado := f ;
b) Incertidumbres:
S oO
S oxSz
S oySz
3.- Diseñe una tabla de análisis sintáctico LL(1) para la siguiente gramática:
S o xSz
S o ySz
S oO
Solución:
x y FDC
S xSz ySz O
4.- ¿ Cuántos símbolos de preanálisis requeriría un analizador sintáctico LL al analizar la sintaxis de cadenas basadas en la
gramática siguiente ?.
S o xSy
S o xy
Diseñe la tabla de análisis sintáctico correspondiente.
Solución:
n n
A pesar de que las cadenas admisibles son de la forma x y ; ( n t 1 ), es decir, que pueden tener cualquier longitud finita, bastan dos
símbolos de preanálisis:
Tabla de preanálisis:
xx xy FDC
S xSy xy error
1.- Diseñe el diagrama de transiciones del autómata de pila correspondiente al analizador sintáctico LR(k) de la siguiente gramática:
S o xSz
S o ySz
S oO
O, xSz ; S
Solución: O, O ; S
O, ySz ; S
O, O ; # O, S ; O O, # ; O
i p q f
x, O ; x z, O ; z
y, O ; y
Por la regla S o O existiría la tentación de permitir que el estado inicial fuera de aceptación. Hay dos razones para no proceder así:
1ª Se debe posibilitar la “reducción” yz en yOz; y posteriormente en ySz (recuérdese que es LR).
2ª El diseño del analizador sintáctico será más fácil si sólo debe comprobar la posible llegada a un único estado de aceptación
(f); en lugar de estar obligado a comprobar más estados de aceptación.
2.- Identifique la derivación obtenida por el autómata de pila construido en el anterior ejercicio al analizar la cadena yxyzzz
Solución:
3.- Construya una tabla de análisis sintáctico LR(1) para la siguiente gramática:
S o xSy
S oO
Solución:
x
S y
2 3 x y FDC S
x 4
1 desplazar 2 aceptar 5
2 desplazar 2 S oO 3
1
3 desplazar 4
S 4 S o xSy 3
5 5 aceptar
Ejemplo: cadena x x x y y y
Contenido de la pila Resto de la entrada
# (1) xxxyyy
# (1) x (2) xxyyy
# (1) x (2) x (2) xyyy
# (1) x (2) x (2) x (2) yyy
# (1) x (2) x (2) x (2) S (3) yyy
# (1) x (2) x (2) x (2) S (3) y (4) yy
# (1) x (2) x (2) S (3) yy
# (1) x (2) x (2) S (3) y (4) y
# (1) x (2) S (3) y
# (1) x (2) S (3) y (4) O
# (1) S (5) O
1.- ¿ Con qué configuración de cinta se detendrá la máquina de Turing mostrada a continuación si comienza con la cinta configurada
como xxx'''... ?
x/R 2
x/R
1 '/R
'/'
Solución: 3
2.- Diseñe una máquina de Turing con símbolos de cinta x, y y ' que busque en la cinta el patrón xyxy y se detenga si y sólo si
encuentra ese patrón.
x/x
Solución: x / R y/y
x/x
'/'
'/'
José María Olmedo Llera completó y comentó el diagrama:
Los arcos de la ruta central son los que siguen el patrón dado.
El arco x / R que sale y regresa al estado inicial es para permitir que el patrón buscado esté a partir de cualquier posición, no sólo empezando desde la primera.
Si estando en el estado 1 se lee algo diferente de y, se escribe ese algo (sin avanzar en la cinta) y se vuelve al estado inicial. Será en ese estado inicial donde se
avance la cinta.
Ídem en el estado 2 con respecto al símbolo x y el estado 3 con respecto al símbolo y.
3.- Diseñe una máquina de Turing que, al iniciar con la cabeza sobre la celda del extremo izquierdo de la cinta, tenga una
terminación anormal si y sólo si hay una x registrada en algún lugar de la cinta. Si aplicara su máquina a una cinta que no contiene
ninguna x, ¿detectaría la máquina esta situación?.
y/R y/L
Solución: Suponiendo que el alfabeto de la cinta es {x, y, '}:
i x/L
'/R '/L
Si no existe ninguna x, siempre se estaría avanzando hacia la derecha, pero en cada instante no se conoce lo que hay más a la
derecha, por lo que no se detecta la ausencia de x.
4.- Muestre que las capacidades computacionales de una máquina de Turing no aumentarían si se permitiera que tuvieran más de un
estado de parada, ya que esta máquina se podría simular con una máquina de Turing con un sólo estado de parada.
Solución:
Con varios estados de parada: Con un único estado de parada:
Un arco por cada símbolo
Resto de h1 Resto de h1 de pila, escribiendo el
la la mismo símbolo que se lee
máquina máquina
h2 h2
h
xxx xxx
hn hn
x/x y/y
'/' '/'
x
M1 M2
Solución:
M x/y
y/R
x/x y/y
1 2 3 4
'/' '/'
x/y
'/'
h
El funcionamiento de la máquina es:
La salida del bucle se produce al encontrar un espacio en blanco en cualquiera de estos tres estados: 3, 4, 1 ó 2. Obsérvese que va
pasando por esta secuencia de estados hasta llegar al h.
Este funcionamiento se puede representar de una forma más simple, sin seguir el procedimiento general:
M
y/R x/y
1 h 4
'/'
Aunque en realidad, yo no lo he hecho directamente; sino partiendo del resultado del procedimiento general, suprimiendo estados
innecesarios.
2.- Utilizando los bloques de construcción presentados en esta sección, construya una máquina de Turing que reemplace la cadena
de ceros y unos inmediatamente a la derecha de la cabeza por el complemento de la cadena y luego regrese la cabeza a su posición
original. Suponga que el extremo derecho de la cadena está marcado con un espacio en blanco.
Solución:
1 0
0, 1 Z '
' R L' Z
0
1
Nótese que se marca el bit de partida con ', para luego encontrarlo y colocar la cabeza lectora en dicho lugar de partida.
3.- ¿ En qué condiciones se presentaría una terminación anormal durante la ejecución de la máquina SR ?.
Solución:
x1 x2 x3 ...
Las dos primeras instrucciones son 'L, con lo que quedaría así:
B' x2 x3 ..
* R '
'
'
L
'
Solución:
El efecto es:
. Todos los caracteres desde el comienzo hasta el primer ‘'‘ los sustituye por ‘'‘.
1.- a) Diseñe una máquina de Turing que acepte el lenguaje 6*, donde 6 ={x, y}.
Solución:
x, y Z Z
R
Nótese que avanza al primer símbolo de la cadena, lo rescribe sea cual sea; y se detiene sin seguir leyendo, sea cual sea el resto.
Solución:
Nótese que siempre está avanzando hacia la derecha. Nunca llega a un estado de parada.
2.- Muestre que una máquina de Turing se puede modificar para que evite una terminación anormal, pero que a la vez acepte las
mismas cadenas que antes.
Solución:
Original Modificada
i i
n 1 n 1
. M0 2 . M1 2
. .
. 3 . 3
4 4
#
R
En lugar de terminar anormalmente, hace avanzar indefinidamente hacia la derecha la cadena lectora.
3.- Muestre que si en una máquina de Turing se permite que las transiciones individuales afecten a más de una cinta, entonces no
aumenta el potencial de la máquina. En otras palabras, muestre que cualquier transición que opera sobre más de una cinta se puede
simular con una secuencia de transiciones que operan cada una en una sola cinta.
Solución:
Los pasos B1, B2 y B3 del teorema 3.1 son para el supuesto de que haya que operar sólo sobre la cinta j. Si hubiera que operar sobre
las cintas i, j, k, ... ; se ejecutaría esta secuencia de pasos :
B1i B2i B3i B1j B2j B3j B1k B2k B3k ...
4.- Muestre que para cualquier cálculo de una máquina de Turing cuya cinta se extiende infinitamente hacia la izquierda y hacia la
derecha se puede simular con una máquina de Turing de dos cintas; y por lo tanto, con una máquina de Turing tradicional.
Solución:
l3 l2 l1 r1 r2 r3 ' r1 r2 r3
' l1 l2 l3
i Se puede simular con :
n 1
i
.
n 1
. M0 2
.
.
. M1 2
3
.
3
Hay que tener cuidado con varios detalles:
Sólo hay una cabeza lectora, compartida por las dos cintas, esto es, en cada instante sólo una cinta tiene el foco de la cabeza.
En el diseño de M1, las referencias a li, las L deben cambiarse por R y viceversa.
El paso de la cabeza desde r1 a l1 debe provocar el paso desde el extremo izquierdo de la primera al de la segunda cinta.
El paso de la cabeza desde l1 a r1 debe provocar el paso desde el extremo izquierdo de la segunda al de la primera cinta.
1.- Dibuje un diagrama de transiciones para todas las máquinas de Turing con símbolos de cinta x y ' que sólo tengan dos estados
(uno inicial y otro de parada). ¿ Cómo se relacionan su capacidad para llevar a cabo esta tarea y el hecho de que sea contable la
colección de todas las máquinas de Turing cuyo conjunto de símbolos de cinta es {x, '} ?.
Solución :
x/R x/L x/x x/'
Esta tarea se puede llevar a cabo de forma sistemática, obteniéndose un número finito de máquinas de dos estados. También para el
caso en que el número de estados sea cualquier n finito. Como el conjunto de las máquinas T de S={x, '} pueden clasificarse según el
número de estados, se concluye que dicho conjunto es contable.
Solución:
Situación inicial:
X1 X2 X3
i
n 1
.
. M0 2 vacía vacía
.
3 Pila L Pila R
X1
i X2
n 1 X3
.
vacía
. M0 2 ...
.
3 Pila L Pila R
Ya no es necesaria la cinta
. Un movimiento hacia la izquierda de la cabeza de lectura en la máquina de Turing es equivalente a una extracción de la Pila L e
inserción de lo extraído en la Pila R.
. Una operación de escritura en la cinta de la máquina de Turing es equivalente a una extracción en la Pila R, e inserción en la
misma pila del valor que se escribe.
Como vemos, todas las operaciones de la máquina de Turing para gestionar la cinta se pueden simular con un autómata de dos pilas.
3.- Desarrolle una gramática estructurada por frases que acepte el mismo lenguaje aceptado por la máquina de Turing cuyo
diagrama de transiciones se muestra a continuación. Con la gramática que obtenga, busque una derivación de la cadena x.
'/R x/R '/L x/Y Y/L
i p q r s h
Solución:
a)
iv) Para cada transición de la forma G(p, x) = (q, L) y cada símbolo y de la cinta, introducimos la regla q y x o y p x
(de G(q, ') = (r, L) ), como los símbolos de la cinta son x y ', tendremos:
r x ' o x q ' (4) hxY o xsY
r '' o ' q ' h 'Y o ' s Y (2)
r Y' o Y q ' hYY o YsY
b)
(1) ( 2) ( 3) ( 4) (5) ( 6) ( 7) ( 8)
s o [h ' Y ' ] o [' s Y ' ] o [' r x ' ] o [' x q ' ] o [' p x ' ] o [i ' x ' ] o x ' ] o x
A veces es conveniente comprobar en el diagrama de transiciones que la cadena x es admisible por la máquina de Turing:
[i ' x ' ]
[' p x ' ]
[' x q ' ]
[' r x ' ]
[' s Y ' ]
[h ' Y ' ]
4.- Muestre que el lenguaje { xn y2n z4n : n N } es aceptado por una máquina de Turing.
Solución:
L#
'
x y y z
# R SL SL SL SL z SL z SL z SL ' L
x x y y
y z
y, z R R #
', z ', z y ', x ', x z z z
R
1.- Diseñe una máquina de Turing que acepte exactamente aquellas cadenas de ceros y unos que sean representaciones válidas de
máquinas de Turing deterministas, de acuerdo con el sistema de codificación descrito en esta sección.
Solución:
Para comprobar que la máquina codificada es determinista, basta comprobar que no se repite ningún par (Np, Nx). Para ello es
conveniente tener ordenadas las transiciones, primero las que parten del estado 0, después las que parten del estado 000, luego las
que parten del estado 0000; y así sucesivamente.
Si se desea utilizar una única cinta, la implementación de la comprobación puede hacerse con cualquier algoritmo de recorrido y
comparación. Pero si tenemos la libertad de usar varias cintas (más que el número de símbolos de cinta):
i Nx1
n 1
. Nx2
. M0 2 Nx3
.
3 ...
Nxn
Las siguientes columnas son una para cada uno de los siguientes estados a p
el algoritmo sería más simple:
1º Llenar las n últimas cintas tal como se muestra en la figura
2º La máquina codificada es determinista si y sólo si en ninguna columna existen valores repetidos.
“ El cocinero de una comunidad aislada cocina para aquellas personas; y sólo para aquellas personas que no cocinan para sí
mismas “.
Solución:
Definiciones
L0 : { Cadenas w que no son aceptadas por su máquina M|w| asociada con la función más arriba definida }
M : Máquina de Turing que acepta L0.
Allí se demuestra la inexistencia de M. Por analogía, aplicado al teorema actual, también se demuestra la inexistencia de C.
3.- Diseñe una máquina de Turing que acepte las cadenas del lenguaje L={wn : w = xy } al detenerse con su cinta configurada como
' Y''' ... y rechace las cadenas que no se hallan en L al detenerse con la configuración ' N ''' ...
Explique por qué no puede construirse esta máquina en el caso de todos los lenguajes aceptados por máquinas de Turing.
Solución:
Reduce pares xy
En los lenguajes no decidibles con máquinas de Turing no es posible detectar alguna de estas posibilidades: cadena aceptable ó
cadena rechazable. El diagrama de la máquina de Turing carece de alguna de las salidas. Por este motivo, en dichos lenguajes es
imposible crear la máquina pedida.
4.- Exponga un argumento de que cualquier lenguaje que contenga un número finito de cadenas es decidible con máquinas de
Turing.
Solución:
Cuando nos dispongamos a construir una máquina M de Turing para analizar la pertenencia o no de ciertas cadenas a un lenguaje L
cuyo número de cadenas sea n finito, podremos construir M de forma que tenga n+1 cintas. Almacenamos cada una de las n cadenas
de L en una cinta. En la otra cinta almacenamos la cadena en estudio. Por comparación entre esta cadena y las demás, podremos
discernir si pertenece o no al lenguaje L.
5.- Amplíe la tabla de la figura 3.26 para contestar a la pregunta de si la cadena xxyyyxy es generable con la gramática dada.
Solución:
S M N P
1 x y x
y
2 La de MN La de MP La de PN
3 La de MPN Las de MPP Las de PPN
4 Las de MPPN Las de MPPP Las de PPPN
5 Las de MPPPN Las de MPPPP Las de PPPPN
6 Las de MPPPPN Las de MPPPPP Las de PPPPPN
7 Las de MPPPPPN Las de MPPPPPP Las de PPPPPPN
xxyyyxy
está entre ellas