maquina turing

76
MAQUINA TURING La Máquina de Turing (MT) fue introducida por Alan M. Turing en 1936, y puede considerarse como un modelo abstracto que formaliza la idea Intuitiva de algoritmo. (MT) Es un modelo computacional que realiza una lectura/escritura de manera automática sobre una entrada llamada cinta, generando una salida en esta misma. Este modelo está conformado por un alfabeto de entrada y uno de salida, un símbolo especial llamado blanco (normalmente b, Δ o 0), un conjunto de estados finitos y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una función de transición, que recibe un estado inicial y una cadena de caracteres (la cinta, la cual es finita por la izquierda) pertenecientes al alfabeto de entrada. Luego va leyendo una celda de la cinta , borrando el símbolo , escribir el nuevo símbolo perteneciente al alfabeto de salida y finalmente avanza a la izquierda o a la derecha (solo una celda a la vez), repitiendo esto según se indique en la función de transición, para finalmente detenerse en un estado final o de aceptación, representando así la salida. Una máquina de Turing con una sola cinta puede ser definida como una 7-tupla ; donde:

Upload: hector-varela

Post on 24-Sep-2015

65 views

Category:

Documents


10 download

DESCRIPTION

descripcion de automatas, maquina turing, automatas, inteligencia artificial

TRANSCRIPT

MAQUINA TURING

La Mquina de Turing (MT) fue introducida por Alan M. Turing en 1936, y puede considerarse como un modelo abstracto que formaliza la idea Intuitiva de algoritmo.(MT) Es un modelo computacional que realiza una lectura/escritura de manera automtica sobre una entrada llamada cinta, generando una salida en esta misma. Este modelo est conformado por un alfabeto de entrada y uno de salida, un smbolo especial llamado blanco (normalmente b, o 0), un conjunto de estados finitos y un conjunto de transiciones entre dichos estados.Su funcionamiento se basa en una funcin de transicin, que recibe un estado inicial y una cadena de caracteres (la cinta, la cual es finita por la izquierda) pertenecientes al alfabeto de entrada. Luego va leyendo una celda de la cinta , borrando el smbolo , escribir el nuevo smbolo perteneciente al alfabeto de salida y finalmente avanza a la izquierda o a la derecha (solo una celda a la vez), repitiendo esto segn se indique en la funcin de transicin, para finalmente detenerse en un estado final o de aceptacin, representando as la salida.

Una mquina de Turing con una sola cinta puede ser definida como una 7-tupla ;

donde:

es un conjunto finito de estados.

es un conjunto finito de smbolos distinto del espacio en blanco,denominado alfabeto de mquina o de entrada.

es un conjunto finito de smbolos de cinta, denominado alfabeto de cinta.

es el estado inicial.

es un smbolo denominado blanco, y es el nico smbolo que se puede repetir un nmero infinito de veces.

es el conjunto de estados finales de aceptacin.

Es una funcin parcial denominada funcin de transicin,dondees un movimiento a la izquierda yes el movimiento a la derecha.

La mquina de Turing puede considerarse como un autmata capaz de reconocer lenguajes formales. En ese sentido es capaz de reconocer los lenguajes recursivamente enumerables, de acuerdo a la jerarqua de Chomsky.

Su potencia es, por tanto, superior a otros tipos de autmatas, como el autmata finito, o el autmata con pila, o igual a otros modelos con la misma potencia computacional. Las maquinas de Turing se pueden representar mediante grafos particulares, tambin llamados diagramas de estados finitos, de la siguiente manera:

Esta Mquina de Turing est definido sobre el alfabeto ={a,b,c}, posee el conjunto de estados

Q={qo,q1,q2,q3,q4,q5,q6}, con las transiciones que se pueden ver. Su estado inicial es q1 y el estado final es q0, el lenguaje de salida ={X,Y,Z,B} siendo B el smbolo denominado Blanco.

Esta Mquina reconoce la expresin regular de la forma {a^n b^n c^n,n>=0} .

*Los estados se representan como vrtices, etiquetados con su nombre en el interior.

*Una transicin desde un estado a otro, se representa mediante una arista dirigida que une a estos vrtices, y esta rotulada por smbolo que lee el cabezal/smbolo que escribir el cabezal, movimiento del cabezal .

*El estado inicial se caracteriza por tener una arista que llega a l, proveniente de ningn otro vrtice.

*El o los estados finales se representan mediante vrtices que estn encerrados a su vez por otra circunferencia.

COMO FUNCIONA UNA MAQUINA DE TURING?

Una mquina de Turing es un dispositivo que transforma un INPUT en un OUTPUT despus de algunos pasos. Tanto el INPUT como el OUPUT constan de nmeros en cdigo binario (ceros y unos). En su versin original la mquina de Turing consiste en una cinta infinitamente larga con unos y ceros que pasa a travs de una caja.

La caja es tan fina que solo el trozo de cinta que ocupa un bit (0 1) est en su interior. La mquina tiene una serie de estados internos finitos que tambin se pueden numerar en binario. 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.

11011iUna instruccin tpica podra ser: 01

VARIANTES DE LA MAQUINA DE TURING

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.Veamos con el 13 cmo 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.

QUE SON Y COMO FUNCIONAN?

Una mquina de Turing consiste, bsicamente, en una cinta infinita, dividida en casillas. Sobre esta cinta hay un dispositivo capaz de desplazarse a lo largo de ella a razn de una casilla cada vez. Este dispositivo cuenta con un cabezal capaz de leer un smbolo escrito en la cinta, o de borrar el existente e imprimir uno nuevo en su lugar. Por ltimo, contiene adems un registro capaz de almacenar un estado cualquiera, el cual viene definido por un smbolo.

Los smbolos que definen el estado del dispositivo no tienen por que coincidir con los smbolos que se pueden leer o escribir en la cinta. En los programas presentados en el artculo, los posibles smbolos a leer o escribir en la cinta son el 0 y el 1, y los posibles estados se representan con letras maysculas. En el emulador , existe un cambio en la representacin del estado , usando para ello los nmeros del 0 al 99, para permitir un mayor nmero de ellos. La mquina tiene un funcionamiento totalmente mecnico y secuencial. Lo que hace es leer el smbolo que hay en la casilla que tiene debajo. Despus toma el smbolo del estado en que se encuentra. Con estos dos datos accede a una tabla, en la cual lee el smbolo que debe escribir en la cinta, el nuevo estado al que debe pasar y si debe desplazarse a la casilla izquierda o derecha.

Ejemplo Definimos una mquina de Turing sobre el alfabeto {0,1}, donde 0 representa el smbolo blanco. La mquina comenzar su proceso situada sobre un smbolo 1 de una serie.

La mquina de Turing copiar el nmero de smbolos 1 que encuentre hasta el primer blanco detrs de dicho smbolo blanco. Es decir , situada sobre el 1 situado en el extremo izquierdo, doblar el nmero de smbolos 1, con un 0 en medio. As, si tenemos la entrada 111 devolver 1110111, con 1111 devolver 111101111, y sucesivamente.

El conjunto de estados es {s1,s2,s3,s4,s5} y el estado inicial es s1.La tabla que describe la funcin de transicin es la siguiente:

El funcionamiento de una computacin de esta mquina se puede mostrar con el siguiente ejemplo (en negrita se resalta la posicin de la cabeza lectora/escritora):

Vemos que esta mquina no hace gran cosa. Sin embargo, una mquina de Turing puede hacer cosas tiles, tales como suma r dos nmeros, multiplicarlos, copiarlos, etc. Disponiendo de una mquina con el suficiente nmero de estados, podramos hacer con ella cualquier operacin que un ordenador normal pudiese realizar.

Las mquinas de Turing plantean una deduccin bastante curiosa: dado que en ellas se puede realizar cualquier trabajo computable , es posible programarlas para que simulen el comportamiento de un potente ordenador. Y como una mquina de Turing puede ser codificada en cualquier ordenador, por pequeo que sea, sera posible (si disponemos de memoria suficiente, claro) emular en nuestro ordenador de casa una mquina de Turing que simule un superordenador. Esto significa que todos los ordenadores pueden realizar exactamente el mismo tipo de tareas , y que los clculos que pueda realizar el ms grande los puede llevar a cabo tambin el ms pequeo. La nica diferencia sera, obviamente, la velocidad.

LA TEORA DE AUTMATASLa teora de autmatas es el estudio de dispositivos de clculo abstractos, es decir, de las mquinas. Antes de que existieran las computadoras, en la dcada de los aos treinta, A. Turing estudi una mquina abstracta que tena todas las capacidades de las computadoras de hoy da, al menos en lo que respecta a lo que podan calcular. El objetivo de Turing era describir de forma precisa los lmites entre lo que una mquina de clculo poda y no poda hacer; estas conclusiones no slo se aplican a lasmquinas abstractas de Turing, sino a todas las mquinas reales actuales.En las dcadas de los aos cuarenta y cincuenta, una serie de investigadores estudiaron las mquinas ms simples, las cuales todava hoy denominamos autmatas finitos. Originalmente, estos autmatas se propusieron para modelar el funcionamiento del cerebro y, posteriormente, resultaron extremadamente tiles para muchos otros propsitos, como veremos en la Seccin 1.1. Tambin a finales de la dcada de los cincuenta, el lingista N. Chomsky inici el estudio de las gramticas formales. Aunque no son mquinas estrictamente, estas gramticas estn estrechamente relacionadas con los autmatas abstractos y sirven actualmente como base de algunos importantes componentes de software, entre los que se incluyen componentes de los compiladores.En 1969, S. Cook ampli el estudio realizado por Turing sobre lo que se poda y no se poda calcular. Cook fue capaz de separar aquellos problemas que se podan resolver de forma eficiente mediante computadora de aquellos problemas que, en principio, pueden resolverse, pero que en la prctica consumen tanto tiempo que las computadoras resultan intiles para todo excepto para casos muy simples del problema. Este ltimo tipo de problemas se denominan insolubles o NP-difciles. Es extremadamente improbable que incluso la mejora de carcter exponencial en la velocidad de clculo que el hardware de computadora ha experimentado (Ley de Moore) tenga un impacto significativo sobre nuestra capacidad para resolver casos complejos de problemas insolubles.

Definiciones bsicas:

Un alfabeto es el conjunto de caracteres o smbolos que se utilizan en un lenguaje. A estos smbolos les llamaremos Variables terminales o simplemente terminales.

Una cadena o cuerda consiste de la concatenacin de terminales.

La concatenacin es la operacin de poner un terminal enseguida de otro, esta obviamente no es una operacin conmutativa aunque s es asociativa.

Un Lenguaje es un conjunto de cuerdas formadas concatenando terminales de manera que es un subconjunto de la cerradura de alfabeto bajo la operacin de concatenacin.

Una gramtica es el conjunto de reglas que definen si una cadena pertenece al Lenguaje o no.

AUTOMATAS FINITOS

Un Autmata finito (AF) es una mquina de estados que determina si una cadena pertenece a o no al Lenguaje. Para decidir si la cadena pertenece al lenguaje lee los caracteres que la forman de izquierda a derecha (A esto se le llama "La entrada") y con esta informacin decide si debe permanecer en el estado en el que se encuentre o cambiarse a otro estado. El AF tiene un solo estado inicial que es el estado en el que se encuentra cundo empieza a leer la entrada y puede tener varios estado finales. Si cuando termine de leer la entrada se encuentra en uno de estos estados finales, entonces la entrada es una cadena que pertenece al Lenguaje. Si cuando termine de leer la entrada no queda el autmata en uno de los estados finales, entonces la entrada no es una cadena que forme parte del lenguaje. Formalmente, Un Autmata finito es un quinteto ordenado

Donde:

Q.- Denota al conjunto de estados del AF

.-Denota al alfabeto

.-Mapeo de transicin entre estados

.- Estado inicialF.- Conjunto de estados finales

La parte medular del autmata radica en el mapeo de transicin entre estados. Se trata de una serie de reglas que indican cuando el autmata cambia de un estado a otro dependiendo del terminal ledo de la entrada. Estas son de la forma

Esta regla nos indica que si el autmata se encuentra en el estado q y en la entrada est leyndose el terminal 'a', se debe cambiar al estado p.

Ejemplo: El lenguaje formado por todas las cadenas formadas de 0's y 1's donde no existan dos 0's juntos se puede expresar de manera exhaustiva.

L={0,1,01,10,11,010,011,101,110,111,0101,1010,0111,1011,1101,1110,1111,...}

Cuando se describe un lenguaje de esta forma, se procura poner primero la cadena de longitud cero (Tambin conocida como cadena vaca o ) si es que esta forma parte del lenguaje, luego se listan las cadenas de longitud uno, enseguida todas las de longitud dos y as sucesivamente.

Para identificar cuando una cadena de cierta longitud pertenece a este lenguaje se puede utilizar el siguiente AF.

Figura 1 Autmata finito del Ejemplo 1

Como se puede apreciar en la Figura 1. El autmata consta de cuatro estados de los cuales 2 son estado Finales, estos se indican en la figura con un crculo dentro del crculo que representa al estado. Solo un estado puede ser inicial, de manera que se indica con una flecha cual de todos es el estado inicial. Este por cierto pudiera ser estado final tambin si por ejemplo el lenguaje incluye la cadena vaca.

El autmata de la figura 1 se puede describir tambin de la siguiente manera:

Donde:

AUTOMATAS FINITOS INDETERMINISTAS

Un autmata como el del ejemplo 1 es del tipo determinista, esto quiere decir que cumple con las caractersticas de una funcin inyectiva y sobreyectiva. Y decimos que :

Sin embargo, existen autmatas finitos en los que no cumple con los requisitos para poderla llamar funcin, es entonces simplemente una relacin entre el conjunto de parejas ordenadas del conjunto y el conjunto . Por eso le llamamos mapeo.

Los autmatas finitos indeterministas no saben en todos los estados a que estado se deben cambiar al leer algn terminal de la entrada de forma inequvoca. Por ejemplo,

Indica que si el autmata se encuentra en el estado q y lee el terminal "a" de la entrada se puede cambiar al estado p pero tambin pudiera cambiarse al estado m o al n.

Entonces, los Autmatas indeterministas tienen que intentar alguna alternativa y si no terminan en un estado final cuando hayan barrido toda la entrada deben realizar "Back-Track" para usar otra de las alternativas posibles ah donde quiera que hayan tenido mas de una. De esta manera solo rechazan una cuerda cuando se han agotado todas las posibilidades. A diferencia de los Autmatas Deterministas decimos que:

Tal subconjunto de Q puede ser incluso el conjunto vacio

Ejemplo 2 Un Autmata finito Indeterminista que reconoce cadenas de 0's y 1's que tengan al menos dos 1's consecutivos en alguna parte, es decir, el lenguaje:

L={11,011,110,111,0011,0110,0111,1100,1101,1110,1111,...}

Figura2. Autmata Finito Indeterminista

El Autmata de la figura 2, tiene la siguiente descrpcin formal:

Donde:

EQUIVALENCIA ENTRE AUTOMATAS FINITOS DETERMINISTAS E INDETERMINSTAS.

Es evidente que todo autmata determinsta es tambin indeterminsta. Por otra parte, por cada AF indeterminista se puede construir uno determinsta como se ver en seguida. Entonces podemos decir que unos y otros son equivalentes puesto que reconocen el mismo lenguaje, el indeterminismo no introduce mayor capacidad de reconocimiento.

Los autmatas indeterministas son ms fciles de disear, sin embargo son ms lentos operando, por lo cual conviene tener un mtodo para convertir a la AF's indeterministas en determnistas, el mtodo consiste en generar el conjunto de estados a los que puede cambiar el autmata a partir de un estado en particular para cierto terminal. Tal conjunto de estados del AF indeterminista conforma un solo estado en el AF determinista que puede ser etiquetado como que serian los estados en los que el AF indeterminista podr aestar. Este autmata pretende entonces emular al original. Formalmente, el AF indeterminista:

Se convierte en el AF determinista

Donde:

F' es el Conjunto de estados de Q' que contengan al menos un estado de F

Y

Aqu

Ejemplo 3: Convertir el Autmata del ejemplo 2 en determinista

El Autmata determinista sera

Donde :

Puesto que

Ya que

Debido a que

Puesto que

Ya que

Debido a que

Ntese que los estados finales de M' son todos aquellos en que incluyan algn estado final de M

Para evitar la determinacin de estados que queden desconectados del resto del autmata y adems trabajar de balde se recomienda solo determinar las salidas de aquellos estados que ya han demostrado que se puede hacer una transicin hacia ellos, de manera que el orden en el que se vayan apareciendo se trabajaran despus y si no aparecen nunca ya no se trabajar con ellos. Los AF deterministicos obtenidos a partir de AF indeterministas tienen ms estados y transiciones que estos ltimos, sin embargo, normalmente no crecen tan desmesuradamente como podra pensarse, en el ejemplo Anterior, de un autmata indeterminista de 3 estados se obtuvo uno determinista de 4 estados y no de 8 ( La cardinalidad del conjunto potencia de un conjunto de n elementos es de ).

AF's CON TRANSICIONES

Con el objeto de facilitar el diseo de AF's, los AF's con transiciones permiten transiciones entre estados sin necesidad de leer ningn terminal de la entrada, o lo que es lo mismo, leyendo la cadena vacia.

Ejemplo 4.- El siguiente autmata reconoce numeros de punto flotante de C

Fig 3. AF que reconoce numeros de punto flotante del lenguaje C

Para llevar el rastro de las transiciones que dar qualquier AF se puede generalizar para que pueda recibir cadenas. A este mapeo modificado le llamamos y se define como

Para reconocer por ejemplo la cadena 3E4 el autmata del ejemplo 4

Observe como la transicin entre y no consumi ningn terminal de la entrada, tampoco la transicin entre y .

conviene generalizar ahora para que acepte un conjunto de estados en lugar de un solo estado, es decir:

De manera que:

De nuevo, la inclusin de transiciones que no consumen entrada no aumenta el poder de los AF's, solamente los vuelve mas fciles de disear, esto implca que por cada AF con transiciones de cadena nula, existe un autmata sin transiciones de cadena nula equivalente.

Un AF indeterminista sin transiciones- M' se puede obtener a partir de un AF indeterminista con transiciones- M de la siguiente manera:

Sea

Entonces:

Donde:

Lo cual quiere decir que el estado q del autmata M' tendr las mismas transiciones a otros estados como el del autmata M mas las transiciones hacia las que se puede ir del estado q en M utilizando solamente transiciones-

Adems

En donde es el conjunto de estados a donde se puede ir el autmata M desde el estado q utilizando solamente transiciones

Ejemplo 5:

Convertir el autmata del ejemplo 4 a un autmata sin transiciones

El autmata si transiciones se construye analizando a cuales estados se puede ir leyendo una cadena formada por un smbolo del alfabeto concatenado con antes o despus tantas veces como sea necesario para llegar a otro estado. Por ejemplo, estando en el estado podemos ir a los estados y consumiendo de la entrada solamente el simbolo E puesto que puede cambiar de a si necesidad de consumir entrada, luego a consumiendo la E y finalmente a sin consumir.

Analizando de esta manera todos los casos obtenemos:

El autmata queda entonces:

EXPRESIONES REGULARES

Sean y conjuntos de cadenas de , la concatenacin de y denotada es el conjunto:

Ejemplo 6:

Si y

Entonces

Tambin se puede concatenar un Conjunto consigo mismo, en cuyo caso decimos .

Definimos la cerradura de Kleene de un conjunto de la siguiente manera:

Donde

Es decir, el conjunto formado por cualesquier numero de concatenaciones de cadenas del conjunto L.

La cerradura positiva se define como :

Entonces:

Las expresiones regulares y los conjuntos que estas denotan se pueden definir recursvamente como sigue:

la cadena como expresion regular denota al conjunto , es decir el conjunto formado exclusvamente por la cadena

Si r y s son expresiones regulares, que denotan a los conjuntos R y S respectvamente, entonces (r+s), (rs) y r* son expresiones regulares que denotan a los conjuntos , y respectvamente.

Para ahorrar parentesis, se define la jerarqua de operadores como sigue:

a) La cerradura tiene mayor jerarqua que la concatenacin.b) La concatenacin tiene mayor jerarqua que la union.

Ejemplo 7. La exrpresin regular que denota el lenguaje del ejemplo 2, es decir aquel que tiene al menos dos unos consecutivos es:

(0+1)*11(0+1)*

A partir de expresiones regulares es posible cosntruir un NFA con transiciones- de la siguiente manera:

Si se utiliza como expresin regular que denota al Lenguaje que consta de solamente la cadena de un solo smbolo (precsamente ) entonces el autmata que reconoce ese lenguage es el que se muestra aqu:

Si r es una expresion regular que denota al mismo lenguaje que el que reconoce el autmata M y s es otra expresin regular que denota al mismo lenguaje que el que reconoce el autmata N, entonces el Autmata que reconoce el lenguaje que genera la expresion regular (r+s) es:

Si r es una expresion regular que denota al mismo lenguaje que el que reconoce el autmata M y s es otra expresin regular que denota al mismo lenguaje que el que reconoce el autmata N, entonces el Autmata que reconoce el lenguaje que genera la expresion regular (rs) es:

Si r es una expresion regular que denota al mismo lenguaje que el que reconoce el autmata M, entonces el autmata que reconoce el lenguaje denotado por es:

Ejemplo

El autmata que reconoce el lenguaje denotado por la expresin regular (0+1)*1 es

Para obtener una expresion regular equivalente a un FA, se procede como sigue:

Definiendo como la expresin regular que produce el lenguaje consistente de la cadenas que llevaran al autmata del estado i al j sin atravesar ningn estado superior al k. Entonces, la expresin regular que buscamos es:

Donde: i.- Estado inicial del autmata n .- Nmero de estados del autmata

Es decir, la union de reglas que generan cadenas que llevaran al autmata del estado inicial a algn estado final, permitiendose cruzar cualquier estado.

Para calcular cualquier podemos hacer uso de la siguiente recurrencia

en cualquier otro caso

Autmatas Finitos deterministas de dos direcciones: (2DFA)

Un 2DFA es un quinteto

Donde:

De manera que un 2DFA es un DFA que despues de cambiar de un estado a otro, se puede mover a la izquierda en la cinta de entrada en lugar de hacerlo siempre hacia la derecha como los FA's convencionales.

Una descripcin instantnea (ID) del 2DFA tiene la forma xqy donde x es la parte de la cadena de entrada que se encuentra a la iquierda de la "cabeza" de lectura del autmata, q es el estado en el que se encuentra el sutmata y y es la parte de la cadena de la entrada que est a la derecha de la cabeza de lectura. El carcter que leer el autmata es entonces el primero de y.

Entre dos instantneasconsecutivas se utiliza el smbolo para indicar la transicin de una ID a otra en un solo paso

Usamos para indicar que de una instantnea se puede llegar a otra en varios pasos

El lenguaje que reconoce un 2DFA es:

Ej. El siguiente 2DFA reconoce cadenas formadas de 0's y 1's donde no haya dos 1's consecutivos. Para hacerlo, recorre la cadena de entrada de iquierda a derecha y al encontrar el primer 1 cambia al estado para "recordar" que ya encontr un 1 y esta buscando el segundo 1 recorriendo la cadena de entrada a la derecha. Al encontrar el segundo 1 cambia al estado y cambia de sentido buscando ahora hacia la izquierda al menos un 0, si lo encuentra regresa al estado inicial y continua su recorrido hacia la derecha. Todos los estados son finales, es:

a) b)

c) d)

e) f)

Para la entrada 0100101

La secuencia de ID's sera:

El comportamiento del 2DFA puede observarse en el siguiente diagrama para la misma entrada, solo considerese que cuando el autmata cambia de sentido, en lugar de desplazarse permanece en el mismo lugar de la cinta de entrada pero lee el carcter de la izquierda si cambi su sentido hacia la izquierda y el de la derecha si cambi su sentido a la derecha en lugar desplazarse y de siempre leer el carcter de la derecha.

0100101

Las columnas de estados ubicadas entre smbolos de la cadena de entrada se conocen como secuencias cruzadas. Las secuencias vlidas deben cumplir con las siguientes caractersticas:

a) Deben ser de longitud imparb) Los estados "Derechos" deben ocupar posiciones imparesc) Los estados "Izquierdos" deben ocupar posiciones paresd) No debe haber estados repetidos en una secuencia

Los estados "Derechos" son aquellos a los que la transicin hacia ellos tiene implcito un avance hacia la derecha y los "Izquierdos" son los que al hacer una transicin hacia ellos simpre se hace un avance hacia la izquierda.

Decimos que la secuencia verifica por la derecha a la secuencia bajo el smbolo b cuando se asegura la posibilidad de que esas dos secuencias se ubicaran a la izquierda y derecha respectvamanete bajo el smbolo b en el diagrama de transiciones de estados para alguna cadena que forme parte del lenguaje que reconoce el autmata comenzando por la derecha. Decimos que la verifica por la izquierda si se comienzara por la izquierda.

Para averiguar cuales secuencias verifican a cuales bajo el smbolo b podemos seguir el siguiente procedimiento recursivo:

Base: La cadena nula concuerda por la iquierda y por la derecha a la cadena nula

1 Regla .- Si la secuencia concuerda con la secuencia por la derecha bajo el smbolo b y adems

Entonces, la secuencia concuerda con la secuencia por la derecha bajo el smbolo b.

2 Regla .- Si la secuencia concuerda con la secuencia por la izquierda bajo el smbolo b y adems

Entonces, la secuencia concuerda con la secuencia por la derecha bajo el smbolo b.

3 Regla .- Si la secuencia concuerda con la secuencia por la izquierda bajo el smbolo b y adems

Entonces, la secuencia concuerda con la secuencia por la izquierda bajo el smbolo b.

4 Regla .- Si la secuencia concuerda con la secuencia por la derecha bajo el smbolo b y adems

Entonces, la secuencia concuerda con la secuencia por la izquierda bajo el smbolo b.

Determinando cuales secuencias verifican a cuales por la derecha, podemos obtener un NFA a partir de un 2DFA.

Ejemplo, Obtengamos un NFA equivalente al 2DFA del ejemplo anterior.

para este autmta, las secuencias vlidas son solamente:

Bajo el smbolo 0 concuerdan:

1) nul por la derecha a nul Base2) nul por la izquierda a nul Base3)

por la derecha a (1), Regla 2 y (a)4)

por la derecha a (1), Regla 2 y (c)5) nul por la izquierda a (2), Regla 3 y (e)6)

por la derecha a (5), Regla 2 y (c)

De la misma forma obtenemos las concordancias bajo el smbolo 1

Con esa coleccin de concordancias revisamos si en base a una de las cuatro reglas, y la tabla de transciciones del autmata de dos sentidos podemos aumentar la coleccin. cuando ya no se pueda aumentar dicha coleccin descartamos las concordancias por la izquierda y en base a las concordancias por la derecha formamos la tabla de transiciones del autmata de un solo sentido. Para el ejemplo, la tabla ser:

Concordancias por la derecha bajo 0Concordancias por la derecha bajo 1

,-

--

-

PROPIEDADES DE LOS LENGUAJES REGULARES

El lema del bombeo.- Dado que la longitud de las cadenas de los lenguajes regulares no est acotada, los lenguajes regulares incluyen siempre cadenas cuya longitud es mayor que el nmero de estados del autmata que las reconoce. Lo anterior implica que para cadenas cuya longitud es mayor al nmero de estados, al menos un estado ser visitado mas de una vez, llamemos a ese estado el estado k. Sea i el estado inicial y j un estado final.

Figura El lema del bombeo

En la figura, u es una cadena que lleva al automata del estado i al k pasando por una variedad de estados, por esa razn se dibuj con linea punteada; v es una cadena que lleva al autmata del estado k de nuevo al k pasando por un numero indefinido de estados, que por supuesto depende de la longitud de la misma cadena y finalmente t es una cadena que lleva al autmata del estado k al j.

El lema del bombeo, nos dice que si es una cadena tambin lo debe de ser , as como y en general si es que el lenguaje en cuestin es un lenguaje regular.

La utilidad de este lema radica precsamente en decidir si un lenguaje es regular o n, puesto que no queremos perder el tiempo buscando un autmata finito que reconozca un lenguaje que ni siquiera es regular.

Formalmente, el lema del bombeo puede ser expresado de la siguiente manera:

Recuerde que |z| se lee la longitud de la cadena z, y tambin recuerde que el operador existe nos permite cambiar nuestra eleccin de n, as como de u,v y t, en cambio para una cierta eleccin de estas variables el operador para todo nos permite demostrar que el lenguaje no es regular mediante un contraejemplo.

El terorema de Myhill-Nerode

Este terorema nos dice que existe una relacin de equivalencia que relaciona los estados de un autmata de la siguiente manera:

Es decir, si partiendo de un estado q un autmata lee una cadena alfa y termina en un estado que es equivalente al estado en el que termina cuando parte de un estado p y lee la misma cadena, entonces los estado q y p son equivalente, es decir, pertenecen a la misma clase de equivalencia, pues no olvidemos que la clases de equivalencia producen particiones, Recordemos que una particin es un grupo de conjuntos disjuntos cuya unin resulta en el conjunto original. Este teorema es la base para un algoritmo que detecta estados redundantes en un autmata finito y nos permite obtener el autmata equivalente con el menor nmero de estados posible.

Algoritmo de minimizacin

Si p es un estado final y q no lo es, entonces el par (p,q) es distinguible. Para cada pareja (p,q) que no verifican la condicin anterior:

Para cada smbolo del alfabeto de entrada calcular los estados a los que evoluciona el autmata leyendo ese smbolo, sean estos estados r y l. Es decir Si r y l son distinguibles entonces: Marcar a la pareja de estados (p,q) como distinguible y recursvamente a todas las parejas en la lista de espera de (p,q) En caso contrario, agregar (p,q) a la lista de espera de la pareja (r,l).

Implementacin

Para el diseo e implementacin se consideran dos cosas, las estructuras de datos para apoyar la solucin del problema, es decir la implementacin del algoritmo, y el diseo de la interfaz de usuario tanto para la entrada de datos como para la presentacin de resultados. El lenguaje utilizado para la implementacin fue java, ya que provee la facilidad necesaria para manejar el uso de memoria dinmica requerida en las estructuras de datos. Para la implementacin de la interfaz tambin provee las herramientas necesarias para tener una flexibilidad aceptable tanto en la entrada como en la salida de datos.

Para representar el autmata original se utiliza una matriz de m x n, donde m es el nmero de estados y por tanto los renglones de la matriz; n es el nmero de smbolos en el alfabeto (las columnas), as pues se puede tener:

s1sn

q0qiqiqi

.qiqiqi

.qiqiqi

qnqiqiqi

Asociado a la posicin de cada rengln se encuentra la etiqueta para dicho estado, las cuales se encuentran almacenadas en otro arreglo, en la posicin que corresponde a cada rengln, de manera similar se tiene un arreglo con los ndices de las etiquetas de los estados que forman parte del conjunto F (estados finales). Para llevar a cavo la aplicacin del algoritmo al pie de la letra se requieren estructuras de datos ms complejas que simples matrices, ya que se deben asociar pares de estados (qi,qj) cuando dicho par no es distinguible para un determinado par (p,q), adems es posible tener ms de un par (qi,qj) asociado, es decir una lista que contiene pares (qi,qj). Por otro lado, dada la forma del algoritmo solo se requiere de una matriz triangular inferior sin la diagonal principal, por lo que una matriz cuadrada resultara un desperdicio de memoria, por lo tanto se utiliza una lista que almacene dicha lista de pares asociados adems de otra informacin como el hecho de saber si el par (p,q) esta marcado o no y por supuesto que estados son p y q. De manera grfica podemos visualizar estas estructuras de la siguiente forma:

p, qmarcap, qmarcap, qmarcap, qmarcap, qmarcap, qmarcaqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qjqi,qj101 n2m

Interfaz de usuario

Para la interfaz de usuario se consideran dos aspectos, la entrada y la presentacin de resultados. La siguiente figura muestra como y donde deben introducirse los datos que definen el Autmata Finito Determinista. El Applet cuenta con campos de edicin para introducir: el conjunto de estados (Q), el conjunto de smbolos (S), el estado inicial (q0), el conjunto de estados finales (F),y finalmente la funcin de transicin (Delta).

Como se puede apreciar el formato para definir los conjuntos es el mismo, las etiquetas correspondientes a los estados o smbolos estn separados por comas y finalmente por punto y coma, el nico campo que no requiere de punto y coma es el del estado inicial, ya que solo existe uno para los AFD. Las transiciones deben estar separadas tambin por punto y coma, en ellas se indica, entre parntesis, el estado coma el smbolo seguido de un igual y despus el estado al que se llega.

La interfaz cuenta con dos botones, el primero de ellos (Minimizar el autmata), es el encargado de iniciar el procesamiento de los datos y aplicar el algoritmo para posteriormente mostrar el resultado. El segundo botn, permite cargar un ejemplo.

La salida se muestra en la siguiente figura, en ella se puede apreciar la tabla de transiciones del autmata, as como los estados equivalentes y la matriz de equivalencia final. Parar tener una mejor apreciacin se muestran los respectivos autmatas, el que se produce mediante la tabla de transiciones y el que queda despus de aplicar el algoritmo de la minimizacin. Para tener una mejor referencia de las transiciones, cada estado tiene un color diferente, generado aleatoriamente, y tambin sus transiciones son del color correspondiente al estado.

GRAMATICAS LIBRES DEL CONTEXTO

Una gramtica libre del contexto es un cuarteto

G= (V,T,P,S)

Donde:

V.- Conjunto de VariablesT.- Conjunto de TerminalesP.- Conjunto de Reglas de ProduccinS.- Smbolo inicial de la gramtica

Las reglas de produccin son de la forma

Donde y

Como el nmero de reglas de produccin es finito, las gramticas libres del contexto son la mejor manera de describir lenguajes libres del contexto, los cuales son normalmente conjunto infinitos, para saber si una cadena forma parte de un lenguaje podemos verificar si se puede derivar a partir del smbolo inicial de la gramtica, es decir

Observe que en las reglas de produccin usamos la flecha sencilla o delgada, mientras que en las derivaciones utilizamos la flecha doble o gruesa.

Ejemplo, la siguiente gramtica describe el Lenguaje que consiste de todas las cadenas hechas con ceros y unos que son palndromos:

G=({A},{0,1},P,A)

Donde P consiste de las siguientes CINCO reglas de produccin

Observe que la ltima lnea tiene realmente 3 reglas de produccin ya que la barra vertical debe leerse como o, es decir, la ltima linea dice que la Variable A produce 1 o bien 0 o finalmente la cadena vaca.

A veces obviamos la especificacin como G=({A},{0,1},P,A), y escribimos directamente las reglas de produccin, en cuyo caso la variable que est a la izquierda de la primer regla de produccin se toma como el smbolo inicial de la gramtica, acostumbramos tambin utilizar maysculas para denotar variables, pero esto no se puede hacer cuando las cadenas que constituyen el lenguaje pueden incluirlas.

Derivemos la cadena 001100

Este lenguaje por cierto no puede describirse mediante ninguna expresin regular, si bien las gramticas regulares pueden denotar a los lenguajes regulares, las expresiones regulares no pueden denotar a todos los lenguajes libres del contexto, ya que estos son un superconjunto de los lenguajes regulares.

Veamos otro ejemplo de lenguaje que no puede ser descrito por ninguna expresin regular, se trata de una gramtica que denota al conjunto de cadenas que son expresiones algebraicas que utilizan solo a las variables algebraicas x y y.

Aqu G=({E},{+,-,*,/,(,)x,y},P,E), se trata pues de otro ejemplo donde solo se usa una varible, este tipo de gramticas casi simpre presentan un problema que describiremos mas adelante.

Hagamos una derivacin de la cadena x+y*x

La derivacin se pudo haber realizado utilizando las reglas de produccin en un orden diferente, por ejemplo, la siguiente tambin es una derivacin vlida:

Cuando es posible realizar dos derivaciones distintas de una misma cadena, decimos que la grampatica es AMBIGUA, la ambigedad presenta muchos problemas en la prctica, puesto que en una aplicacin real, por ejemplo una calculadora pudiera decirnos que 3+2*3 es igual a quince en lugar de nueve ya que las gramticas como estas no proporcionan informacin acerca de la jerarqua de operadores

FORMA NORMAL DE CHOMSKY (FNC)

Una gramtica sin reglas de produccin unitarias, sin smbolos intiles ni anulables puede expresarse en la FNC, en la cual todas las reglas de produccin tienen del lado derecho un terminal o bien 2 variables, es decir, las reglas de produccin son de la forma

donde bien, de la forma

donde

Ejemplo, convirtamos la gramtica siguiente a la FNC

Solucin:

La primera regla de produccin la podemos cambiar por las tres siguientes

La segunda regla de produccin la podemos cambiar por las tres siguientes

Las ltimas dos reglas s cumplen con la FNC, entonces la gramtica normalizada queda:

LA FORMA NORMAL DE GREIBACH (FNG)

Una gramtica se encuentra en la FNG si todas las reglas de produccin son de la forma

donde y

Es decir, todas las reglas deben de tener exactamente un terminal y este debe estar al principio de la cadena, despus puede sigue una cadena opcional de variables de cualquier longitud.

Para convertir una gramtica a la FNG, primero se convierte a la FNC y despus se les asigna un orden a las variables comenzando por el smbolo inicial y luego conforme aparecen las variables en las reglas se les va asignando un nmero mayor. Entonces, se deben modificar las reglas de produccin para que en todas se cumpla que si entonces i sea menor o igual a j.

Considere por ejemplo la siguiente Gramtica, la cual ya se encuentra en la FNC:

Renombremos las variables para asignarles el orden descrito antes:

Como la tercera regla no cumple la condicin de que la primera variable del lado derecho de la regla de produccin sea mayor o igual a la variable que se encuentra del lado izquierdo de la regla, debemos de cambiar la gramtica:

Las reglas de produccin del tipo son recursivas por la izquierda y debemos cambiarlas por otras donde este tipo de recursividad no se presente, aunque en algunas de las nuevas reglas se presente recursividad por la derecha, este tipo de recursividad no nos afecta en nuestro objetivo de convertir la gramtica a la FNG. En general, las reglas:

sern reemplazadas por las reglas:

Para nuestro ejemplo esto significa que la gramtica se convertira en:

Observe que ahora las reglas de produccin de estn en la forma normal de Greibach y gracias al orden que tienen el resto de las reglas, solo resta hacer una sustitucin hacia atrs para que todas las reglas de la gramtica estn en la FNG. La gramtica normalizada de nuestro ejemplo queda finalmente:

AUTOMATAS DE PILA

A diferencia de los autmatas finitos, estos autmatas s tienen memoria, de hecho, la tienen organizada como su nombre lo indica de manera que el primer elemento en almacenarse es el ltimo en recuperarse (FILO por sus siglas en ingls). Utilizan esta memoria por ejemplo para recordar si queda algn parntesis sin cerrarse, lo cual escapa de las capacidades de los autmatas finitos. Formalmente, un autmata de pila es:

Donde:

Q.- Denota al conjunto de estados

.-Denota al alfabeto de la cinta de entrada

.-Denota al alfabeto de la pila

.- Control finito

.- Estado inicial

.- Smbolo inicial del stackF.- Conjunto de estados finales

Ejemplo Para ejemplificar el funcionamiento de los autmatas de pila, mostraremos uno que reconoce palndromos hechos con ceros y unos pero que en medio tienen una x que indica el centro de la cadena. Por ejemplo:010x010001x100100x0011011x1101etc

La estrategia para disear este autmata consistir en meter al stack una U por cada 1 ledo de la cadena de entrada y una C por cada cero. En el momento en que se lea la x cambiar a un estado que se dedique a comparar el contenido del stack con el resto de la cadena, aprovechando el hecho de que en un stack, lo introducido se recupera en orden inverso. El autmata quedar:

Agrega una U al stack

Agrega una C al stack

Observe que esta es una manera abreviada de escribir varias reglas

Deja el stack sin modificar pero se cambia de estado

Verifica el uno leido despues de la x con otro uno leido antes de la x

Verifica el cero leido despues de la x con otro cero leido antes de la x

Se cambia la estado final para reconocer la cadena

El autmata es

Los autmatas de pila pueden reconocer al igual que los autmatas finitos por el hecho de que al terminar de barrer la cadena que se encuentra en la cinta de entrada, el autmata quede en un estado final, sin embargo, podemos optar por disear un autmata que no tenga estados finales, sino que acepte una cadena como perteneciente al lenguaje por el hecho de que al terminar de barrer la cadena que se encuentra en la cinta de entrada, el autmata termine con la pila vaca. Esto se indica diciendo

F={}

Es decir, el conjunto de estados finales es un conjunto vaco

En realidad los dos tipos de autmatas de pila son equivalentes puesto que si se cuenta con un autmata de pila que reconoce por estado final, lo podemos convertir a uno que reconoce por stack vaco simplemente agregando reglas que tengan por efecto vaciar el stack para cada estado final, esto es:

Tambin es sencillo convertir un autmata que reconozca por pila vaca en un autmata que reconozca por estado final M, agregamos un estado nuevo y un nuevo estado inicial , as como un nuevo smbolo R para el alfabeto del stack , finalmente agregamos las reglas:

Esta regla forzzamente se ejecutaria al inicio e introduce el smbolo R al stack

Esta regla detecta que el stack se vaci para cambiarse al estado final

El autmata resultante sera evidentemente

Por supuesto, es igual a mas las reglas nuevas que acabamos de precisar.

Los autmatas de pila pueden ser indeterministas en cuyo caso

A diferencia de lo que ocurre con los autmatas finitos, donde los autmatas deterministas y los indeterministas son equivalentes, los autmatas de pila indeterministas son mas poderosos que los deterministas, para ejemplificar este hecho, mostraremos un autmata de pila indeterminista que reconoce palindromos hechos con ceros y unos el cual sale del alcance de los deterministas, recuerde que el ejemplo del autmata de pila determinista que expusimos y que reconoce palindromos hechos de ceros y unos requera de una x que indicaba el centro de la cadena.

El problema de no saber donde est el centro del palindromo implica que no sabemos si el autmata debe empezar a sacar elementos del stack o los debe de seguir introduciendo, en un autmata indeterminista esto no es problema pues se le dice al autmata que explore ambas posibilidades. El autmata queda entonces:

Explora ambas posibilidades (indeterminismo)

Explora ambas posibilidades (indeterminismo)

El autmata queda finalmente

Una gramtica libre del contexto expresada en la Forma Normal de Greibach G=(V,T,P,S) puede convertirse muy fcilmente a un autmata de pila de un solo estado que reconoce por pila vaca

donde

Este autmata simula derivaciones por la extrema izquierda de cualquier cadena que pertenezca a L(G) y por tanto N(M)=L(G)

Una gramtica equivalente a un autmata de pila que reconoce por stack vaco consistira de las siguientes reglsa de produccin:

Siempre y cuando

Como caso particular Si m=0, la regla de produccin sera

MAQUINAS DE TURING

Las mquinas de Turing (MT) son como los autmatas finitos de 2 sentidos, solo que a diferencia de estos, las MTs pueden no solo leer de la cinta sino tambin escribir en ella, como los autmatas de stack pueden almacenar datos pero en una memoria que no est organizada en forma de pila sino que es una memoria de acceso secuencial. Formalmente, Una Mquina de Turing es

M = (Q, , , , q0, B, F)

Donde:

Q.- Denota al conjunto de estados de la MT

.-Denota al alfabeto de la cinta al inicio

.-Denota al alfabeto de la cinta en cualquier momento, obviamente

.-Control finito

.- Estado inicialF.- Conjunto de estados finalesB.- Smbolo que representa al Blanco en la cinta

Por ejemplo, Diseemos una Mquina de Turing que reconozca el siguiente lenguaje:

{0n1n0n | n 1}

Estrategia de solucin.

Por cada cero (0) en la cinta de entrada vamos a escribir una C, y por cada uno (1) una U, de tal forma que, si finalmente todos los ceros y todos los unos en la cinta han sido sustituidos por una C o una U, respectivamente, la cadena en la cinta es aceptada. La forma de sustituir estar dada de la siguiente manera:

(1) El primer cero de izquierda a derecha sustituirlo por C C0 01 ....... 0n-1 0n 10 11 1n-1 1n 00 01 ....... 0n-1 0n

(2) Avanzar a la derecha hasta encontrar un uno y sustituirlo por UC0 01 ....... 0n-1 0n U0 11 1n-1 1n 00 01 ....... 0n-1 0n

(3) Avanzar a la derecha hasta encontrar un cero y sustituirlo por CC0 01 ....... 0n-1 0n U0 11 1n-1 1n C0 01 ....... 0n-1 0n

(4) Retroceder pasando por los unos y Us hasta encontrar una C precedida por un ceroC0 01 ....... 0n-1 0n U0 11 1n-1 1n C0 01 ....... 0n-1 0n

Y Repetir (1) , hasta tenerC0 C1 ....... Cn-1 Cn U0 U1 Un-1 Un C0 C1 ....... Cn-1 Cn B

En caso de que no se puede cumplir: El primer cero de izquierda a derecha , Avanzar a la derecha hasta encontrar un , Retroceder pasando por los unos y Us hasta encontrar , la cadena no ser aceptada.

Formalizando.

Sea M = (Q, , , , q0, B, F)La Mquina de Turing que reconoce el lenguaje

{0n1n0n | n 1}

Entonces:

Q = {q0, q1, q2, q3, q4, q5, q6, q7} = {0, 1} = {0, 1, B, C, U}q0 = q0F = {q6}

=01CUB

q0(q1,C,R)

q1(q1,0,R)(q2,U,R)(q1,U,R)

q2(q3,C,L)(q2,1,R)(q2,C,R)

q3(q4,1,L)(q3,C,L)(q4,U,L)

q4(q7,0,L)(q4,1,L)(q5,C,R)(q4,U,L)

q5(q5,C,R)(q5,U,R)(q6,B,R)

q6

q7(q7,0,L)(q0,C,R)

Cdigo para el simulador de la Mquina de Turing.

Disponemos en la Facultad de un simulador de Mquinas de Turing hecho en LISP [3]donde podemos probar nuestros diseos. Dadas las caractersticas del simulador se asumen los siguientes convencionalismos para la funcin de transicin:1. Cuando en una transicin se cambia el smbolo ledo de la cinta, se incluye un nuevo estado para poder indicar la escritura y el movimiento, por ejemplo: (q0,0) ser ((Q0 0) (C Q_1) (C Q_1) (R Q1)), donde Q_1 es el nuevo estado correspondiente a Q1. y as para todo Q_X existe un QX.2. Si en la transicin el smbolo ledo no cambia, entonces solo se indica hacia donde se mueve el control finito y a que estado cambia. Por ejemplo: (q1,0) ser igual a ((Q1 0) (R Q1)).

Finalmente el cdigo queda como sigue:

;********************** CUC.MT ***************************;Se reconocen cadenas de la forma 0^n1^n0^n pj.: 001100, 010;El estado final es Q6(SETQ FUNCION_DE_TRANSICION '(((Q0 0) (C Q_1))((Q_1 C) (R Q1))((Q1 0) (R Q1))((Q1 U) (R Q1))((Q1 1) (U Q_2))((Q_2 U) (R Q2))((Q2 1) (R Q2))((Q2 C) (R Q2))((Q2 0) (C Q_3))((Q_3 C) (L Q3))((Q3 C) (L Q3))((Q3 1) (L Q4))((Q3 U) (L Q4))((Q4 1) (L Q4))((Q4 U) (L Q4))((Q4 0) (L Q7))((Q4 C) (R Q5))((Q5 U) (R Q5))((Q5 C) (R Q5))((Q5 B) (R Q6))((Q7 0) (L Q7))((Q7 C) (R Q0))))(SETQ ENTRADA '(0 0 1 1 0 0))(SETQ ESTADO_INICIAL Q0)(SETQ POSICION_INICIAL_CINTA 0)(SETQ SIMBOLOS '(B 1 0 C U))

Las Mquinas de Turing pueden utilizarse para realizar cmputos de funciones enteras y no solo para fines de reconocimiento de lenguajes, para ejemplificar este hecho, Diseemos ahora una Mquina de Turing para calcular la siguiente funcin:

n2Estrategia de solucin.

Se propone una Mquina de Turing que computa la funcin n2 en unario, para esto la cinta de entrada contiene originalmente n en unario. Ya que n2 es igual a n x n, la estrategia consiste precisamente en realizar dicho producto en unario, para esto primero se debe duplicar la secuencia de 0 en unario en la cinta, separando por un 1 la copia del original, aplicar el producto sobre ambas cantidades, dicho producto se realiza mediante la copia de n veces n. De forma general podramos ver la operacin de n2 como una sucesin de pasos de la siguiente manera:

Contenido de la cinta:01 02 0n-1 0n B B

Despus se realizan los siguientes pasos:

(1) Duplicar el contenido de la cinta, separando la copia del original por un uno

(1.a) Marcar como P el primer cero y poner un uno despus del ltimo 0P1 02 0n-1 0n 1 B

(1.b) Adems de la P, copiar uno a uno los ceros del lado izquierdo del 1 al lado derecho del mismo, para esto marcar con un 2 el cero a copiar, y recorrer hasta encontrar un blanco para ponerlo ah.P1 02 0n-1 0n 1 01 B

Regresar hasta encontrar un 0 antecedido de un 2 y repetir el paso anterior, hasta llegar a tener:

P1 22 2n-1 2n 1 01 02 0n-1 0n B

Finalmente restaurar, es decir, sustituir los 2 por 0 quedando:P1 02 0n-1 0n 1 01 02 0n-1 0n B

(2) Realizar el producto de n x n

(2.a) Poner un uno en el primer blancoP1 02 0n-1 0n 1 01 02 0n-1 0n 1 B 1er segmento de 0s 2 segmento de 0s

El primer segmento de ceros nos va a servir para saber las veces que faltan de copiarse los ceros del segundo segmento a partir del ultimo blanco, cada vez que se va a realizar una copia se sustituye un elemento del primer segmento por un B, y se realiza la copia del segundo segmento, de manera similar a como se hizo en (1.b) con la diferencia de que en este segmento no hay una P. En otras palabras el resultado se va almacenando despus del segundo uno. Realizadas la n copias tendramos en la cinta lo siguiente:

B1 B2 Bn-1 Bn 1 01 02 0n-1 0n 1 011 01n 0n1 0nn B

(3) Finalmente solo resta poner un blanco sobre el 2 segmento de ceros incluyendo los unos que lo delimitan y tendremos en la cinta tan solo n x n = n2 en unario.

Definicin formal

Sea M = (Q, , , , q0, B, F)La Mquina de Turing que computa

n2

Entonces:

Q = {q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21,} = {0} = {0, 1, 2, P, B}q0 = q0F = {q20}

=012PB

q0(q1,P,R)

q1(q1,0,R)(q2,1,L)

q2(q2,0,L)(q3,P,R)

q3(q3,0,R)(q3,1,R)(q4,0,L)(1)

q4(q4,0,L)(q4,1,L)(q5,2,R)(q5,P,R)

q5(q3,2,R)(q6,1,L)

q6(q6,0,L)(q7,P,R)

q7(q7,0,R)(q7,1,R)(q8,1,L)

q8(q8,0,L)(q8,1,L)(q9,B,R)

q9(q9,0,R)(q10,1,R)

q10(q11,2,R)(q13,1,L)

Q11(q11,0,R)(q11,1,R)(q12,0,L)

q12(q12,0,L)(q12,1,L)(q10,2,R)

q13(q14,1,R)(q13,0,L)

q14(q15,0,L)

q15(q16,1,L)(2)

q16(q17,0,L)(q18,B,R)

q17(q17,0,L)(q21,B,R)

q18(q19,B,R)

q19(q19,B,R)(q20,B,R)

q20

q21(q9,B,R)

Cdigo para el simulador de la Mquina de Turing

Dadas las caractersticas del simulador, se asumen los convencionalismos dados para el ejercicio anterior. El cdigo para el simulador es el siguiente:

;********************** NXN.MT ***************************;Se calcula n cuadrada, es decir n x n,en unario;Pj. la entrada es: 000, la salida sera: 000000000(SETQ FUNCION_DE_TRANSICION '(((Q0 0) (P Q_1))((Q_1 P) (R Q1))((Q1 0) (R Q1))((Q1 B) (1 Q_2))((Q_2 1) (L Q2))((Q2 0) (L Q2))((Q2 P) (R Q3))((Q3 0) (R Q3))((Q3 1) (R Q3))((Q3 B) (0 Q_4))((Q_4 0) (L Q4))((Q4 0) (L Q4))((Q4 1) (L Q4))((Q4 P) (R Q5))((Q4 2) (R Q5))((Q5 0) (2 Q_3))((Q_3 2) (R Q3))((Q5 1) (L Q6))((Q6 2) (0 Q_6))((Q_6 0) (L Q6))((Q6 P) (R Q7))((Q7 0) (R Q7))((Q7 1) (R Q7))((Q7 B) (1 Q_8))((Q_8 1) (L Q8))((Q8 0) (L Q8))((Q8 1) (L Q8))((Q8 P) (B Q_9))((Q_9 B) (R Q9))((Q9 0) (R Q9))((Q9 1) (R Q10))((Q10 0) (2 Q_11))((Q_11 2) (R Q11))((Q10 1) (L Q13))((Q11 0) (R Q11))((Q11 1) (R Q11))((Q11 B) (0 Q_12))((Q_12 0) (L Q12))((Q12 0) (L Q12))((Q12 1) (L Q12))((Q12 2) (R Q10))((Q13 2) (0 Q_13))((Q_13 0) (L Q13))((Q13 1) (R Q14))((Q14 0) (L Q15))((Q15 1) (L Q16))((Q16 0) (L Q17))((Q16 B) (R Q18))((Q17 0) (L Q17))((Q17 B) (R Q21))((Q18 1) (B Q_19))((Q_19 B) (R Q19))((Q19 0) (B Q_19))((Q19 1) (B Q_20))((Q_20 B) (R Q20))((Q21 0) (B Q_9))))(SETQ ENTRADA '(0 0 0))(SETQ ESTADO_INICIAL Q0)(SETQ POSICION_INICIAL_CINTA 0)(SETQ SIMBOLOS '(B 0 1 2 P))

Inteligencia artificial

Desde mediados del siglo XX la idea de crear una mquina que ejecute las funciones, tanto fsicas como psicolgicas, propias del Homo sapiens ha inquietado a la mayora de los cientficos y filsofos del planeta.

Existen innumerables ejemplos de mquinas que realizan determinadas labores, algunas de gran complejidad, pero nunca pudieron llegar a emular la capacidad del razonamiento humano. Sin embargo, la ciencia imagina que en el futuro habr seres robticos pensantes. Un panorama que, por el momento, pertenece exclusivamente al gnero de la ciencia-ficcin.

Si el ser humano poda reproducir cualquier cosa, poda crear, imitar e incluso luchar contra las leyes naturalmente establecidas, por qu no poda emular, aunque fuese de forma muy simple, el tipo de razonamiento humano que tanto haba hecho evolucionar la especie?

Los primeros planeamientos tericos desembocaron en una nueva disciplina denominada ciberntica. Los investigadores tomaron como base el modelo neuronal descripto en 1943 y postularon de forma muy sinttica que el cerebro es un solucionador inteligente de problemas." As, pues, imitemos el cerebro.

Obviamente, la tecnologa de la poca no era la adecuado para poner en prctica aquello que la teora era capaz de plantear con tanta sencillez.

El pensamiento humano ha sido definido como una coordinacin de proceso o tareas simples relacionadas entre s mediante smbolos. Lo difcil es llegar a unir estas tareas simples para que generen un mtodo de resolucin artificial de problemas y cuestiones. El desarrollo de la informtica dio lugar a un incremento en los estudios de IA (inteligencia artificial). Basta con un microprocesador de una agenda de bolsillo para acceder a sofisticados y complejos procesos.

En la quinta generacin de computadoras anunciaron las caractersticas que engloban: la utilizacin de muy alta escala de integracin, la interconexin e integracin a travs de redes de todo tipo de computadoras y datos, la dotacin a una computadora de un cierto poder de razonamiento humano en lo que se denomina inteligencia artificial, la utilizacin de lenguajes similares al lenguaje natural, la aparicin de mltiples procesadores en una misma computadora, etc.

Las investigaciones de muchos cientficos actuales van por este camino: lingistas, psiclogos, estadsticos, ingenieros y fundamentalmente expertos en ingeniera del software estn empeados en alumbrar una nueva era en la ciencia de la computacin o informtica fundamentada en lo que se denomina inteligencia artificial (AI).

Actualmente, las computadoras son mquinas que poseen un conjunto de caractersticas excelentes en cuanto a potencia de clculo, velocidad de proceso y capacidad para el almacenamiento de datos, se trata de dotarlas de ciertas capacidades nuevas que permitan de forma funcional imitar el razonamiento de la mente humana.

La inteligencia artificial o AI es una rama de la ciencia que trata de encontrar soluciones a problemas complejos mediante mquinas, en una forma parecida a la que hacen (o haran) los humanos. El hombre convive desde antao con sistemas inteligentes artificiales, aun sin darse cuenta. Desde primitivos sistemas de control de temperatura en aparatos de aire acondicionado o termotanques a los robots actuales, que mantienen actualizados los motores de bsqueda en Internet, estrategas artificiales capaces de vencer a humanos en juegos de estrategia.

Definicin

Inteligencia artificial (AI) es una rama de la informtica, proporcionando computadoras con sus elementos de hardware y software que simulan la inteligencia humana y el comportamiento de un individuo.

La inteligencia artificial es un campo de investigacin y aplicacin que trata de conseguir que las computadoras simulen en cierta manera la inteligencia humana. El problema es que la inteligencia humana es difcil de circunscribir y definir. En efecto, la inteligencia es una conducta compleja que incluye la conciencia, el inconsciente, los procesos cognoscitivos.

Existen dos lneas de investigacin sobre inteligencia artificial: AI dura e AI blanda.

Inteligencia artificial dura

La inteligencia artificial dura se propone la creacin de formas de inteligencia basada en las computadoras, que pueda razonar y resolver problemas. En teora, esta forma de inteligencia artificial debera ser consciente de s misma. Un ejemplo de este tipo de inteligencia artificial, es el computador HAL 9000 de la pelcula 2001 Odisea del Espacio. Existen a su vez dos variantes de inteligencia artificial dura: una en la que se imita la forma de pensar y razonar de los humanos, y otra en la que se propone una manera no humana de pensar y razonar.

Inteligencia artificial blanda

En este caso, el objetivo es la creacin de una inteligencia basada en mquinas, que slo pueda ser operacional dentro de un dominio limitado. No se pretenden mquinas inteligentes e independientes, sino adecuadas solamente para una tarea especfica. Uno de los ejemplos ms ilustrativos se da cuando se hace referencia a los edificios inteligentes, que son aquellos que poseen dispositivos para regular la temperatura de los ambientes, cerrar puertas y ventanas, registrar la entrada o salida de personas, encender electrodomsticos, etc.

Objetivo

El objetivo de la IA no es, la sustitucin del hombre por la mquina, sino convertir una computadora en una herramienta eficaz y til al servicio del hombre, pero con un campo de posibilidades que sobrepasan lo convencional.

Desarrollar sistemas inteligentes de modo tal que el usuario que tome contacto con el sistema no logre diferenciar si la persona que est del otro lado es un ser humano o una computadora.

Los programas de IA se centran en el que de un problema y no en el cmo. Esto significa que se programa a la computadora para que reconozca el problema mediante un comportamiento inteligente.

Lmites

Desde desarrollo de programas inteligentes que controlen servidores de Internet hasta programas multimedia avanzada, los campos de investigacin que introducen elementos de IA son amplios. Pero lo que se lleva la palma en cuanto a complejidad son los estudios sobre asimilacin y comprensin del lenguaje hablado y la creacin de redes neuronales artificiales, a imagen y semejanza del ser humano.

La accin de aprender, por ejemplo, consiste en asociar a cada estmulo la respuesta adecuada. Las redes de neuronas artificiales (RNA) trata de aplicar esta filosofa a un programa informtico.

Si en el razonamiento intervienen factores subjetivos, entramos en el campo de las emociones. Podran llegar a albergar emociones seres creados artificialmente y dotados de IA? Y si la respuesta fuera afirmativa, Qu derecho moral tendra la raza humana para crearlos primero y destruirlos despus como se desguaza un automvil cuando ya no funciona? El dilema y la polmica estn servidos.

rea de aplicacin

El campo de desarrollo de la inteligencia artificial es muy discutido y debatido desde diversas perspectivas, desde lo filosfico hasta lo psicolgico. Hasta el momento se han logrado muy pocos avances. Derivados de la investigacin sobre inteligencia artificial, existen en la actualidad algunos dispositivos:

* Chinook:software para jugar a las damas, triunfador en el Campeonato Mundial de Hombres y Mquinas de 1994.* Deep Blue:supercomputadora producida por IBM, para jugar al ajedrez, que venci a Garry Kasparov en 1997.

* Fuzzy logic:tcnica para razonar bajo condiciones de falta de certeza. Es utilizada en sistemas de control industrial.

* Software para traduccin de idiomas:su empleo es cada vez ms difundido, aunque los resultados son muy pobres comparados con las traducciones realizadas por personas.

* Reconocimiento ptico de datos:OCR Optical character recognition, aplicaciones que pueden leer un archivo de imagen que contienen texto, obtenido por un escner, y convertirlo en un archivo de texto para ser modificado en un archivo de texto para ser modificado por un procesador de palabras.

* Reconocimiento de escritura:aplicacin similar a la anterior, que reconoce texto a partir de la lectura de letra manuscrita. Muy utilizado en los asistentes digitales personales.

* Reconocimiento de voz:es la capacidad de una mquina de responder a estmulos sonoros. Existen versiones comerciales y son de gran utilidad para el manejo de la computadora para personas con discapacidad.

* Visin artificial:La lectura y compresin de imgenes de manera automtica se utiliza en procesos industriales y de seguridad.

La IA abarca varios campos de aplicacin que interactan entre s. Actualmente es muy comn encontrar ejemplos de inteligencia artificial aplicados a la medicina, la industria, la aviacin, la mecnica, etc.

Sistemas Expertos

Un sistema experto o sistema de conocimiento basado en reglas de inferencia es un conjunto de programas que pueden acceder a una gran masa de informacin donde se renen las experiencias y conocimientos de uno o ms expertos en un determinado campo de la ciencia o la tcnica para la resolucin de problemas.Es una aplicacin informtica capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Generalmente realizan una bsqueda de la solucin por medio de un proceso de simulacin del razonamiento humano aplicando reglas especficas del conocimiento y de inferencias (inducir). Estos tipos de computadoras se denominan computadoras inteligentes.

As como las industrias manufactureras han enfocado la inteligencia artificial a travs de la construccin de robots, que actan con eficacia en aquellas tareas automticas que traen consigo una disminucin de productividad, a medida que avanza la jornada laboral cuando son realizadas por el hombre (cansancio, aburrimiento, falta de eficacia, etc.), en otros sectores industriales y los de administracin y servicios se enfocan por medio de los sistemas expertos.

Todo sistema de esa naturaleza puede colaborar en la toma de decisiones ya que le permite formular preguntas y analizar las razones de los procedimientos que realiza.

En general, estos sistemas llevan a cabo tareas muy limitadas (lectura ptica, seguimientos, interpretacin, diagnsticos) en tiempos muchos ms breves que podran emplear las personas ms profesionalizadas; pero aquellos problemas que no pueden ser resueltos por stas tambin son difciles para un sistema experto.

Poseen las siguientes caractersticas:

*Amplios conocimientos sobre determinado tema que se encuentra estructurado en su base de conocimiento.*Algoritmos y tcnicas de bsqueda que permiten el uso y tratamiento de la informacin de una forma eficiente.*Posibilidad de ampliar sus conocimientos con la experiencia.*Facilidad para realizar anlisis de datos e informaciones.*Capacidad para presentar un razonamiento o conclusin.

El conocimiento de un sistema experto se basa en tres tipos de informaciones:

*Hechos (obtenidos de la realidad)*Reglas de procedimiento (secuencias)*Reglas heursticas (reglas con opciones)

CIBERNTICA

Este trmino proviene del griego kybernytiky y tiene su origen en el siglo VI a.C., cuando la mitologa griega cuenta que Teseo en viaje a Creta, por mar, fue ayudado por dos pilotos de su barco a cuyo trmino instituyo una fiesta para stos a quienes los llam los cibernesios.

Ms tarde Platn utiliz la palabra kybernytiky en el sentido de dirigir un navo o cargo. Y, ltimamente, se retom dicho trmino con el sentido de control o direccin o de regulador o gobernador.

En esa forma, la ciberntica surge como una ciencia destinada a la comunicacin y control, tanto de hombre como de la mquina, permitiendo que los conocimientos y los descubrimientos de una ciencia puedan tener condiciones para ser aplicados a otras.

Dicho en otros trminos, es una teora de los sistemas de control basada en la comunicacin o transferencia de la informacin entre el propio sistema y el ambiente y del control de la funcin de los sistemas con respecto al ambiente.