SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Autómatas y Lenguajes Formales
                                        Una breve introducción


Este tema es básico para la construcción y programación de maquinas de cualquier tipo1
que deben realizar tareas repetitivas, y que reaccionan apropiadamente ante cualquier
situación diferente a la usual, que pueda presentarse. Por ejemplo, supongamos que en
una embotelladora se tiene un maquina electrónica para colocar las etiquetas a los
botellas que viajan en una banda transportadora. Esta máquina debe realizar unas
cuantas tareas en forma repetitiva, básicamente tomar una etiqueta y pegarla sobre el
botella que vaya llegando, pero, ¿qué debe hacer la máquina cuando no lleguen
botellas? o ¿cuando se acaben las etiquetas? Esto debió haber sido resuelto en el
momento del diseño y programación de la misma, y para eso, y otras cosas más, sirven
estos 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, el
objetivo es desarrollar una teoría bastante general, de tal manera que estos temas se
puedan aplicar en diversidad de situaciones. Todos sabemos lo que ocurre cuando
programamos en algún lenguaje, como C o C#, si una instrucción se escribe
correctamente el compilador la acepta y la procesa, pero en caso que no sea así se
informa que existe un error antes de generar el archivo compilado. Quien se encarga, en
este caso, de revisar las instrucciones y verificar que todo este bien escrito, para que el
compilador 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 facilita
el 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 es
necesario, antes, conocer algunos formalismos que le dan cierto orden a todo este
cuento. (Voy a hablar de ellos solo en los términos de este escrito, que trabaja con
autómatas que procesan cadenas de texto).

Alfabeto

Es un conjunto de símbolos que sirven para construir palabras (llamadas frecuentemente
cadenas). Los dos ejemplos más conocidos de alfabetos que nosotros utilizamos, son las
letras del alfabeto español

        a, b, c, e, f, …, z

que permitieron, entro otros, escribir el contenido de este artículo.

También están los diez dígitos decimales matemáticos que nos permiten construir
cualquier número,

        0, 1, 2, …., 9

Pero, resulta que, para complicarnos la vida, por que no pueden vernos yendo a la
escuela felices y con ganas de aprender más y más sin necesidad de tanta simbología

1
 Las máquinas de las que se habla en este documento pueden ser virtuales. Un compilador es un ejemplo
de 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

Más contenido relacionado

La actualidad más candente

Sistema escri matic- - monografias
Sistema  escri matic- - monografiasSistema  escri matic- - monografias
Sistema escri matic- - monografiaslaguaira2015
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticasJuanchi Novas
 
Gramática de libre contexto
Gramática de libre contextoGramática de libre contexto
Gramática de libre contextoJaVito GagrLu
 
Expresiones regulares2.pdf
Expresiones regulares2.pdfExpresiones regulares2.pdf
Expresiones regulares2.pdfJeffreyagnz
 
Equivalencia de autómatas finitos y expresiones regulares.
Equivalencia de autómatas finitos y expresiones regulares.Equivalencia de autómatas finitos y expresiones regulares.
Equivalencia de autómatas finitos y expresiones regulares.Yamilee Valerio
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contextoVerónica Es'Loo
 
Argentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdfArgentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdfenzo935311
 
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO Guillermo Iván Prisco Pérez
 
Gramatica
GramaticaGramatica
Gramaticasdarky
 
Teoría de Autómatas y Lenguajes Formales (I Bimestre)
Teoría de Autómatas y Lenguajes Formales (I Bimestre)Teoría de Autómatas y Lenguajes Formales (I Bimestre)
Teoría de Autómatas y Lenguajes Formales (I Bimestre)Videoconferencias UTPL
 
Argentina Programa Apendix parte 2.pdf
Argentina Programa Apendix parte 2.pdfArgentina Programa Apendix parte 2.pdf
Argentina Programa Apendix parte 2.pdfenzo935311
 

La actualidad más candente (20)

Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 
LaTeX
LaTeXLaTeX
LaTeX
 
Gramáticas formales
Gramáticas formales Gramáticas formales
Gramáticas formales
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Sistema escri matic- - monografias
Sistema  escri matic- - monografiasSistema  escri matic- - monografias
Sistema escri matic- - monografias
 
GRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUASGRAMATICAS AMBIGUAS
GRAMATICAS AMBIGUAS
 
Tipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según ChomskyTipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según Chomsky
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
Gramática de libre contexto
Gramática de libre contextoGramática de libre contexto
Gramática de libre contexto
 
Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones Regulares
 
Expresiones regulares2.pdf
Expresiones regulares2.pdfExpresiones regulares2.pdf
Expresiones regulares2.pdf
 
Equivalencia de autómatas finitos y expresiones regulares.
Equivalencia de autómatas finitos y expresiones regulares.Equivalencia de autómatas finitos y expresiones regulares.
Equivalencia de autómatas finitos y expresiones regulares.
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contexto
 
Argentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdfArgentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdf
 
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
 
Gramatica
GramaticaGramatica
Gramatica
 
Teoría de Autómatas y Lenguajes Formales (I Bimestre)
Teoría de Autómatas y Lenguajes Formales (I Bimestre)Teoría de Autómatas y Lenguajes Formales (I Bimestre)
Teoría de Autómatas y Lenguajes Formales (I Bimestre)
 
Argentina Programa Apendix parte 2.pdf
Argentina Programa Apendix parte 2.pdfArgentina Programa Apendix parte 2.pdf
Argentina Programa Apendix parte 2.pdf
 
Notacion Hungara
Notacion HungaraNotacion Hungara
Notacion Hungara
 
Gramaticas
GramaticasGramaticas
Gramaticas
 

Similar a Automatas

Expresiones Regulares y Gramáticas
Expresiones Regulares y GramáticasExpresiones Regulares y Gramáticas
Expresiones Regulares y GramáticasPaolaNovas
 
Lenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdfLenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdfKEILLIEDAILYNSICAJAC
 
Unidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesUnidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesRaul Interian
 
Expresiones regularesfinal
Expresiones regularesfinalExpresiones regularesfinal
Expresiones regularesfinalNoel Gutierrez
 
Unidad I Lenguaje V2 curso Compiladores.pdf
Unidad I Lenguaje V2 curso Compiladores.pdfUnidad I Lenguaje V2 curso Compiladores.pdf
Unidad I Lenguaje V2 curso Compiladores.pdfSebastianSantizo3
 
Guia 2 expresiones algebraicas2013
Guia 2 expresiones algebraicas2013Guia 2 expresiones algebraicas2013
Guia 2 expresiones algebraicas2013PARRA113
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticasRobin Pena
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticasMaximo De Leon
 
Expresiones regulares y grámaticas regulares ariel acosta
Expresiones regulares y grámaticas regulares ariel acosta Expresiones regulares y grámaticas regulares ariel acosta
Expresiones regulares y grámaticas regulares ariel acosta franki3536
 

Similar a Automatas (20)

Expresiones Regulares y Gramáticas
Expresiones Regulares y GramáticasExpresiones Regulares y Gramáticas
Expresiones Regulares y Gramáticas
 
Lenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdfLenguajes formales y teoría de autómatas I.pdf
Lenguajes formales y teoría de autómatas I.pdf
 
Unidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formalesUnidad 6 introduccion a los lenguajes formales
Unidad 6 introduccion a los lenguajes formales
 
Expresiones regularesfinal
Expresiones regularesfinalExpresiones regularesfinal
Expresiones regularesfinal
 
De palabras y lenguajes
De palabras y lenguajesDe palabras y lenguajes
De palabras y lenguajes
 
lenguajes formales
lenguajes formaleslenguajes formales
lenguajes formales
 
Tarea111
Tarea111Tarea111
Tarea111
 
Intro lógica de predicados
Intro lógica de predicadosIntro lógica de predicados
Intro lógica de predicados
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Unidad I Lenguaje V2 curso Compiladores.pdf
Unidad I Lenguaje V2 curso Compiladores.pdfUnidad I Lenguaje V2 curso Compiladores.pdf
Unidad I Lenguaje V2 curso Compiladores.pdf
 
Guia 2 expresiones algebraicas2013
Guia 2 expresiones algebraicas2013Guia 2 expresiones algebraicas2013
Guia 2 expresiones algebraicas2013
 
Lenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajesLenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajes
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticas
 
lenguajes y_gramaticas
lenguajes y_gramaticaslenguajes y_gramaticas
lenguajes y_gramaticas
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
Expresiones regulares y grámaticas regulares ariel acosta
Expresiones regulares y grámaticas regulares ariel acosta Expresiones regulares y grámaticas regulares ariel acosta
Expresiones regulares y grámaticas regulares ariel acosta
 
Bloque 1
Bloque 1Bloque 1
Bloque 1
 
Presentación 2
Presentación 2Presentación 2
Presentación 2
 
Lógica
Lógica Lógica
Lógica
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (13)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Automatas

  • 1. Autómatas y Lenguajes Formales Una breve introducción Este tema es básico para la construcción y programación de maquinas de cualquier tipo1 que deben realizar tareas repetitivas, y que reaccionan apropiadamente ante cualquier situación diferente a la usual, que pueda presentarse. Por ejemplo, supongamos que en una embotelladora se tiene un maquina electrónica para colocar las etiquetas a los botellas que viajan en una banda transportadora. Esta máquina debe realizar unas cuantas tareas en forma repetitiva, básicamente tomar una etiqueta y pegarla sobre el botella que vaya llegando, pero, ¿qué debe hacer la máquina cuando no lleguen botellas? o ¿cuando se acaben las etiquetas? Esto debió haber sido resuelto en el momento del diseño y programación de la misma, y para eso, y otras cosas más, sirven estos 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, el objetivo es desarrollar una teoría bastante general, de tal manera que estos temas se puedan aplicar en diversidad de situaciones. Todos sabemos lo que ocurre cuando programamos en algún lenguaje, como C o C#, si una instrucción se escribe correctamente el compilador la acepta y la procesa, pero en caso que no sea así se informa que existe un error antes de generar el archivo compilado. Quien se encarga, en este caso, de revisar las instrucciones y verificar que todo este bien escrito, para que el compilador 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 facilita el 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 es necesario, antes, conocer algunos formalismos que le dan cierto orden a todo este cuento. (Voy a hablar de ellos solo en los términos de este escrito, que trabaja con autómatas que procesan cadenas de texto). Alfabeto Es un conjunto de símbolos que sirven para construir palabras (llamadas frecuentemente cadenas). Los dos ejemplos más conocidos de alfabetos que nosotros utilizamos, son las letras del alfabeto español a, b, c, e, f, …, z que permitieron, entro otros, escribir el contenido de este artículo. También están los diez dígitos decimales matemáticos que nos permiten construir cualquier número, 0, 1, 2, …., 9 Pero, resulta que, para complicarnos la vida, por que no pueden vernos yendo a la escuela felices y con ganas de aprender más y más sin necesidad de tanta simbología 1 Las máquinas de las que se habla en este documento pueden ser virtuales. Un compilador es un ejemplo de las llamadas máquinas virtuales.
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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