You are on page 1of 7

Tarea 1

Rodrigo Bermedo
Juan reyes
24 de agosto de 2014
Resumen
Un lenguaje es descrito dentro de la teora de aut omatas como un conjunto de palabras formadas por smbolos de un alfabeto
dado, dentro de este contexto existen muchas operaciones que se pueden realizar con un lenguaje, pero en este trabajo nos centra-
remos en solo una, la potencia de un lenguaje, esta operaci on consiste en concatenar cada una de las palabras que constituyen un
lenguaje con s misma y con el resto de palabras, con esta acci on se crea un nuevo lenguaje que es exponencialmente m as grande
que el original.
El objetivo de la actividad consiste en realizar una aplicaci on capaz de calcular la n-esima potencia de un lenguaje dado, para
ello utilizaremos Python como lenguaje de programaci on y utilizaremos su librera PyQt para dise nar la interfaz gr aca de la
aplicaci on.
1
1. Introduccion
Se denomina lenguaje a un conjunto de palabras de un determinado alfabeto. Tambi en un lenguaje es un conjunto de cadenas
de smbolos (palabras, oraciones, textos o frases). Un lenguaje est a compuesto por Sintaxis: (gram atica), que dene las secuencias
de smbolos que forman cadenas v alidas de un lenguaje. Y por Sem antica, que es el signicado de las cadenas que componen un
lenguaje.
Existen operaciones del lenguaje, como lo es un leguaje elevado a la n- esima potencia. Esto quiere decir que cada cadena
perteneciente a un lenguaje L es concatenada consigo misma y las dem as cadenas de ese lenguaje n veces. El resultado de esta
operaci on ser a un lenguaje L elevado a la n- esima potencia con X elevado a n, donde L est a formado por X cantidad de palabras.
Los aut omatas, pasan por distintos estados, los cuales dependen del alfabeto que componen a la palabra (correspondiente a
un lenguaje L) ingresada en el sistema aut omata. Son estas palabras (debido a su composici on seg un un alfabeto dado) las que
gatillan el inicio de una acci on a ejecutar por el aut omata.
2
2. Marco Te orico
La teora de los Lenguajes Formales tiene una sorprendente relaci on con la Teora de Aut omatas y la Computabilidad. Pa-
ralelamente a la jerarqua de lenguajes existe otra equivalente de m aquinas abstractas, de tal forma que a cada una de las clases
de lenguajes denidas en la jerarqua de Chomsky (Chomsky estableci o una clasicaci on de gram aticas de acuerdo con el for-
mato de sus producciones y distingui o cuatro clases fundamentales de lenguajes y relaciones de inclusi on entre ellas) a partir
de restricciones impuestas a las gram aticas, le corresponde un tipo de m aquina abstracta, que no es otra cosa que un m etodo
reconocedor para la descripci on de lenguajes.
Un alfabeto es un conjunto nito y no vaco de elementos llamados smbolos o letras. Una palabra o cadena sobre un alfabeto
V es una cadena nita de smbolos del alfabeto. La longitud de una cadena w, que notaremos como |w| , es el n umero de letras
que aparecen en w. A la cadena que no tiene smbolos, o lo que es lo mismo, que tiene longitud 0, la llamaremos palabra vaca y
se nota por .
Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V*. As tenemos que, V*, , y V pueden considerarse
como lenguajes. Lenguaje por comprensi on es expresado como:
L = w V* | w cumple la propiedad P
La concatenaci on de un lenguaje L1 y un lenguaje L2 es otro lenguaje L denotado como:
L1 L2 = x y V* | (x L1)

(y L2)
La concatenaci on de lenguajes sobre un alfabeto es una operaci on cerrada, y adem as cumple la propiedad asociativa (todo
lenguaje matem aticamente es un Conjunto y como tal posee sus propiedades y caractersticas, el alfabeto es un sub-conjunto del
lenguaje) y tiene un elemento neutro que es el lenguaje . Esto se rige por el siguiente teorema que dice que dados los lenguajes
A,B,C sobre un alfabeto V , la concatenaci on de lenguajes es distributiva con respecto a la uni on, esto es, se cumple que:
1. A (B C) = (A B) (A C)
2. (B C) A = (B A) (C A)
Una vez denida la concatenaci on de lenguajes, podemos denir la potencia n- esima de un lenguaje como la operaci on que
consiste en concatenar el lenguaje consigo mismo n veces. La denici on inductiva es:
1. L0 =
2. Ln = L Ln - 1, n 0
3
3. Desarrollo
3.1. Analisis
Para el desarrollo de esta actividad se nos proporcion o un lenguaje el cual cuenta con cuatro palabras:
L={11, 00, ab, aabbcc}
Nuestra tarea ser a calcular la n-esima potencia de este lenguaje, para ello nos guiaremos en base a la siguiente ecuaci on:
L
n
=

n=0
Despues de leer y analizar el enunciado de la actividad, hemos podido identicar que el principal problema que conlleva calcular
la potencia de un lenguaje es que la cantidad de palabras resultante en cada una de las potencia crece exponencialmente, por lo
cual es necesario que la aplicaci on sea capaz de manejar grandes cantidades de informaci on, es por esto que el primer paso antes
de seleccionar que herramienta seria la mejor para dise nar una soluci on es calcular la cantidad de palabras que se generaras con
cada potencia.
Potencia Cantidad de palabras
1 4
2 16
3 64
4 256
5 1024
6 4092
7 16386
8 65536
9 262144
10 1048576
11 4194304
Figura 1: Cantidad de palabras X potencia
4
Finalmente luego de tener la cantidad exacta de palabras que tendr an que ser generadas y almacenadas decidimos que la
mejor forma de entreg arselas al usuario seria en un archivo de texto, debido a que son extremadamente r apidos de editar, por lo
cual har a que el tiempo de ejecuci on de la aplicaci on se vea reducido.
Luego de tener claras las dimensiones del problema decidimos que la mejor herramienta para solucionarlo sera Python, debido
a que nos entrega la posibilidad de crear arreglos din amicos de manera muy simple, estos arreglos fueron vitales a la hora de
generar y almacenar cada una de las palabras antes de ser escritas en el archivo de texto.
Para dise nar la interfaz gr aca nos decidimos por la librera PyQt ya que es una librera bastante simple de usar y que nos
entrega las herramientas necesarias para lo que necesitamos, adem as consideramos que el apartado graco no es lo esencial de
la aplicaci on debido a que lo importante es que genere cada una de las potencias del lenguaje de manera correcta.
3.2. Algoritmo
En este apartado comentaremos el m etodo llamado concatenar el cual se encarga de generar cada una de las nuevas poten-
cias del lenguaje base, para ello recibe dos par ametros, el primero es una lista llamara l la cual contiene la potencia anterior a
la cual que se quiere calcular y el segundo par ametro se denomina ndice este es un numero entero que indica el n umero de la
potencia que se est a calculando, este argumento solo es utilizado para ser escrito en el archivo de texto.
def c o n c a t e n a r ( l , i n d i c e ) :
l n =[ ]
a r c h i vo . wr i t e ( L+ s t r ( i n d i c e ) + : { )
f or i i n range ( l en ( l ) ) :
f or e i n range ( l en ( l e n g u a j e ) ) :
l n . append ( l [ i ] + l e n g u a j e [ e ] )
a r c h i v o . wr i t e ( l [ i ] + l e n g u a j e [ e ] + , )
a r c h i vo . wr i t e ( }\n\n )
ret urn l n
Como se puede observar en el c odigo, lo primero que se realiza es crear un arreglo vaco el cual es llamado ln, este arreglo
es donde se almacenaran cada una de las palabras que se generaran, es muy importante indicar que este arreglo almacena una
cantidad enorme de palabras cuando se calculan las potencias m as altas.
a r c h i vo . wr i t e ( L+ s t r ( i n d i c e ) + : { )
En la linea de arriba se escribe el encabezado de la potencia del lenguaje, por ejemplo si el valor de la variable indice es 2, esa
linea escribiria lo siguiente en el archivo:L2: {. Esto sirve para identicar cada una de las potencias que seran escritas en el
archivo.
f or i i n range ( l en ( l ) ) :
f or e i n range ( l en ( l e n g u a j e ) ) :
l n . append ( l [ i ] + l e n g u a j e [ e ] )
a r c h i v o . wr i t e ( l [ i ] + l e n g u a j e [ e ] + , )
a r c h i vo . wr i t e ( }\n\n )
Es este fragmento de c odigo se generan las nuevas potencias del lenguaje, como se puede observar cuenta con dos bucles for
con los cuales se recorren dos listas la primera llamada l la cual es recibida como par ametro y posee la potencia anterior a la
que queremos calcular, la segunda lista se llama lenguaje esta lista posee el lenguaje base del cual surgen todas las potencias,
esta lista est a declarada como una variable global.
l n . append ( l [ i ] + l e n g u a j e [ e ] )
a r c h i vo . wr i t e ( l [ i ] + l e n g u a j e [ e ] + , )
La primera de estas dos lneas genera la concatenaci on entre una palabra de alguna de las potencias y una palabra contenida en el
lenguaje inicial, lo que da como resultado una nueva palabra que pasara a formar parte de la nueva potencia que se est a calculando,
en la segunda lnea se escribe en el archivo de texto la palabra antes creada para luego de terminado el proceso ser mostradas al
usuario.
5
3.3. Ejecuci on y Resultados
Figura 2: Interfaz de la aplicaci on seleccionando la potencia 5
Figura 3: Archivo resultante al calcular la quinta potencia
6
4. Conclusiones
Se ha presentado un ejercicio para una asignatura de Teora de la computaci on donde el tema a desarrollar es el uso de los
lenguajes formales. Las conclusiones m as destacables de esta experiencia son las siguientes:
Interpretaci on matem atica del problema para luego ser traducida a un algoritmo funcional.
La comprensi on y el uso de un marco te orico para dar resoluci on al problema dado por el profesor.
La aplicaci on de conceptos sobre aut omatas a un problema de procesamiento de lenguajes.
La utilizaci on de un lenguaje de programaci on como Python que integra mecanismos de manejo de textos de una forma
distinta a algunas otras herramientas usadas por los alumnos en cursos anteriores.
5. Bibliograa
Brena, R. (2003, p. 31). Automatas y Lenguajes: Un enfoque de dise no. Recuperado de
http://fcbi.unillanos.edu.co/proyectos/Facultad/php/tutoriales/upload tutos/Automatas%Y%Lenguajes.pdf
Billhardt, H. (2008, p. 2-6). Teora de Aut omatas y Lenguajes Formales. Recuperado de
http://www.ia.urjc.es/grupo/docencia/automatas itis/apuntes/capitulo%202.ppt.pdf
Jurado, E. (2008, p. 8). Teora de Aut omatas y Lenguajes Formales. Recuperado de
http://campusvirtual.unex.es/ebooks/les/le/TeoriaAutomatas.pdf
7

You might also like