View
225
Download
0
Embed Size (px)
Citation preview
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
1/18
CC3102Teora de la computacin
Tarea
Tarea 2 Autmata apilador, gramticas y
mquinas de Turing
Profesor de Ctedra: Alejandro Hevia
Auxiliares: Ivana Hachmann
Pablo Muoz Fuentes
Alumno: Andrs Sebastin Ferrada Lagos
Fecha: 13/11/2015
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
2/18
CC3102Teora de la computacin
2
1
Entregue diagramas de estado descripcin
intuitiva de los siguientes lenguajes.
1.1Letra a
L = {x#x# . . .#x | k 1, cada xi {a, b}, y existen i, j tales que x = x}
Respecto al diseo de este autmata apilador me base en el no determinismo adems de
separar el problema en una serie de pequeos problemas. Si resulta que para algn i,j se tiene quex = x
necesito alguna forma de elegir este x y algn x entonces lo que hago es adivinar que palabrausar. Esto se logra mediante saltar una cantidad no determinista de #. Luego de posicionarme al inicio
de una palabra la copio entera en el stack, es decir copia hasta encontrar el siguiente asterisco. Ahora
otra vez debo elegir un salto no determinista de # que me llevara a otra palabra cualquiera. Por ultimo
voy comparando si la palabra que tengo en el stack es igual a la palabra que me posicione. Debido a
que es un stack la palabra se encuentra almacenada en reversa (el primer elemento que sacare ser el
ltimo que deposite) por lo que la comparacin cumple con el lenguaje.
Si se cumple todo el camino anterior para alguna combinacin de palabras tengo que la palabra
est en el lenguaje. Dada esta formulacin tengo el siguiente autmata de pila.
**Nota se ha omitido el estado donde coloca el carcter de chequeo de fin de stack. Es decir
falta un estado al inicio que no toma input, no toma stack y coloca el carcter Z ($ para la notacin vista
en clases). Ya que se puede observar que el ultimo nodo comprueba que se acabe el stack sacando este
smbolo del stack.
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
3/18
CC3102Teora de la computacin
3
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.
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
4/18
CC3102Teora de la computacin
4
1.2
Letra b
L2 = { w {a, b} | ||w||a = 2 ||w||b }, donde ||w||x es el nmero de veces que aparece elsmbolo 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
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
5/18
CC3102Teora de la computacin
5
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).
Ilustracin 3 autmata que reconoce palabras con doble cantidad de b que de a
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
6/18
CC3102Teora de la computacin
6
2
Demostrar que los siguientes lenguajes no son
gramticas de libre contexto.
2.1Letra a
L3 es el conjunto de las cadenas formadas por smbolos a,b y c con la misma cantidad de a,b y c
Primero enunciamos el lema de bombeo el cual utilizaremos para la demostracin (contra
reciproca del lema).
Un lenguaje no es una gramtica libre de contexto si se cumple lo siguiente
, , ||
Tal que = alguna de las siguientes condiciones falla
1. 0, 2. 13.
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 essuficientemente 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 enla 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 esassecciones (al menos uno ya que > 1) como se genera en solo una seccin lasotras dos secciones no tendrn como igualar la cantidad de caracteres y la palabra
bombeada se sale del lenguaje.
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
7/18
CC3102Teora de la computacin
7
Caso est en alguna de las fronteras entre secciones (entre a,b o entre b,c). Primeroque 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 2las palabras se salen del lenguaje y por lo tanto el lenguajeno era libre de contexto.
2.2Letra b
4 = {| 2}
Utilizando el lema de bombeo elijo la siguiente palabra =
Los casos son los siguientes:
est en la seccin de solo as. Si esta en esta seccin bombearlo con 2genera que lacantidad 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 cantidadde as , bs no ser la misma.
est en la seccin de solo cs. Si esta ac con 2tendremos 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 serompe la igualdad de a,n. 2
o Se eligen la cantidad de a,b en el bombeo de forma simtrica. En tal caso elproblema es que se debe mantener la condicin entonces (+
) tendr
que = 2 1 > = 2 tendr una cantidad al menos superior (esto se tiene yaque se bombea al menos 2 por bombeo al ser > 1y la cantidad es simtrica
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
8/18
CC3102Teora de la computacin
8
por lo que en la iteracin (+
) estoy seguro que es mayor ). Como es mayor se sale dellenguaje.
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 laparte bombeada no se puede colocar entre ms de dos fronteras.
3Describir gramtica y convertir a forma normal
de Chomsky
G: S XY , X aXb |, Y bY a | .
La primera regla S XYquiere 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 simtricode 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.
Entonces algunas formas de mayor nivel para expresar el lenguaje serian:
L = { + , 0}
L = { 0}
L = {Concadenar la misma cantidad de as unidos a la misma cantidad de bs unidos con otra palabra
que posea la misma cantidad de bs unidos con as}
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
9/18
CC3102Teora de la computacin
9
Ahora para convertir a la forma normal de Chomsky se deben tener lo siguiente
Toda regla posee la forma
A BC (donde B, C no son variables iniciales)
A a (donde a no es el carcter vaco e)
Se permiten S e
El proceso a realizar es el siguiente:
1. Si la variable inicial aparece en algn momento a la derecha crear una nueva variable inicial que
apunte a la antigua
2. Eliminar las reglas A e. Remplazando en todas las reglas que apuntaban a A el carcter vaco.3. Borrar todas las reglas del tipo A B y remplazar por los terminales que tena B.
4. Si A abc partir de a dos en variables que llevan a terminarles. Por ejemplo Si A A1A2 , A1
a, A2 A3 A4, A3 b, A4 c
Entonces vamos regla por regla hasta convertir todas en reglas vlidas.
S XY es vlida ya que son dos variables no iniciales
X no es vlida entonces la eliminamos y se generan las nuevas reglas X ab, S Y.
Y no es vlida entonces la eliminamos y se generan las nuevas reglas y ba, S X. Adems
de la regla S Y ahora indica S(la cual es vlida por ser S variable inicial).
Despus de dichos pasos la gramtica queda.
S XY | X | Y |
X ab | aXb
Y ba | bYa
An quedan reglas invalidas continuamos
Para los terminales creare las variables A a, B b.
Entonces para que las variables de X cumplan con tener dos variables a la derecha. Modifico sus
variables que ahora sern X AX1, X AB. Donde X1 XB.
Las variables de Y siguen un proceso similar Y BA, Y BY1. Donde Y1 YA
Quedan las siguientes variables
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
10/18
CC3102Teora de la computacin
10
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.
4Formule la definicin formal de autmata de
cola y demuestre que es equivalente a una
mquina de Turing
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
11/18
CC3102Teora de la computacin
11
Para lograr esto me base en el comportamiento de un numero al ir ingresando valores y el
modulo del nmero que queremos buscar mltiplos. Por ejemplo para el caso m = 3.
Como m = 3 los valores de su mdulo estn entre 0, 1,2 siendo 0 el valor que nos gustara que
fuese para aceptarlo.
5
De descripciones de mquinas de Turing bajo y
alto nivel de las siguientes lenguajes
5.1Parte a
3 = { m(,), 0}
Para reconocer este lenguaje la nica dificultad se encuentra en como determinar el mnimo
entre m,n y probarlo ya que comprobar que una palabra tenga misma cantidad de letras es fcil.
Para resolver el problema pens en lo siguiente. Si yo tengo las as, las bs y las cs ordenadas y
voy comparando una a una las letras. De ser c igual al mnimo entre la cantidad de a s y bs deben
terminarse las a junto con las c de ser la cantidad de as mnima o terminarse las bs con las c.
Entonces el diagrama de alto nivel es el siguiente. Utilizare una maquina de Turing de 3 cintas.
Primero marcare en las 3 cintas el primer carcter
Luego separare la entrada (escrita en la primera cinta) dejando todas las as en la primera
cinta, todas las bs en la segunda cinta y todas las cs en la tercera cinta.
Rebobinar la primera cinta hasta encontrar el primer carcter
Rebobinar la segunda cinta hasta encontrar el primer carcter
Rebobinar la tercera cinta hasta encontrar el primer carcter
Si en las 3 cintas hay caracteres avanzar, si se acaban todas a la vez acepta. Si se acaba
la de las c y la de las a acepta. Si se acaba la de las b y las c acepta. En todos los dems
casos rechaza.
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
12/18
CC3102Teora de la computacin
12
El diagrama de estados general de la maquina es el siguiente.
Convenciones y notacin:
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.
Ilustracin 4 Diagrama maquina de turim que reconoce L3 por bloques
En este diagrama en rojo la seccin que permite marcar los caracteres iniciales en las 3 cintas. Ennaranjo 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.
5.1.1 Explicacion por secciones
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
13/18
CC3102Teora de la computacin
13
5.1.2 Bloque de entrada (en rojo)
Re ordenando un poco para verlo mejor el bloque de entrada es lo siguiente:
Ilustracin 5 Bloque de entrada
Lo primero que hace es llegar al final de la entrada. Ac vemos que escribe el mismocarcter 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
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
14/18
CC3102Teora de la computacin
14
forma de que al ir a la izquierda de X y volver a encontrar X es que rebotemos por el
inicio del string (dado que X no estaba en el alfabeto de entrada)
Por ultimo la funcin del estado q11 es marcar con X el inicio de las 3 cintas y dejarnos
un carcter a la derecha de esto para comenzar a leer.
5.1.3 Bloque separar as, bs y cs
Ahora este bloque es el que separa los caracteres en diferentes cintas y rebobina otra vez las
cintas al inicio.
Ilustracin 6 Bloque separador rebobinador
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.
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
15/18
CC3102Teora de la computacin
15
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 seve 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
5.1.4 Bloque de comparacin y aceptacin
Por ltimo el bloque final va borrando de a 3. Revisa que las cs se acaben al mismo tiempo que
las as o que las bs si se cumple esto debemos aceptar
Ilustracin 7 bloque de aceptacin
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
16/18
CC3102Teora de la computacin
16
5.2Parte 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:
Parto con una mquina de Turing de 3 cintas
Primero marco los caracteres en las 3 cintas
Luego escribo en la primera cinta lo anterior al primer #. Escribo en la segunda cinta lo anterior
al segundo # y escribo lo posterior al segundo # en la tercera cinta.
Rebobino todas las cintas hasta llegar al primer carcter marcado
Ahora por comparo segn la tabla de verdad del XOR la primera segunda y tercera cinta. Esto lo
logro escribiendo estas reglas en 4 transiciones al mismo estado. Si no posee esta transicin se
sale y rechaza. Si al llegar al final encuentra las 3 cintas vacas es que proceso todocorrectamente. Esta forma tambin evita que las palabras sean de distinto largo ya que aunque
las transiciones sean vlidas llegara a un punto donde las 3 cintas no estarn vaca.
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
Ilustracin 8 P5 B diagrama de estados
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
17/18
CC3102Teora de la computacin
17
5.2.1 Bloque de entrada marcar signo al inicio
El primer bloque no requiere mayor explicacin es el mismo bloque del problema anterior solo
que adaptado para trabajar con 1,0,#. Para mayor explicacin revisar bloque de entrada en parte a.
5.2.2 Bloque de separar y rebobinar
El segundo bloque permite colocar en cada cinta lo que corresponde el diagrama de estados es
el siguiente.
Ilustracin 9 Bloque de separacin y rebobinado. Permite que la comparacin sea fcil en la tercera a tercera etapa
7/25/2019 Tarea 2 Teoria de La Computacion Andres Ferrada Lagos
18/18
CC3102Teora de la computacin
18
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.
5.2.3 Bloque de aceptacin
Ilustracin 10 Bloque de aceptacin comprueba tabla de verdad de XOR
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