Automatas
Upcoming SlideShare
Loading in...5
×
 

Automatas

on

  • 374 views

Autómatas

Autómatas

Statistics

Views

Total Views
374
Views on SlideShare
374
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Automatas Automatas Document Transcript

  • Autómatas y Lenguajes Formales Una breve introducciónEste tema es básico para la construcción y programación de maquinas de cualquier tipo1que deben realizar tareas repetitivas, y que reaccionan apropiadamente ante cualquiersituación diferente a la usual, que pueda presentarse. Por ejemplo, supongamos que enuna embotelladora se tiene un maquina electrónica para colocar las etiquetas a losbotellas que viajan en una banda transportadora. Esta máquina debe realizar unascuantas tareas en forma repetitiva, básicamente tomar una etiqueta y pegarla sobre elbotella que vaya llegando, pero, ¿qué debe hacer la máquina cuando no lleguenbotellas? o ¿cuando se acaben las etiquetas? Esto debió haber sido resuelto en elmomento del diseño y programación de la misma, y para eso, y otras cosas más, sirvenestos temas.Como pueden darse cuenta, aquí, para tristeza de muchos, no se trabaja con botellas,sino únicamente con letras, números, símbolos y en general palabras. La razón, elobjetivo es desarrollar una teoría bastante general, de tal manera que estos temas sepuedan aplicar en diversidad de situaciones. Todos sabemos lo que ocurre cuandoprogramamos en algún lenguaje, como C o C#, si una instrucción se escribecorrectamente el compilador la acepta y la procesa, pero en caso que no sea así seinforma que existe un error antes de generar el archivo compilado. Quien se encarga, eneste caso, de revisar las instrucciones y verificar que todo este bien escrito, para que elcompilador las pueda interpretar adecuadamente, es un componente de software(autómata) que hace parte del mismo. La teoría que fundamenta todo esto y que facilitael desarrollo de este tipo de sistemas son los Autómatas y Lenguajes Formales.Para hacer más formal toda esta teoría electrónico-matemático-computacional esnecesario, antes, conocer algunos formalismos que le dan cierto orden a todo estecuento. (Voy a hablar de ellos solo en los términos de este escrito, que trabaja conautómatas que procesan cadenas de texto).AlfabetoEs un conjunto de símbolos que sirven para construir palabras (llamadas frecuentementecadenas). Los dos ejemplos más conocidos de alfabetos que nosotros utilizamos, son lasletras del alfabeto español a, b, c, e, f, …, zque permitieron, entro otros, escribir el contenido de este artículo.También están los diez dígitos decimales matemáticos que nos permiten construircualquier número, 0, 1, 2, …., 9Pero, resulta que, para complicarnos la vida, por que no pueden vernos yendo a laescuela felices y con ganas de aprender más y más sin necesidad de tanta simbología1 Las máquinas de las que se habla en este documento pueden ser virtuales. Un compilador es un ejemplode las llamadas máquinas virtuales.
  • rara, los científicos de la computación y las matemáticas, y también los de la electrónica, se han inventado símbolos raros para representar estos elementos. En el caso de los alfabetos, se utiliza la letra griega sigma, ∑ , para su representación. Entonces, si nos piden que escribamos el alfabeto español en términos computacionales, debería hacerse algo como lo siguiente: ∑ = {a, b, c, d , e, f ,...., z} (Lo correcto sería escribir todo el alfabeto) ¿Cuál es el alfabeto que se utiliza para escribir los números arábigos? Sencillo, es, ∑ = {0,1, 2,3, 4, 5, 6, 7,8,9} En este último caso, el lector se preguntará, ¿y que palabras se construyen con este alfabeto? Lo que pasa es que en esta teoría se llama palabra a todo lo que se pueda construir con la combinación de los elementos de un alfabeto. Por ejemplo, el número 25 es una palabra. Palabras Como ya se explico arriba, las palabras son todas las combinaciones que se puedan obtener con los elementos de un alfabeto. Por ejemplo, con el alfabeto, ∑ = {0,1, 2,3, 4, 5, 6, 7,8,9} podemos construir todas las palabras que llamamos números, tales como: 0, 12, 123222, 100000, etc. Con el alfabeto español, ∑ = {a, b, c, d , e, f ,...., z} podemos construir todas las palabras propias de nuestro idioma, como las que conforman este escrito, y otras que incluso no tienen sentido, tales como: seddddqqq, Mejor dicho, todas las combinaciones que se nos ocurran. Una pregunta: ¿Con el anterior alfabeto podré escribir la palabra “¡Yo amo a mi país!”? La respuesta es, NO. Observe que, se han incluido al menos cuatro elementos que no están en el alfabeto: los dos signos de admiración, el espacio separador y una tilde. En esta teoría las cosas son estrictas, solo se puede trabajar con los elementos del alfabeto definido, y si se necesitan otros, antes se los debe incluir en el alfabeto, o mejor utilizar otro alfabeto. Operaciones con cadenas La operación básica con cadenas es la concatenación que consiste en unir palabras. Por ejemplo, si tenemos las palabras Colombia y Pasto, la concatenación de estas es ColombiaPasto.www.pedrov.phpnet.us 2
  • Se acostumbra a representar la concatenación en forma similar a como las matemáticas representan la multiplicación. Se colocan las palabras entre paréntesis una a continuación de otra. Entonces nuestro ejemplo, lo podríamos simbolizar como: (Colombia) (Pasto) = ColombiaPasto Y como siempre, para complicarnos más las cosas, se acostumbra a utilizar variables que representan a cada palabra. Supongamos que w representa a Colombia y x representa a Pasto, entonces podemos representar todo como, w = Colombia x = Pasto y la concatenación como wx = ColombiaPasto Además, cuando se quiere representar la concatenación de una palabra que se repite varias veces se utiliza la simbología de la potenciación (un caso particular de la multiplicación). Supongamos que tenemos la palabra Pasto, entonces (Pasto)0 = ε (vacío) (Pasto)1 = Pasto (Pasto)2 = PastoPasto (Pasto)3 = PastoPastoPasto (Pasto)4 = PastoPastoPastoPasto O en forma simbólica, si x es igual a Pasto entonces x0 = ε (vacio) x1 = Pasto x2 = PastoPasto x3 = PastoPastoPasto x4 = PastoPastoPastoPasto Al conjunto de todas las palabras que sea posible formar, con sentido o sin él, con los símbolos de un alfabeto se lo simboliza con ∑* . Lenguaje Con un alfabeto se podrían construir cualquier cantidad de palabras, unas con sentido y otras sin sentido. Un lenguaje es un pequeño conjunto de palabras que se toman de ese gran conjunto. Supongamos que tenemos el alfabeto que nos permite generar números binarios, ∑ = {0,1}www.pedrov.phpnet.us 3
  • Sabemos que con este conjunto podemos formar cualquier palabra formada por ceros y unos. De ese gran conjunto, en particular podríamos tomar un conjunto formado por unas cuantas palabras, como por ejemplo, L1 = {01,10,11,111} Este es un ejemplo de lenguaje definido sobre el alfabeto ∑ . Pero, este no es el único lenguaje que podemos definir sobre este alfabeto. Mire este otro: L2 = {01, 0101, 010101, 01010101,...} Observe, que este último lenguaje tiene algo particular. Está formado por palabras que resultan de la concatenación de la palabra básica 01. Teniendo en cuenta este detalle, podemos escribir este lenguaje como, L2 = {(01)1 , (01) 2 , (01)3 , (01) 4 ,...} O incluso, para simplificar aún más las cosas, podemos hacerlo como sigue: L2 = {(01)n / n ≥ 1} La condición n ≥ 1 significa que el mínimo valor que puede tomar n es 1 y por lo tanto, la primera cadena que contiene este lenguaje es 01. Un ejercicio rápido: Escriba cinco elementos del lenguaje L = {a n bc / n > 1} definido sobre el alfabeto ∑ = {a, b, c} . Una pregunta: En el anterior lenguaje ¿está la palabra abc? Y ¿la palabra aabc? Autómata En la práctica, un autómata es un método, también llamado máquina virtual, que sirve para saber si una palabra hace parte de un lenguaje. Un autómata se encarga de leer los símbolos que conforman una palabra, desde el primero hasta el último en estricto orden, y determinar si cumple con las condiciones impuestas por el lenguaje. Por ejemplo en el lenguaje, L2 = {(01)1 , (01) 2 , (01)3 , (01) 4 ,...} el autómata asociado a él deberá revisar si una palabra que se desea identificar cumple la condición de ser una repetición sucesiva de la base 01. Cuando el autómata revise la palabra 01010101 no tendrá problema en aceptarla, pero la palabra 01010 no podrá ser aceptada como miembro de este lenguaje.www.pedrov.phpnet.us 4
  • Para no complicar las cosas, digamos que una forma de representar gráficamente un autómata es mediante unos círculos y unas líneas que los unen, y que se conoce con el nombre de diagrama de transición. Los diagramas de transición están formados por círculos, que se llaman estados y flechas o arcos de transición que se conocen como transiciones, y podemos considerarlo como un croquis de rutas a seguir. Un estado es un punto del diagrama donde hay que detenerse para definir hacia donde se continúa el viaje. Cada estado se acostumbra a representarlo mediante letras y subíndices, tal como q0, q1, q2, etc. Para viajar de un estado hacia otro, se utilizan caminos llamados transiciones. Pero, el camino que se debe tomar lo define el símbolo que se vaya a leer. Por ejemplo, tenemos la palabra 101, que deseamos saber si pertenece a un determinado lenguaje, y un autómata que lo reconoce, representado en el siguiente diagrama: 101 Haga de cuenta que el dibujo esta trazado en el piso y que Usted se encuentra parado en q0. El círculo q0 se llama estado inicial, y aquí se distingue con una flecha ubicada a su izquierda. El círculo q2, con línea doble, se llama estado final o de aceptación. Observe que, estando en q0, tiene dos caminos por seguir, uno que lo lleva a darse una vuelta y volver al mismo punto y el otro que lo lleva al estado q2. Para realizar el viaje procedemos de la siguiente forma: - Leemos el primer símbolo de la cadena. Como el primer símbolo leído es 1, tiene que tomar el camino hacia q2, eso está marcado en el camino respectivo. - Ahora estando en q2, debe leer el siguiente símbolo de la palabra, en este caso es 0. Nuevamente tenemos dos caminos por seguir, pero el camino que le corresponde a este valor es aquel que lo hace dar un recorrido y volver inmediatamente al mismo punto, q2. - Leemos el tercer símbolo, que es 1, y este nos lleva al estado q0. Ahí termina todo, por que ya se acabaron los símbolos. Si después de leer toda la palabra se llega al estado de aceptación, entonces la palabra se da por aceptada, de lo contrario no. En el ejemplo anterior, la palabra 101 no es aceptada por el autómata, por que el punto de llegada fue q0, y no el estado final o de aceptación q2, por lo tanto se concluye que no hace parte del lenguaje que se esté analizando. Analice los movimientos que hay que hacer para la palabra 1011 y determine si es aceptada por el autómata. (La respuesta es SI).www.pedrov.phpnet.us 5
  • Autómata finito determinista (AFD) Un autómata se considera determinista cuando en cada uno de los estados existe una única transición o camino para cada una de las entradas. Por ejemplo, si en nuestro autómata juguete, Usted se encuentra en el estado q2, y le llega un 1, sabe que tiene un único camino por seguir, y es aquel que lo lleva a q0. Igual ocurre si le llega un 0, debe irse a dar una vuelta por el camino correspondiente y volver a q2. Es decir, todo está claramente determinado. Una condición es que, todas las posibles entradas posean una transición de salida en cada estado del autómata. Autómata finito no determinista (AFND o AFN) Un autómata no determinista, puede poseer más de un camino señalado con la misma etiqueta. Es decir, para cada una de las entradas pueden existir varias transiciones, o incluso ninguna. El siguiente, es un ejemplo de autómata no determinista. Realice el ejercicio mental de suponer que es un croquis dibujado en el piso. Si Usted se encuentra en la posición q0, y le llega una a, tiene dos caminos para seguir, y se enfrentará a una incertidumbre ¿Cuál es el camino correcto? Si nos vamos hacia q1, y luego nos llega una b, podremos llegar al estado de aceptación q2, pero si no llega dicha letra, habremos comprobado que tomamos el camino equivocado y talvez debamos regresar al punto de inicio. También podemos observar que, para b no existe una transición de salida en q0. Algo similar ocurre en q2, donde no existen transiciones de salida ni para a ni para b. Como podemos darnos cuenta, en este tipo de autómatas nada está claramente determinado. Este AFN, ¿aceptará la cadena abbb? Y ¿la cadena aaaaa? Las respuestas son Si y No, respectivamente.www.pedrov.phpnet.us 6
  • Esta es una descripción demasiado elemental de la teoría de autómatas. Hacen falta muchos detalles que deben tenerse en cuenta para fundamentar mejor el producto de estas teorías. Pero, en el intento de iniciar la comprensión de los conceptos básicos de esta disciplina de la computación, puede ser muy útil.www.pedrov.phpnet.us 7