Vous êtes sur la page 1sur 2

1.

- Escriba un ALL que acepte


L = {ww / w esta en {a,b}*} primera cadena y segunda cadena iguales
LenguajeDuplicado L
copy

Sol.- :
q
1
L q
f
Para la cadena vacia

q
1
a * q
2
Si la primera letra es a busca la primera a de la segunda cadena:
q
2
* R q
2

q
2
b R q
2

q
2
a R q
2
ignora esta a
q
2
a $ q
i
se decide por esta a

q
1
b * q
3
Si la primera letra es b busca la primera b de la segunda cadena:
q
3
* R q
2

q
3
a R q
2

q
3
b R q
2
ignora esta b
q
3
b $ q
i
se decide por esta b

q
i
$ L q
i
Va a la izquierda hasta encontrar * (salta las marcas $)
q
i
a L q
i
q
i
a L q
i
q
i
* R q
u
q
u
(q uno) representa volver a empezar


q
u
$ R q
v
si ya terminamos de marcar verificamos que todo este correcto
q
v
$ R q
v
verificamos si se hicieron todos los reemplazos,

q
v
L q
f
si no sobran letras. Si es asi, se acepta


q
u
a * q
a
o bien marcamos la siguiente primera letra de la primera cadena caso a

q
u
b * q
b
idem caso b


q
a
* R q
a
Caso a: Luego de marcar, busca la primera letra de la segunda cadena
q
a
a R q
a

q
a
b R q
a

q
a
$ R q
a$

q
a$
$ R q
a$
saltando las marcas $
q
a$
a $ q
i
primera letra que debe ser a

q
b
* R q
b
Caso b: Luego de marcar, busca la primera letra de la segunda cadena
q
b
a R q
b

q
b
b R q
b

q
b
$ R q
b$

q
b$
$ R q
b$
saltando las marcas $
q
b$
b $ q
i
primera letra que debe ser b

2.- Escriba una GSC que genere:
L = {wcw / w esta en {a,b}*}

Sol.- P:

S c
S aXP
S bYP
P AXP
P BYP
P C
XA AX
XB BX
XC CX
YA AY
YB BY
YC CY
aA aa
aB ab
bB bb
bA ba
CY Cb
CX Ca
C c



3.- Escriba una GSC en FNK que genere L = {
k
b
3
| k>0}

Sol.- Tomando como punto de partida la GSC siguiente P:
S-->DS S-->A DA-->bbA Db-->bbbD A-->b

La transformamos en FNK as P:
S-->DS
S-->A
DA-->X
b
W
2
DX
b
-->X
b
W
1


W
2
-->X
b
A
W
1
-->X
b
Z
Z-->X
b
D
A-->X
b

X
b
-->b

4.-
Sea A
1
: q
1
a R q
1

q
1
L q
f

Sea A
2
: p
1
a R p
2
p
2
a R p
1

p
2
L p
f


Construya un ALL A para la interseccion segn el procedimiento del texto.

Sol.- E
1
E
2
I
1
I
2
={a} n=1, a
1
=a E = {a,A,} {
1
c
1
} :
r
0
a
1
c
1
r
1
Cambia los smbolos de la cadena de entrada
r
1

1
c
1
R r
0
de izquierda a derecha uno a uno, creando las dos cintas.
r
0
L r
2
Cuando termina vuelve el puntero

r
2

1
c
1
L r
2
al principio de la entrada
r
2
A R q
1
para empezar como A
1


q
1

1
c
1
R q
1
Pues q
1
a R q
1
est en o
1
Estas dos cuadruplas simulan A
1

q
1
L q
f
Pues q
1
L q
f
est en o
1
en la cinta superior

q
f

1
c
1
R q
f
Si A
1
lleg al estado final
q
f
L r
3
avanzamos hasta el final de la cinta

r
3

1
c
1
a r
3
Reponemos la entrada original almacenada
en la cinta inferior
r
3


a L r
3

r
3
A R p
1
Y empezamos el trabajo de A
2


p
1
a R p
2
p
2
a R p
1

p
2
L p
f