Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tarea
Profesor de Ctedra:
Auxiliares:
Alejandro Hevia
Ivana Hachmann
Pablo Muoz Fuentes
Alumno:
Fecha:
13/11/2015
Teora de la computacin
CC3102
Teora de la computacin
CC3102
En el diagrama se puede observar los bloques que constituyen el autmata. Los bloques rojos
como explique saltan una cantidad no determinista de # lo que permite revisar todos las palabras. El
bloque azul guarda el string de la palabra entre el # seleccionado y el siguiente. El bloque verde permite
comprobar que la palabra sea el reverso. Por ltimo el estado siguiente se encargar de procesar la
entrada restante con tal de aceptar (recordar que se requiere vaciar entrada).
Ilustracin 1 Autmata que reconoce lenguaje 1 por bloques. Bloques rojos saltan una cantidad de # (0 a n) azul agrega palabra, verde
revisa reverso
Posteriormente me di cuenta del caso de borde i = j en tal caso podemos hacer un salto no determinista
entre guardar la palabra y revisarla.
Teora de la computacin
CC3102
1.2 Letra b
L2 = { w {a, b} | ||w||a = 2 ||w||b }, donde ||w||x es el nmero de veces que aparece el
smbolo x {a, b} en w.
En este caso me base en el autmata que s que cuenta el mismo nmero de as que de bs .
Este autmata es el siguiente.
Ilustracin 2 autmata que reconoce palabra con misma cantidad de a's que de b's
Teora de la computacin
CC3102
Aqu la clave para que este lenguaje sea reconocido por este autmata es el no determinismo y que el
conteo se represente con dos smbolos. De lo contrario dependiendo del orden de la palabra (van
primero las a o las b) fallara. Sin embargo el no determinismo adivina el camino correcto.
En el problema actual se pide que se reconozca palabras con 2 veces ms b's que a's para esto debo
modificar algo las reglas que maneja la letra a. Debo colocar que para cada a que observe o se colocan
dos caracteres X o si exista un carcter Y en pila colocar solamente una X (ya que con dos b's se
neutraliza a un a si llevo uno solo me falta otra b).
De esta forma podre otra vez utilizar el no determinismo para solucionar el problema ya que se elige el
camino valido (que sabemos que existe ya que podramos nosotros tomar las reglas correctas en cada
paso y tener el resultado).
Teora de la computacin
CC3102
||
1. 0,
2. | | 1
3. | |
En todas las demostraciones a continuacin se asumen la segunda y tercera para demostrar que
la primera no se puede satisfacer.
Para esta demostracin utilizare la palabra = claramente la palabra es
suficientemente grande 3 veces ms grande. S pertenece al lenguaje al poseer mismo nmero de a,b,c.
Para conseguir todas las particiones de la palabra se analizan los siguientes casos. Tambin se
asumen la condicin 2,3.
Caso contiene solo un tipo de carcter: Es decir estn en una de estas secciones en
la izquierda (caracteres a) al medio (caracteres b) o a la derecha (caracteres c). En tal
caso se tiene que va generar al menos un carcter ms en alguno de esas
secciones (al menos uno ya que | | > 1 ) como se genera en solo una seccin las
otras dos secciones no tendrn como igualar la cantidad de caracteres y la palabra
bombeada se sale del lenguaje.
Teora de la computacin
CC3102
Caso est en alguna de las fronteras entre secciones (entre a,b o entre b,c). Primero
que nada la condicin 3 nos da una limitacin es decir no podemos colocar la parte que
se bombea en ms de 2 secciones ya que la palabra no puede ser ms grande que p y
para colocarlo en 2 fronteras requiero palabras de al menos p + 2. Ahora si esta en alguna
interseccin tenemos dos casos uno la cantidad de bombeo esta equilibrada para ambas
fronteras (estoy en frontera a,b y bombeo misma cantidad de as que de bs) en este
caso al bombear rompo la igualdad respecto a la cantidad de cs (o sea cual sea el
carcter que no esta en este frontera). Por ultimo si no llegaran a estar equilibrado
simplemente al bombear rompo la simetra.
En cualquier caso la idea es que no puedo bombear sin que solo bombee a lo ms dos caracteres
distintos por lo que al bombear para 2 las palabras se salen del lenguaje y por lo tanto el lenguaje
no era libre de contexto.
2.2 Letra b
4 = { | 2}
Utilizando el lema de bombeo elijo la siguiente palabra = 2
Los casos son los siguientes:
est en la seccin de solo as. Si esta en esta seccin bombearlo con 2 genera que la
cantidad de as supere a las cantidad de bs por lo que no est en el lenguaje.
est en la seccin de solo bs. Si esta ac similarmente a la anterior bombearlo la cantidad
de as , bs no ser la misma.
est en la seccin de solo cs. Si esta ac con 2 tendremos al menos m + 1 cs lo que
significa en este caso 2p + 1 lo cual es mayor que 2p por lo que no est en el lenguaje.
esta en la frontera a,b. Ac hay dos casos.
o Se eligen la cantidad de a,b en el bombeo de forma asimtrica al bombear se
rompe la igualdad de a,n. 2
o Se eligen la cantidad de a,b en el bombeo de forma simtrica. En tal caso el
+2
problema es que se debe mantener la condicin entonces ( 2 ) tendr
que = 2 + 1 > = 2 tendr una cantidad al menos superior (esto se tiene ya
que se bombea al menos 2 por bombeo al ser | | > 1 y la cantidad es simtrica
7
Teora de la computacin
CC3102
+2
por lo que en la iteracin ( 2 ) estoy seguro que es mayor ). Como es mayor se sale del
lenguaje.
esta en la frontera b,c. Sea como lo bombee cambiare la cantidad de bs sin cambiar la
cantidad de as por lo que esta fuera del lenguaje.
Tambin hay que recordar que estos son todos los casos posibles ya que | | entonces la
parte bombeada no se puede colocar entre ms de dos fronteras.
La primera regla S XY quiere decir que hay una concatenacin entre la gramtica que describe
la variable inicial X y la gramtica que describe la variable inicial Y
X aXb | es un regla que permite crear siempre un numero simtrico de a,b en ese orden.
Formando el patrn 0
La regla Y es simtrica pero cambia el orden a 0
Es importante notar que n, l son independientes entre si.
Teora de la computacin
CC3102
Teora de la computacin
CC3102
S XY | X | Y |
X AX1 | AB
Y BY1 | BA
X1 XB
Y1 YA
Solo queda eliminar la variables unarias en S. Donde se deben remplazar por las reglas validas en tanto
X como en Y. El resultado es el siguiente.
S XY | AX1 | AB | BY1 | BA |
X AX1 | AB
Y BY1 | BA
X1 XB
Y1 YA
Con lo cual tenemos una gramtica equivalente a la inicial con forma normal de Chomsky.
10
Teora de la computacin
CC3102
Teora de la computacin
CC3102
En esta ocasin se ha utilizado el carcter cuadrado como el carcter vacio para la cinta.
La funcin transicin se define (a,b,(D,I,S)) donde lee el carcter a coloca el carcter b en dicha
posicin y se mueve a derecha, izquierda o se mantiene segn corresponda. La transicin entre
estados se musetra mediante una flecha direccional que indica el estado antes de la transicin
y el despus de esta.
Al ser multicinta (3 en este caso) se anotan una tupla de 3 elementos (a,b,(D,I,S)) | (a,b,(D,I,S))
| (a,b,(D,I,S)) que representa que leer escribir en cada cinta. Es necesario que coincidan las
especificaciones de lectura de las 3 cintas para tomar dicha transicin.
Toda transicin no sealada lleva al estado de rechazo.
En este diagrama en rojo la seccin que permite marcar los caracteres iniciales en las 3 cintas. En
naranjo esta la seccin que escribe todas las as en la primera cinta, todas las bs en la segunda cinta y
todas las cs en la tercera cinta. En verde la seccin que rebobina las 3 cintas a su smbolo inicial. Por
ltimo la parte azul comprueba que se acaban las cs con el mnimo entre m,n.
12
Teora de la computacin
CC3102
Lo primero que hace es llegar al final de la entrada. Ac vemos que escribe el mismo
carcter que lee de forma de no alterar el input. Cuando lleguemos al final de la entrada
encontraremos cuadrados escritos en las 3 cintas en tal caso retrocedemos la cinta con
el input y pasamos al estado q6. Es importante notar que si bien movemos las dems
cintas el movimiento de estas por el momento no tiene importancia.
En el estado q6 reviso que es lo que est escrito en el ltimo carcter revisado. Esto nos
lleva por 3 caminos al ser posibles solo 3 caracteres. Siempre colocas una X en donde
estaba anteriormente el carcter y avanzas. En el espacio siguiente donde antes estaba
vacio vamos a escribir el carcter que remplazamos por X. Y luego volvemos a donde
escribimos X quedando en el estado q9.
o En resumen realizamos (.char ) (.X ) (.X char)
El siguiente paso es determinar si llegamos al inicio de la cinta, si vemos algn carcter
a,b,c es que debemos repetir el proceso. La condicin de termino es dependiente de la
implementacin. En la implementacin que se utiliz la cinta de la mquina de Turing
era infinita para ambos costados. Por lo que la condicin de termino era encontrar las 3
cintas vacias al dirigirnos a la izquierda. Esto se puede implementar de igual forma si la
maquina rebota al llegar a un costado, simplemente revisar que el smbolo sea X, la nica
13
Teora de la computacin
CC3102
El estado q12 va pasando las as sin modificarlas ya que estas deben quedar en la primera
cinta. Notar que ahora estamos haciendo que la segunda y tercera cinta no se muevan
ya que al colocar los caracteres iniciales X en el bloque anterior ahora si nos importa
colocar cada cinta en orden. Pueden ocurrir dos cosas para salir de este estado uno
encontarnos con una b en tal caso quitamos el smbolo de la primera cinta y avanzamos,
agregamos el smbolo a la segunda cinta y la avanzamos y no avanzamos la tercera cinta.
14
Teora de la computacin
CC3102
El otro caso es cuando llegamos al final de la entrada (nos encontramos un ) en tal caso
pasamos al estado q3 que rebobinara las as.
En el estado q0 se realiza un proceso anlogo al anterior solo que con los caracteres bs.
El estado q1 es lo mismo.
Algo importante es notar el trabajo del estado q16. Lo que ocurre es que al estar toda la
entrada en la primera cinta esta siempre debe ir avanzando para poder leer toda la
entrada. A consecuencia de esto al terminar de consumir la entrada las cintas quedan
asi.
o Xaaaa()
o Xbbb()
o Xcc()
Por esto mismo es necesario rebobinar los espacios vacos que dejo procesar la
entrada. Esto lo realiza el estado q16 retrocediendo solo la primera cinta en cada espacio
en blanco. Al terminar de rebobinar en la primera cinta nos encontramos o con el
carcter X (no se ingres ningn a) o con caracteres a que haban en la entrada. Esto se
ve reflejado en las transicin a estados q3 o q2
Los estados q3, q2, q15 realizan la misma funcin de q6 es decir rebobinar. Solo que
rebobinan de a una palabra a la vez.
Al terminar todos estos estados las cintas quedan de esta forma
o X(a)aaa
o X(b)bb
o X(c)c
15
Teora de la computacin
CC3102
5.2 Parte b
L4 = {x#y#z | x, y, z {0, 1} , |x| = |y|, z = xy}, donde es el XOR binario.
Para realizar este lenguaje realizare los siguientes pasos:
Aqu tambin asumo que siempre se colocan los 0 sin importar si son significativos por ejemplo. Si
1110 debe escribirse 01 no 1.
El diagrama es el siguiente
16
Teora de la computacin
CC3102
Ilustracin 9 Bloque de separacin y rebobinado. Permite que la comparacin sea fcil en la tercera a tercera etapa
17
Teora de la computacin
CC3102
El estado q7, q17, q19 tienen funciones similares a los estados que separaban en cintas en
el parte a). Sin embargo ahora toman todos los caracteres y los colocan en su cinta
correspondiente, si encuentran # avanzan al siguiente.
En el estado q3 retrocedemos la cinta 1. Esto se logra mediante sea cual sea el carcter que
leamos (menos el carcter X inicial) escribimos el mismo carcter y retrocedemos. No
movemos las dems cintas. Si ve el carcter X pasa al siguiente estado de rebobinar
De forma anloga se rebobinan cintas 2 y 3.
Ahora lo nico que resta es comprobar bit por bit si la tercera cinta contiene el resultado del XOR.
Esto se logra codificando la tabla de verdad del XOR en la transicin del estado q13. Si hace una
transicin valida se mantendr en el estado q13 y avanzara todas las cintas para probar el siguiente
bit. De no estar la transicin no es una operacin valida por lo que rechazamos. Por ultimo si se
vacian las 3 cintas a la vez quiere decir que todas las cintas tenan el mismo largo y que tambin
todas cumplieron la condicin del XOR. Por eso aceptamos
18