Documente Academic
Documente Profesional
Documente Cultură
Vocabulario tcnico
Los conceptos bsicos de smbolos, palabras, alfabetos y strings son comunes en la mayora de las descripciones de los autmatas. Estos son: Smbolo
Un dato arbitrario que tiene algn significado a o efecto en la mquina. A estos smbolos tambin se les llama "letras" o "tomos".[1] Palabra Una cadena finita formada por la concatenacin de un nmero de smbolos. Alfabeto Conjunto finito de smbolos. Un alfabeto se indica normalmente con , que es el conjunto de letras en un alfabeto. Lenguaje Un conjunto de palabras, formado por smbolos en un alfabeto dado. Puede o no puede ser infinito.
Clausura de Kleene
Un lenguaje se puede considerar como un subconjunto de todas las posibles palabras. El conjunto de todas las palabras puede, a su vez, ser considerado como el conjunto de todas las posibles concatenaciones de cadenas. Formalmente, este conjunto de todas las cadenas se llama en ingls free monoid. Se indica como * , y el superndice * se llama la estrella de Kleene.
Autmatas finitos
Formalmente, un autmata . finito (AF) puede ser descrito como una 5-tupla
Adems de ser capaz de alcanzar ms estados leyendo un smbolo, permite alcanzarlos sin leer ningn smbolo. Si un estado tiene transiciones etiquetadas con , entonces el AFND puede encontrarse en cualquier de los estados alcanzables por las transiciones , directamente o a travs de otros estados con transiciones . El conjunto de estados que pueden ser alcanzados mediante este mtodo desde un estado q, se denomina la clausura de q. Sin embargo, puede observarse que todos estos tipos de autmatas pueden aceptar los mismos lenguajes. Siempre se puede construir un AFD que acepte el mismo lenguaje que el dado por un AFND.
La Mquina de Turing
La mquina de Turing es una caja negra (tan simple como una mquina de escribir y tan compleja como un ser humano) capaz no slo de leer y escribir un alfabeto de smbolos finito a partir de una cantidad finita pero muy grande de cinta de papel, sino de modificar su propia configuracin o "estado mental". La mquina de Turing se convirti en un instrumento ideal para probar si un procedimiento es efectivamente computable o no.
Funcionamiento
Una mquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT despus de algunos pasos. Consiste en una cabeza de lectura/escritura que examina una dimensin posiblemente infinita de una cinta bidireccional dividida en cuadros cada uno de los cuales est identificado con un 0 o un 1. Para llevar a cabo algn algoritmo, la mquina se inicializa en algn estado interno arbitrario. A continuacin, se pone en marcha y la mquina lee el bit que se encuentra en ese momento en su interior y ejecuta alguna operacin con ese bit (lo cambia o no, dependiendo de su estado interno). Despus se mueve hacia la derecha o hacia la izquierda, y vuelve a procesar el siguiente bit de la misma manera. Al final se para, dejando el resultado al lado izquierdo
Por ejemplo.
Una instruccin tpica podra ser: 01->11011i La traduccin es como sigue: si la mquina se encuentra en el estado interno 0 y lee 1 en la cinta, entonces pasar al estado interno 1101 (13), escribir 1 y se mover hacia la izquierda un paso (la cinta se mover hacia la derecha). A continuacin es conveniente inventar una notacin para la secuencia del INPUT. Esta notacin se llama notacin binaria expandida. Consiste en cambiar la secuencia original binaria por otra construida de la siguiente forma: el 0 se cambia por 0 y el 1 por 10 y se ponen un cero a la izquierda y/o a la derecha del resultado si empieza o acaba en 1 respectivamente.
As por ejemplo, el nmero 13 que en binario es 1101 es en binario expandido 1010010 con un cero delante por esta ltima regla 01010010. Para volver al original hay que contraer el binario expandido con la siguiente regla: Empezamos a leer por la izquierda el binario expandido. Cuando encontremos un 0 tomamos nota de cuntos 1 hay hasta llegar al siguiente 0 y lo escribimos. Si encontramos que hay dos 0 seguidos, apuntaramos un 0 porque no habra ningn 1. Con el 13 se hara: el primer 0 se encuentra en la primera posicin y el siguiente 0 est en la posicin 3. Entre los dos solo hay un 1. Lo anotamos. Seguidamente hay un 1, y despus un 0, entonces apuntamos 1 porque hay un 1 entre medias de ellos. Esto es lo que se hace sucesivamente y encontramos: 1101 que es el nmero original. Cualquier funcin que pueda ser considerada de "modo natural" como computable puede ser computada por una mquina universal de Turing. Si bien la conjetura no ha podido ser demostrada, hasta el momento ha resistido todos los intentos de encontrar un contraejemplo. Compatibilidad y no Computabilidad Una de las cuestiones ms estudiadas en la teora de la computabilidad ha sido la posibilidad de construir algoritmos que nos determinen si un determinado algoritmo posee o no una determinada propiedad. En un principio se fueron obteniendo demostraciones individuales de la no computabilidad de cada una de estas cuestiones, de forma que se tena la sensacin de que casi cualquier pregunta interesante acerca de algoritmos era no computable. A pesar de esto, y como consecuencia de la existencia de un programa universal hay otras muchas cuestiones interesantes que se han demostrado computables. El identificar los problemas que son computables y los que no lo son tiene un considerable inters, pues indica el alcance y los lmites de la computabilidad, y as demuestra los lmites tericos de los ordenadores. Adems de las cuestiones sobre algoritmos, se han encontrado numerosos problemas menos "generales" que han resultado ser no computables. Como Ejemplo citamos: Dcimo problema de Hilbert. Una ecuacin diofntica es la ecuacin de los ceros enteros de un polinomio con coeficientes enteros. Se pregunta si hay un procedimiento efectivo que determine si una ecuacin diofntica tiene o no solucin. Por otro lado, son muchos los problemas interesantes que se han demostrado computables. Todas las funciones construidas por recursividad primitiva o minimalizacin a partir de funciones calculables resultan ser calculables como consecuencia de los trabajos de Church y Turing.
Tesis de Church-Turing
Existe un obstculo importante al probar que no existe un algoritmo para una tarea especfica. Primero es necesario saber con exactitud qu significa algoritmo. Cada uno de los matemticos mencionados anteriormente haba superado este obstculo, definiendo "algoritmo" de una manera diferente. Gdel defini un algoritmo con una secuencia de reglas para formar funciones matemticas complicadas a partir de funciones matemticas ms simples. Church utiliz un formalismo denominado calculo lambda, mientras que Turn emple su mquina y defini un algoritmo como cualquier conjunto de instrucciones para su mquina simple. Si algo puede calcularse a partir de un algoritmo definido de una forma, entonces tambin puede calcularse a partir de un algoritmo definido en cualquiera de las otras formas. Conforme los investigadores se dieron cada vez ms cuanta de esta equivalencia en la dcada de 1930, se crey en forma amplia en las dos proposiciones que siguen: Todas las definiciones razonables de algoritmos conocidas hasta el momento son equivalentes. Cualquier definicin razonable de algoritmo que se llegue a dar, a su vez ser equivalente a definiciones ya conocidas.
Estas creencias han llegado a denominarse Tesis Church-Turing en honor a dos de los primeros trabajadores que se dieron cuenta de la naturaleza fundamental del concepto que haban definido juntos. Hasta el momento, no ha surgido evidencia en contra y se acepta ampliamente la Tesis de Church-Turing.
Autmatas Finitos
Definicin.
En primer lugar, vamos a definir lo que se entiende por autmata finito. Una posible definicin de autmata finito es la siguiente:
Autmata Finito
Un autmata finito (AF) o mquina de estado finito es un modelo matem tico que realiza cmputos en forma automtica sobre una entrada para producir una salida.
Este modelo est conformado por un alfabeto, un conjunto de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una funcin de transicin, que recibe en un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a medida que el autmata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptacin, que representa la salida. El hecho de que todos los conjuntos sean finitos, le otorga a este elemento el atributo de finito. Tambin se puede desprender de la definicin que un autmata finito es un tipo especial de mquina secuencial, en la cual no existen seales de salida como tal sino que slo hay seales de entrada y estado, como suceda en la mquina de Moore. Debido a este motivo, las mquinas secuenciales cumplen todos los axiomas de los autmatas finitos. Siendo sta la razn por la cual empezaremos el estudio de la teora desarrollada alrededor de los autmatas finitos. Al igual que en las mquinas secuenciales, la representacin de los autmatas finitos puede llevarse a cabo de dos formas diferentes: mediante un diagrama de estados; o mediante una tabla de estados.
Diagramas de Estado.
En los diagramas de estado podemos encontrar dos elementos: estados y transiciones. Los estados son las letras o smbolos enmarcados (dentro de un crculo generalmente). En cambio, las transiciones son arcos dirigidos que llevan asociadas una/s etiquetas. Los estados se pueden definir como las posibles situaciones a las que puede llegar el autmata que estemos describiendo. Dentro de estos estados podemos distinguir entre estados estables y estados inestables. Cuando existe alguna transicin para la cual se llega al mismo estado desde el que se parte, se dice que es un estado estable. Mientras que si no existe ninguna transicin que cumpla la condicin anterior, se dice que es un estado inestable. En el caso de la mquina de ventas de refresco, los posibles estados pueden ser: No hay dinero en el interior de la mquina Existe el dinero suficiente para sacar un refresco En el interior de la mquina estn cada una de las cantidades permitidas. Por ejemplo si slo se admiten monedas de 10, 20 y 50 c., el refresco cuesta 60 c. y no se devuelve dinero, las cantidades pueden ser 10, 20, 30, 40, 50 y 60 c.
Las transiciones correspondern a los eventos en las entradas que producirn los cambios de estado en el sentido de la flecha del arco.
El cambio de estado se producir si la condicin de entrada coincide con la etiqueta asociada a dicha transicin. De nuevo, en el caso de la mquina de refresco, las posibles condiciones de entrada podran ser: Introducir las diferentes monedas permitidas: 10, 20 y 50 c. Pulsar el botn para obtener el refresco. As pues, una posible parte del diagrama del autmata se puede ver en la figura 2.1:
Dicha porcin del diagrama se leera del siguiente modo: Si no hay dinero almacenado en la mquina (estado de 0c.) e introducimos una moneda de 10 c. (evento), pasaremos a la situacin de tener almacenado 10 c. (estado de 10c.)... Si realizamos la descripcin a travs de la tabla de estado, la porcin anterior del diagrama se mostrara en la tabla 2.1.
Tabla 2.1. Porcin de la tabla de estado correspondiente a la mquina de refresco. Por lo tanto, un posible diagrama de estado para la mquina de refresco se muestra en la figura 2.2. Tabla 2.1. Porcin de la tabla de estado correspondiente a la mquina de refresco. Por lo tanto, un posible diagrama de estado para la mquina de refresco se muestra en la figura 2.2. En este diagrama distinguimos 8 situaciones posibles: cada una de las cantidades que se pueden almacenar segn las monedas aceptadas (0, 10, 20, 30, 40, 50 y 60 c.); y una situacin en la que ya es posible dar el refresco.
Los eventos involucrados en dicha mquina sern la insercin de cada una de las monedas (10, 20 y 50 c.), y pulsar el botn de refresco. Las transiciones de estado son las siguientes: Cuando introduzcamos una moneda, pasaremos al estado con la cantidad actualizada; pero en el caso de que sobrepasemos la cantidad del refresco, nos quedaremos en los 60 c. ya que no se devuelve cambio y no es necesario almacenar dicha cantidad superior. Cuando pulsemos el botn de refresco, B, no suceder nada a menos que nos encontremos en el estado de 60 c., en cuyo caso se dar el refresco.
Teoremas y Definiciones.
Como nuestro inters est centrado en el anlisis y diseo, vamos a orientar los teoremas y definiciones de la teora de autmatas finitos hacia los sistemas secuenciales. Una vez realizada esta aclaracin, en esta teora encontramos las siguientes definiciones:
Equivalencia: Una mquina M es equivalente a otra M*, si para cualquier secuencia de entrada es posible encontrar algn estado inicial tal que la secuencia de salida sea la misma. Esta relacin es denotada por M = M*. Compatibilidad: Una mquina M es compatible con otra M*, si para cualquier secuencia de entrada es posible encontrar un estado inicial tal que la secuencia de salida sea la misma, siempre y cuando sta est especificada. Esta relacin se denota por M ~ M*.
Figura 2.3.- Esquema de una mquina trituradora. Esta mquina es un ejemplo claro de mquina incompleta ya que los sensores de presencia S1 y S2 nunca pueden tener la combinacin S1 S2 = 1 0, ya que es fsicamente imposible. Por lo tanto, para esta combinacin de entrada, ni la salida ni el prximo estado estarn especificado porque no importar cuales sean al no llegar nunca dicha combinacin.
No obstante, podemos encontrarnos mquinas en los que la salida s estar especificada pero el prximo estado no, y viceversa. Segn las definiciones de compatibilidad y de equivalencia, se comprueba el siguiente teorema: Teorema 1. Se verifica que si las mquinas M y M* estn especificadas de forma: completa: M = M* <=> M ~ M* Incompleta: M = M* => M ~ M*
Demostracin:
De las definiciones de equivalencia y compatibilidad se desprende que la primera engloba a la segunda por lo que la direccin hacia la derecha de las implicaciones queda demostrada. En cuanto a la direccin de la izquierda, slo se puede verificar a priori cuando las dos definiciones sean iguales, caso que slo se puede dar cuando se trata de mquinas completamente especificadas.
Agrupacin
Los parntesis pueden usarse para definir el mbito y precedencia de los dems operadores. Por ejemplo, "(p|m)adre" es lo mismo que "padre|madre", y "(des)?amor" casa con amor y con desamor. Los constructores pueden combinarse libremente dentro de la misma expresin, por lo que "H(ae?|)ndel" equivale a "H(a|ae|)ndel". La sintaxis precisa de las expresiones regulares cambia segn las herramientas y aplicaciones consideradas, y se describe con ms detalle a continuacin. Su utilidad ms obvia es la de describir un conjunto de cadenas, lo que resulta de utilidad en editores de texto y aplicaciones para buscar y manipular textos. Muchos lenguajes de programacin admiten el uso de expresiones regulares con este fin. Por ejemplo: Perl tiene un potente motor de expresiones regulares directamente incluido en su sintaxis. Las herramientas proporcionadas por las distribuciones de Unix (incluyendo el editor sed y el filtro grep) fueron las primeras en popularizar el concepto de expresin regular.
Aplicaciones
Numerosos editores de texto y otras utilidades utilizan expresiones regulares para buscar y reemplazar patrones en un texto y reemplazar.
EditPad Pro: permite realizar bsquedas con expresiones regulares sobre archivos y las muestra por medio de cdigo de colores para facilitar su lectura y comprensin.
OBS: De las herramientas mencionadas con anterioridad se utilizan el EditPad Pro y el .Net Framework para dar ejemplos, aunque es posible utilizar las expresiones regulares con cualquier combinacin de las herramientas mencionadas. Aunque en general las Expresiones Regulares utilizan un lenguaje comn en todas las herramientas, las explicaciones prcticas acerca de la utilizacin de las herramientas y los ejemplos de cdigo deben ser interpretados de forma diferente. Tambin es necesario hacer notar que existen algunos detalles de sintaxis de las expresiones regulares que son propietarios del .Net Framework que se utilizan en forma diferente en las dems herramientas de programacin. Cuando estos casos se den se har notar en forma explcita para que el lector pueda buscar informacin respecto a estos detalles en fuentes adicionales. En el futuro se incluirn adicionalmente ejemplos de otras herramientas y lenguajes de programacin. Expresiones regulares como lenguaje Para especificar opciones dentro del texto a buscar se utiliza un lenguaje o convencin mediante el cual se le transmite al motor de bsqueda el resultado que se desea obtener. Este lenguaje le da un significado especial a una serie de caracteres. Por lo tanto cuando el motor de bsqueda de expresiones regulares encuentre estos caracteres no los buscar en el texto en forma literal, sino que buscar lo que los caracteres significan.
A estos caracteres se les llama algunas veces "meta-caracteres". A continuacin se listan los principales meta-caracteres y su funcin y como los interpreta el motor de expresiones regulares.
\d Representa un dgito del 0 al 9. \w Representa cualquier carcter alfanumrico. \s Representa un espacio en blanco. \D Representa cualquier carcter que no sea un dgito del 0 al 9. \W Representa cualquier carcter no alfanumrico. \S Representa cualquier carcter que no sea un espacio en blanco. \A Representa el inicio de la cadena. No un carcter sino una posicin. \Z Representa el final de la cadena. No un carcter sino una posicin. \b Marca el inicio y el final de una palabra. \B Marca la posicin entre dos caracteres alfanumricos o dos no-alfanumricos.
OBS Algunos lenguajes, como Java, asignan su propio significado a la barra invertida, por lo que deber repetirse para que sea considerada una expresin regular (ej. String expresion="\\d.\\d" para indicar el patrn \d.\d).