Lenguajes Turing

26
LENGUAJES Y AUTÓMATAS PROF. ING. MAXIMILIANO SANTIAGO PÉREZ INTEGRANTES DEL EQUIPO NUMERO 4: -LUIS ALBERTO CORTÉS ZACARÍAS -JORGE DAVID CASTILLEJOS RODRÍGUEZ -JOSÉ GUADALUPE MORALES PÉREZ - JESÚS MANUEL TORRES BARAHONA

Transcript of Lenguajes Turing

Page 1: Lenguajes Turing

LENGUAJES Y AUTÓMATAS

PROF. ING. MAXIMILIANO SANTIAGO PÉREZ

INTEGRANTES DEL EQUIPO NUMERO 4:-LUIS ALBERTO CORTÉS ZACARÍAS

-JORGE DAVID CASTILLEJOS RODRÍGUEZ-JOSÉ GUADALUPE MORALES PÉREZ

- JESÚS MANUEL TORRES BARAHONA

Page 2: Lenguajes Turing

4. MAQUINAS DE TURING

La máquina de Turing nos proporciona muchas de las características comúnmente asociadas con una computadora moderna. De hecho, la máquina de Turing fue el modelo utilizado para diseñar y construir la primer computadora de programa almacenado. Esta máquina utiliza una secuencia de operaciones elementales para acceder y alterar una posición de memoria. A diferencia de una computadora, una máquina de Turing no tiene un límite de memoria o de tiempo para realizar un cálculo. Por último, la máquina de Turing representa lo máximo dentro de los dispositivos de computación abstractos.

Page 3: Lenguajes Turing

DEFINICIÓN FORMAL

Una máquina de Turing, 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á formado por un alfabeto de entrada y uno de salida, un símbolo especial llamado blanco (normalmente b, \ 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 puede ser infinita) pertenecientes al alfabeto de entrada. La máquina va leyendo una celda de la cinta en cada paso, borrando el símbolo en el que se encuentra posicionado su cabezal y escribiendo un nuevo símbolo perteneciente al alfabeto de salida, para luego desplazar el cabezal a la izquierda o a la derecha (solo una celda a la vez). Esto se repite 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.

Page 4: Lenguajes Turing

NOTACIÓN PARA LA MÁQUINA DE TURINGPodemos visualizar una máquina de Turing como se muestra en la Figura. La máquina consta de una unidad de control, que puede encontrarse en cualquiera de un conjunto finito de estados. Hay una cinta dividida en cuadrados o casillas y cada casilla puede contener un símbolo de entre un número finito de símbolos.

Inicialmente, la entrada, que es una cadena de símbolos de longitud finita elegidos del alfabeto de entrada, se coloca en la cinta. Las restantes casillas de la cinta, que se extiende infinitamente hacia la izquierda y la derecha, inicialmente almacenan un símbolo especial denominado espacio en blanco. El espacio en blanco es un símbolo de cinta, pero no un símbolo de entrada, y pueden existir también otros símbolos de cinta además de los símbolos de entrada y del espacio en blanco. Existe una cabeza de la cinta que siempre está situada en una de las casillas de la cinta. Inicialmente, la cabeza de la cinta está en la casilla más a la izquierda que contiene la entrada.

Page 5: Lenguajes Turing

Un movimiento de la máquina de Turing es una función del estado de la unidad de control y el símbolo de cinta al que señala la cabeza. En un movimiento, la máquina de Turing:

1. Cambiará de estado. El siguiente estado puede ser opcionalmente el mismo que el estado actual.

2. Escribirá un símbolo de cinta en la casilla que señala la cabeza. Este símbolo de cinta reemplaza a cualquier símbolo que estuviera anteriormente en dicha casilla. Opcionalmente, el símbolo escrito puede ser el mismo que el que ya se encontraba allí.

3. Moverá la cabeza de la cinta hacia la izquierda o hacia la derecha. En nuestro formalismo, exigiremos que haya un movimiento y no permitiremos que la cabeza quede estacionaria. Esta restricción no limita lo que una máquina de Turing puede calcular, ya que cualquier secuencia de movimientos con una cabeza estacionaria podría condensarse, junto con el siguiente movimiento de la cabeza de la cinta, en un único cambio de estado, un nuevo símbolo de cinta y un movimiento hacia la izquierda o hacia la derecha.

Page 6: Lenguajes Turing

Una máquina de Turing con una sola cinta puede definirse como una 7-tupla

M = (Q, Σ, Γ,δ ,q0,B,F)

cuyos componentes tienen el siguiente significado:

Q = El conjunto finito de estados de la unidad de control.Σ = El conjunto finito de símbolos de entrada.Γ = El conjunto completo de símbolos de cinta; Σ siempre es un subconjunto de Γ.δ = La función de transición. Los argumentos de δ (q,X) son un estado q y un símbolo de cinta X. El valor de δ (q,X), si está definido, es (p,Y,D), donde:1. p es el siguiente estado de Q.2. Y es el símbolo de Γ, que se escribe en la casilla que señala la cabeza y que sustituye a cualquier símbolo que se encontrara en ella.3. D es una dirección y puede ser L o R, lo que que nos indica la dirección en que la cabeza se mueve, “izquierda” (L) o “derecha” (R), respectivamente.q0 = El estado inicial, un elemento de Q, en el que inicialmente se encuentra la unidad de control.B = es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces.F= El conjunto de los estados finales o de aceptación, un subconjunto de Q.

Page 7: Lenguajes Turing

Extensiones de la Máquina de TuringExisten variaciones al modelo de la máquina de Turing standard. Cada variación o extensión parece incrementar la capacidad de la máquina, pero la realidad es que los lenguajes aceptados por esas máquinas de Turing extendidas son también aceptados por máquinas de Turing Standard.

Máquinas de Turing de MultipistasEn este tipo de máquinas la cinta es dividida en varias pistas. Una posición en la multipista-cinta contiene n símbolos del alfabeto de la cinta.

qj

PISTA 1PISTA 2

Page 8: Lenguajes Turing

Una posición en la cinta en una máquina de 2 pistas es representada por un par ordenado [x,y] donde x es el símbolo en pista 1 y y en pista 2. Una transición lee y escribe la posición completa de la cinta y se escribe como:

d(qi,[x,y]) = [qj,[z,w],d] donde d es {L,R}

La entrada es puesta en la pista 1. Todas las posiciones en la pista 2 están en blanco. Aceptación en este tipo de máquinas de Turing es por medio de estado final. Este tipo de máquinas de Turing, al ser equivalentes a la máquina de Turing standard, acepta lenguajes recursivamente enumerables.

Page 9: Lenguajes Turing

Máquinas de Turing de dos direcciones (two-way)Este tipo de máquinas es identico a una máquina de Turing standard excepto que la cinta se extiende indefinidamente en ambas direcciones (izquierda y derecha). En este tipo de máquinas la cadena de entrad puede ser puesta en cualquier lugar de la cinta. Todas las demás posiciones de la cinta se asume que están en blanco.

q0

….….

Se puede colocar un símbolo especial (#) en una posición para que sea el límite de la izquierda (como en una máquina standard). Este tipo de máquinas es también equivalente al de la máquina standard (aceptan Lenguajes Rec. Enumerables).

Page 10: Lenguajes Turing

Máquinas de Múltiple CintasConsiste de k cintas y k cabezas de cintas independientes. Los estados y alfabetos son los mismos que en la máquina standard. La máquina lee las cintas simultáneamente pero solo tiene un estado.

CINTA 1

CINTA 2

CINTA 3

qi

Page 11: Lenguajes Turing

Una transición es determinada por el estado y el símbolo leído por cada cabeza de cinta. Una transición puede• cambiar el estado• escribir un símbolo en cada cinta• independientemente reposicionar cada cabeza de cinta.

El reposicionamiento consiste de mover la cabeza de la cinta un cuadro a la izquierda o la derecha o incluso dejar la cabeza en su posición actual. La entrada a la máquina es puesta en la cinta 1. Todas las demás cintas estarán en blanco.Al igual que en las máquinas anteriores este tipo de máquinas acepta lenguajes Rec. Enumerables.

Page 12: Lenguajes Turing

4.2 Construcción

modular de una MT

Page 13: Lenguajes Turing

CONSTRUCCIÓN MODULAR DE MÁQUINAS DE TURING

Mediante esta técnica se puedan desarrollarse maquinas de Turing complejas a partir de  bloques de elementales a partir de maquinas mas pequeñas  mediaste diagramas de transiciones.

La construcción de maquinas de Turing se lleva a cabo mediante los diagramas de transición y combinarlos de manera parecida a lo que se realiza en la formación  de la unión y concatenación de los autómatas finitos.

Page 14: Lenguajes Turing

- Construcción de máquinas de Turing complejas a partir de bloques elementales.

- Transferencia de control entre máquinas: →M1→  M2

Page 15: Lenguajes Turing

Pasos para la construcción de una máquina de Turing

1.-Elimine las características de inicio de los estados iniciales de las maquinas, excepto la de aquel donde iniciara la maquina compuesta.

2.-Elimine las características de detención de los estados de parada de todas la maquinas e introduzca un nuevo estado de parada que nos se encuentre en ninguno de los diagramas que se combinan.

3.-Para cada uno de los antiguos estados de parada p y cada x en y.

Page 16: Lenguajes Turing

Ejemplificación de  dicha construcción

Page 17: Lenguajes Turing

Los diagramas compuestos para la construcción modular de una máquina de Turing son aquellos en los que cada uno de los bloques de construcción se representa como un nodo, con flechas entre dichos nodos para indicar las transiciones entre bloques.

Se puede combinar dos máquinas de Turing permitiendo que compartan la misma cinta y, que cuando una termine su ejecución, la otra empiece.

El contenido de la cinta cuando comienza la ejecución de la segunda máquina de Turing, está formado por todo lo que dejó la primera máquina de Turing, y la cabeza de l/e de la segunda se situará, al comienzo de la ejecución, sobre la celda de la cinta sobre la que terminó la primera.

Page 18: Lenguajes Turing

Un sistema Turing completo es aquel que puede simular el comportamiento de una máquina de Turing. 

Es evidente que salvando los problemas de memoria, los ordenadores modernos y  los lenguajes de programación de uso general, son sistemas de Turing completos.  También es evidente, que con independencia de su forma concreta, cualquier dispositivo que se comporte como un sistema de Turing completo, puede en principio ejecutar cualquier cálculo que realice cualquier computador.

Nota: Observe que la anterior afirmación no menciona para nada la posible dificultad de escribir el programa o del tiempo que pueda emplear en realizar el cálculo (cualquier cálculo que pueda hacer un ordenador puede teóricamente efectuarse con papel y lápiz).

Page 19: Lenguajes Turing

Una máquina de Turing es un autómata que se mueve sobre una secuencia lineal de datos.  En cada instante la máquina puede leer un solo dato de la secuencia (generalmente un carácter) y realiza ciertas acciones en base a una tabla que tiene en cuenta su "estado" actual (interno) y el último dato leído.  Entre las acciones está la posibilidad de escribir nuevos datos en la secuencia;  recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto finito de estados posibles.

Maquina s de Turing Compuesta.

Page 20: Lenguajes Turing

Lenguajes Aceptados

Por la m

aquina de Turin

g

Page 21: Lenguajes Turing

La máquina de Turing es más una abstracción matemática que un dispositivo físico o mecánico.

Lenguaje aceptado por una maquina de Turing

El lenguaje aceptado por una maquina de turing es esta 7-tupla:

MT= (Q, Σ, Γ, δ, q, B, F)

• L(M) es el lenguaje aceptado por la maquina de Turing

• La cadena de entrada puede ser aceptada o rechazada sin necesidad de leerse completamente.

• El lenguaje o problema es recursivamente enumerable o computable cuando es calculado por la maquina de Turing

• El lenguaje es recursivo o decidible cuando es calculado por una maquina de Turing que siempre se detiene (tanto acepta como si no lo hiciera)

Page 22: Lenguajes Turing

Lenguajes aceptados por la máquina de Turing

Una máquina de Turing puede ser usada para calcular funciones y para aceptar lenguajes. En el primer caso el resultado de una computación se define in términos del estado en donde termina la computación o la configuración de la cinta. En el segundo caso, una computación acepta o rechaza la cadena de entrada. A diferencia de un autómata finíto o de Push Down, la máquina de Turing no necesita leer toda la cadena de entrada para aceptar la cadena. Una máquina de Turing aumentada con estados finales es un sextuple (Q, S, G, d, q0, F) donde F es un subconjunto de Q y contiene los estados finales.

Page 23: Lenguajes Turing

Un lenguaje aceptado por una máquina de Turing es llamado lenguaje recursivamente enumerable. La habilidad de una máquina de Turing para moverse en ambas direcciones y procesar blancos introduce la posibilidad de no parar (halt) ante ciertas entradas. Un lenguaje que es aceptado por una máquina de Turing y que termina (halt) ante todas las cadenas de entrada es llamado lenguaje recursivo. Existen muchas máquinas de Turing que aceptan un lenguaje en particular; algunas pueden parar (halt) para todas las entradas mientras otras no. La existencia de una máquina de Turing que para (halt) con todas las entradas es suficiente para demostrar que el lenguaje es recursivo.

Page 24: Lenguajes Turing
Page 25: Lenguajes Turing

Los lenguajes aceptados por una maquina de Turing se les conoce como LENGUAJES RECURSIVAMENTE ENUMERABLES (RE)El termino “Enumerable” proviene de que una maquina de Turing puede listar o enumerar las cadenas del lenguaje. Los Lenguajes recursivamente enumerables es un conjunto de lenguajes bastante grande, incluye a los Lenguajes independientes de contexto.

• Los lenguajes formales tienen una amplia variedad de formas .

• Cadenas producidas por GRAMATICA FORMAL • Cadenas producidas por una EXPRESION

REGULAR• Cadenas aceptadas por un AUTOMATA

Las cadenas están formadas por un conjunto de símbolos que pertenecen a un mismo lenguaje con Sintaxis y Semantica

Lenguajes formales 

Que pueden ser generados por una gramática de tipo 0: recursivamente innumerable (r.e).

Las maquinas de turing son los reconocedores de lenguaje más poderosos que existen.

Page 26: Lenguajes Turing

Lenguajes regulares: las gramáticas (de tipo 3) formales definen un lenguaje describiendo como se pueden generar las cadenas del lenguaje… Las gramáticas regulares (aquellos reconocidos por un autómata finito). Son las gramáticas más restrictivas. El lado derecho de una producción debe contener un símbolo Terminal y como máximo un símbolo no Terminal.

Lenguajes Libres de contexto: Estas gramáticas conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto. Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autómata de pila determinístico o no determinístico. Como toda gramática se definen mediante una cuádrupla G=N, T, S, P), siendo N un conjunto finito de símbolos no terminales; T un conjunto de símbolos terminales: P un conjunto finito de producciones; S es el símbolo distinguido o axioma.