4. Máquinas de Turing 4.1. Modelo básico.

Slides:



Advertisements
Presentaciones similares
Introducción ¿Qué es un Algoritmo?
Advertisements

Conversión de autómata finito con transiciones-ε a autómata finito determinista Estados q3q3 q2q2 q0q0 q1q1 q4q4 a b c c c.
INSTITUTO TECNOLÓGICO DE MINATITLÁN
EJEMPLO 14 De la corriente líquida que se indica en la siguiente figura, han de desorberse SO2 y butadienos (B3 y B2) con nitrógeno, de forma que el producto.
IPEP de Cádiz - Dpto. de Física y Química
Autómatas de pila (Pushdown automata)
Gramáticas.
Diseño de Autómatas Finitos
Autómatas Finitos.
Diseño de AFN’s.
Máquinas de Turing (MT)
Autómata Finito Un autómata finito (AF) es un modelo de computación muy restringido, sin embargo tiene una gran aplicación en reconocimiento de patrones.
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
Procesamiento de cadenas
Conversión de autómata finito con transiciones-ε y no determinista a autómata finito determinista Estados Entradas a b c q0q0 q1q1 q2q2 q3q3 q4q4 ab b.
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
Programas y Máquinas de Turing
¿Cómo hacer para que una máquina comprenda el LN?
Tomado de Sudkamp: Languages and Machines Cap. 7.
Introducción a la máquina
La maquina de Turing La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de.
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
MATRIZ DE CHEQUEO DE PARIDAD
Función Sucesión PARA UN BUEN INICIO
Operaciones con matrices
2º curso Ingeniería Técnica en Informática de Sistemas UNED
Expresiones regulares
5. Propiedades de los Lenguajes Recursivamente
Tema 2 Autómatas finitos 1. Autómata finito determinista
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
METODO SIMPLEX El método Simplex es un procedimiento iterativo que permite ir mejorando la solución a cada paso. El proceso concluye cuando no es posible.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
ANALISIS SINTACTICO DESCENDENTE
Autómatas finitos y expresiones regulares
Cantidad de líneas de campo que atraviesa la superficie ds.
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
CLASIFICACION DE LAS MAQUINAS DE TURING
METODOLOGIA DE LA PROGRAMACION
Matemáticas Discretas y Algoritmos
5. Propiedades de Cierre de los lenguajes regulares
Definición Formal de Autómatas Finitos Métodos de Diseño de AFDs
Tema 2 Lenguajes Formales.
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
GRAFOS HUGO ARAYA CARRASCO.
Fundamentos de Programación
Autómatas de Pila Teoría del Autómata.
Inteligencia artificial
Algoritmos ¿Que es un algoritmo?
Elaborado por: Guillermo Baquerizo I Término
Lenguajes regulares Teoría del Autómata.
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED.
MÁQUINAS DE TURING Teoría del Autómata.
Problemas de grafos y Tratabilidad Computacional
Capítulo 1. Conceptos básicos de la Estadística
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
Autómatas de Pila (Pushdown Automatón)
¿Qué son Los Lenguajes de Programación?
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Programación de Sistemas FEI – 2008
ARQUITECTURA DE LOS SISTEMAS DE INFORMACIÓN
Introducción a Excel Fórmulas
Estructura de datos I CIS - UABJB.
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Elaboración de algoritmos usando lógica de programación
Presente un cuestionario con los aspectos mas importantes sobre los
LENGUAJE ENSAMBLADOR TIPOS DE LENGUAJES ENSAMBLADORES
Lic. Carla Aguirre Montalvo
Análisis cinemático: ACELERACION
MOVIMIENTO SOBRE UNA SUPERFICIE CURVA
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Transcripción de la presentación:

4. Máquinas de Turing 4.1. Modelo básico. 4.2. Técnicas de diseño de máquinas de Turing. 4.3. Otros modelos de máquinas de Turing. 4.4. Lenguajes recursivamente enumerables y recursivos. 4.5. Las máquinas de Turing como aceptores y enumeradores. 4.6. Restricciones de la M. T.

4.1. Modelo básico de Máquina de Turing. 4.1.1. Visión descriptiva control finito Cinta semi-infinita dividida en celdas. Control finito. Cabezal de lectura / escritura. En cada momento cada celda contiene símbolo perteneciente a alfabeto de cinta. Los símbolos de palabra inicial pertenecen a alfabeto de entrada. El resto de la cinta contiene B. a1 a2 a3 ... an B Movimientos. En función del estado del C.F. y del símbolo accedido por el cabezal, la máquina puede: Cambiar de estado. Cambiar el símbolo contenido en la casilla accedida. Desplazar el cabezal una posición a izquierda o derecha.

Los movimientos se repiten hasta que: La máquina entra en estado final (se detiene aceptando la entrada). La máquina intenta acceder a la casilla a la izquierda de la inicial (se detiene rechazando la entrada). La máquina entra en una situación para la que no hay definido movimiento (se detiene rechazando la entrada). Puede ocurrir que ante determinada entrada la máquina siga realizando movimientos sin aceptar ni rechazar dicha entrada. Ejemplo: 0 1 B q0 (q0, 0, R) (q0, 1, R) (q1, B, L) q1 -- (q2, 1, R) -- F ={q2} 0 0 1 1 B 0 0 1 1 B 0 0 1 1 B 0 0 1 1 B 0 0 1 1 B q0 q0 q0 q0 q0 0 0 1 1 B 0 0 1 1 B q1 q2

4.1.2. Descripción formal M = (Q, , , , q0, B, F) Q : Conjunto de estados. : Alfabeto de entrada. : Alfabeto de cinta (   ).  : Función de transición. : Q   Q    {L,R}. q0 : Estado inicial, q0  Q. B: Símbolo blanco B  - . F: conjunto de estados finales, F  Q.

Ejemplo. Máquina de Turing que acepta las palabras sobre el alfabeto {0, 1} que acaban por 1. Se desplaza el cabezal hasta la última casilla de entrada (primer Blanco) Se comprueba que el último símbolo es 1. M = (Q, , , , q0, B, F) Q = {q0, q1, q2}  = {0,1}.  = {0, 1, B}. (q0, 0) = (q0, 0, R), (q0, 1) = (q0, 1, R), (q0, B) = (q1, B, L), (q1, 1) = (q2, 1, R). F = {q2} (0/0/R) (1/1/R) q0 q1 (B/B/L) 0 1 B q0 (q0, 0, R) (q0, 1, R) (q1, B, L) q1 -- (q2, 1, R) -- (1/1/R) q2

4.1.3. Descripción Instantánea Es una secuencia de la forma 1q2 con 1, 2  * y q  Q Describe la situación de una MT con la cinta conteniendo 12 seguida de infinitos B, y el cabezal señalando el primer símbolo de 2 . Sobre el conjunto de las descripciones instantáneas se define la relación movimiento ( ): Supongamos que antes del movimiento la descripción es: x1x2...xi-1 q xix i+1...xn., Si (q, xi) = (p, y, L) se obtiene x1x2...p xi-1 yx i+1...xn. (para i > 1). Si (q, xi) = (p, y, R) se obtiene x1x2... xi-1 y p x i+1...xn.. Si D1 y D2 son dos descripciones instantáneas representamos por D1 D2 el hecho de que D1 pasa a D2 en un movimiento. D1 D2 el hecho de que D1 pasa a D2 en cero o más movimientos.

Una palabra x es aceptada por una máquina de Turing M sii a partir de la descripción inicial se llega a una con estado final x  L(M)  q0 x 1q2 con 1, 2  * y q  F L(M) = {x  * : q0 x 1q2 ,1, 2  * , q  F } Un lenguaje se denomina: Recursivamente Enumerable: si es aceptado por una máquina de Turing. Recursivo: si es aceptado por una máquina de Turing que se detiene ante todas las entradas.

El lenguaje L es recursivo Ejemplo. Sea el lenguaje L formado por todas las palabras sobre {0,1} que contienen al menos un 1. (0/0/R) (0/0/R) (B/B/R) q0 q0 q1 q1 (1/1/R) (1/1/R) Esta máquina se detiene siempre y reconoce L. Esta máquina reconoce L pero no se detiene para 0*. El lenguaje L es recursivo

comienzan y terminan por el mismo símbolo. Ejemplo. Máquina de Turing que acepta el lenguaje de las palabras sobre {0,1} que comienzan y terminan por el mismo símbolo. (0/0/R) (1/1/R) q1 q3 (B/B/L) (0/0/R) (0/0/R) q0 q5 (1/1/R) (1/1/R) (B/B/L) q2 q4 (0/0/R) (1/1/R)

Lenguaje de las palabras palíndromos sobre {0,1} Ejemplo. Lenguaje de las palabras palíndromos sobre {0,1} (0/0/R) (1/1/R) q1 q3 (B/B/L) (0/0/L) (1/1/L) (0/B/R) (0/B/L) (B/B/R) q0 q5 (1/B/L) (B/B/R) (1/B/R) (B/B/L) q2 q4 (B/B/R) (0/0/R) (1/1/R) (B/B/R) q6

4.2. Técnicas de diseño de Máquinas de Turing. - Son técnicas que contribuyen a la comprensión (“subir” el nivel de la programación). - No afectan a la definición. Almacenamiento en control finito Utilizamos para los estados vectores con un número finito de componentes. Una componente cumple la función de control. Las restantes almacenan información. Ejemplo. Máquina de Turing que comprueba que el primer símbolo de una palabra (sobre {0,1}) no vuelve a aparecer Q = { [q0 , B], [q1 , B], [q1 , 0], [q1 , 1]} q0 = [q0 , B], F = { [q1 , B] } ([q0 , B], 0) = ([q1 , 0], 0, R) ([q0 , B], 1) = ([q1 , 1], 1, R) ([q1 , 0], 1) = ([q1 , 0], 1, R) ([q1 , 1], 0) = ([q1 , 1], 0, R) ([q1 , 0], B) = ([q1 , B], B, R) ([q1 , 1], B) = ([q1 , 1], B, R)

Con la representación expuesta anteriormente, la M.T. sería: q1 (B/B/R) (0/0/R) q0 q3 (1/1/R) (B/B/R) q2 (0/0/R)

Ejemplo. Fragmento de código de máquina de Turing que desplaza el contenido de la cinta dos posiciones a la derecha. Se utilizan estados con tres componentes. a1 a2 a3 ... an B B a2 a3 ... an B [q0 , B, B] ([q0 , B, B], a1) = ([q0, B, a1], 0, R) [q0 , B, a1] B a2 a3 ... an B B B a3 ... an B [q0 , B, a1] ([q0 ,B, a1], a2) = ([q0, a1, a2], B, R) [q0 , a1, a2]

B B a3 ... an B B B a1 ... an B [q0 , a1, a2] ([q0 ,B, a1], a2) = ([q0, a1, a2], B, R) [q0 , a2, a3] Al final se realiza el proceso contrario. B B a1 ... an-2 B B B a1 ... an-1 B [q0 , an-1, an] ([q0 , an-1, an], B) = ([q0, an, B], an-1, R) [q0 , an, B] B B a1 ... an-1 B B B a3 ... an B [q0 , an, B]  ([q0 , an, B], B) = ([q0, B, B], an, R) [q0 , B, B]

Con la representación expuesta anteriormente, la M. T Con la representación expuesta anteriormente, la M.T. para desplazar una celda sobre {0, 1} es: Recuerda un 0 (0/0/R) Deposita el último 0 q1 (0/B/R) (B/0/R) q0 (0/1/R) (1/0/R) q3 (1/B/R) (B/1/R) q2 Recuerda un 1 Deposita el último 1 (1/1/R) Máquina que traslada símbolos una celda

Cintas multipista. Se utiliza una cinta dividida en k pistas (nombre de símbolos: vectores de k componentes) q0 La función de transición será de la forma (q , [x , y]) = (p , [x’ , y’], R) ... a1 B ... a2 B Ejemplo. MT que reconoce {0n1n : n>0} (0B/0B/R) (1Y/1Y/R) q1 (0B/0B/L) (1Y/1Y/L) (1B/1Y/L) (0B/0X/R) (0X/0X/R) q2 q0 (1Y/1Y/R) (BB/BB/R) q3 q4 (1Y/1Y/R)

q1 q2 q0 q2 q3 q4 Ejemplo. MT que reconoce {0n1n 0n: n>0} (0/0/R) (Y/Y/R) (Z/Z/R) (1/1/R) (Z/Z/L) (0/0/L) (1/1/L) (Y/Y/L) (1/Y/R) q1 q2 (0/Z/L) (0/X/R) (X/X/R) q0 q2 (B/B/R) (Y/Y/R) para {0n1n 0n: n0} (B/B/R) q3 q4 (Y/Y/R) (Z/Z/R)

4.3. Otros modelos de máquinas de Turing. Afectan a la definición, no a la potencia. 1. Máquina con cinta infinita en los dos sentidos M = (Q, , , , q0, B, F) Diferencia con el modelo básico: Con la D.I. qa, ante (q, a) = (p, x, L) La anterior para. Esta produce la D.I. pBx. L es reconocido por una MT 2   L es reconocido por MT 1   M1= (Q1, , 1, 1, q1, B, F) 1- , construimos M2= (Q2, , 2, 2, q2, B, F) con: Q2 = Q1 {q2},  2 =  1 {X} y 2 = 1 + las siguientes transiciones 1. 2 (q2, a) = (q2, a, L), a (para las que está definida ) 2. 2 (q2, B) = (q1, X, R) 3. No se define 2 (qi, X) B a X a X a 3 2 1 q2 q2 q1 L(M2) = L(M1)

 A partir de una máquina M2 = (Q2, 2, 2, 2, q2, B, F 2) con cinta 2  se construye una M1= (Q1, 1, 1, 1, q1, B, F 1) con dos pistas: Q1= {[q , x]: q  Q2 , x {U, D}} {q1} 1 = {(a, B), a  2} 1 = {(X, Y), X  2 , Y  2  {}} F1 = {[q , X]: q  F 2, X  {U, D}} simula comportamiento a la derecha ... -1 1 2 1 2 B ...  -1 -2 B q2 q1 simula comportamiento a la izquierda La función de transición es de la forma: Si 2 (q2, a) = (q, X, R)  1 (q1, (a, B)) = ([q , U] , (X, ), R) (al comienzo) Si 2 (q2, a) = (q, X, L)  1 (q1, (a, B)) = ([q , D] , (X, ), R) Si 2 (q, X) = (p, Z, A)  1 ([q , U] , (X, Y)) = ([p , U] , (Z, Y), A), A {L, R} ............................

2. Máquina multicinta q No confundir con máquina multipista X1 X2 Xn . . . . . . . Xn Una cinta contiene los datos de entrada, las demás están inicialmente en blanco. Cada cinta tiene su cabezal de L/E que se desplaza de manera independiente. Cada movimiento es función del estado y de los símbolos leidos por los cabezales. En función de ellos, la máquina: - Cambia de estado. - Sustituye los símbolos de las cintas accedidas. - Se desplaza el cabezal (o no, nueva posibilidad). Ejemplo de movimiento de máquina con tres cintas: (q, X1 ,X2 , X3) = (p, Y1 ,Y2 , Y3, M1 ,M2 , M3) Mi {L, R, S}

Máquina multicinta.- Formalización M = (Q, , , , q0, B, F) Función de transición : Q k  Q  (  {-1, 0, 1})k. Descripción instantánea (1q1 , 2q  2 ... kq  k ) Lenguaje aceptado L(M) = {x  * : (q0 x, q0 B... q0 B) (1q1 ,... kq  k ),1, 2  * , q  F } L es reconocido por una MT multicinta  L es reconocido por MT estándar   L = L(M1), M1 multicinta con k cintas. Construimos M2 con una cinta y 2k pistas: El CF de M2 almacena el estado de M1 y el número de marcas a la derecha del cabezal. Cada movimiento de M1 supone dos recorridos de M2. ... x B ... A1 A2 A3 B ... x B ... B1 B2 B3 B marca con posición de cabeza de M1 ... x B ... K1 K2 K3 B contenido de la cinta de M1

... ... ... ... ... ... ... ... 3. Máquina de Turing No Determinista Máquina de Turing estándar con una sola cinta y un solo control finito. Su función de transición es : Q   P(Q    {L,R}). (p, a) = {(p1, a1, z1), (p2, a2, z2),... (pn, an, zn)}, pi  Q, ai , zi  {L,R} Tiene la misma potencia que la estándar. 4. Máquina de Turing Multidimensional Control finito usual. Cinta: matriz de celdas k-dimensional infinita en las 2k direcciones. En función del estado y símbolo, la máquina: -cambia de estado. -se desplaza en una de las 2k direcciones. ... ... B a1 B B ... ... a2 a3 a4 B ... ... B B a5 B ... ... B B B B

... ... ... ... ... ... 5. Máquina de Turing Multicabeza q ...k... X1 Xn En un movimiento cada cabeza puede moverse independientemente. L es reconocido por una MT de k cabezas  L es reconocido por MT estándar   L = L(M1), M1 con k cabezas. Construimos M2 con una cinta y k + 1 pistas: El CF de M2 almacena el estado de M1. La primera pista de M2 almacena el contenido de la cinta de M1. Las restantes contienen marcas (posiciones de los cabezales de M1). ... A1 A2 A3 B ... B x B B ... B B x B ... x B B B k Hipótesis de Church: funciones computables  L. recursivamente enumerables ... B B x B ... x B B B

4.5. Las M.T. como enumeradores M.T. multicinta con una en la que solo se puede escribir y avanzar a la derecha. las palabras se separan por marcas (#). Si aparece x escrito entre dos marcas, la máquina genera x. Solo se genera lenguaje infinito si no para nunca. No se imponen restricciones en cuanto a orden ni repeticiones. G(M) = {x  * : x es eventualmente escrito en la cinta entre #} L = G(M)  L es recursivamente enumerable  Sea L = G(M1). Hay que construir M2 tal que L(M2) = L. M2 toma como entrada x y simula el comportamiento de M1. Cada vez que M1 genera una palabra se compara con x. Si son iguales M2 acepta x.  L(M1) = L. Hay que construir tal que G(M2) = L. Una posibilidad: Producir una enumeración de * y someter cada palabra a M1. Si M1 para, M2 la genera en su cinta de salida. Problema: M1 no necesariamente para ante todas las entradas. ¿Qué ocurre si M1(xi ) no para?

Método correcto: Se fija un orden canónico para *. Se obliga a que M1 pare, proporcionándole: (número de orden de la palabra, pasos que ha de hacer M1) = (i, j) No todas las enumeraciones son válidas, ej (1, 1), (1, 2), (1, 3)...  ¿(2, 1)? Una enumeración es computable si todo par tiene la posibilidad de aparecer en tiempo finito. Ejemplo: Ordenar por i + j creciente. A igualdad valor de i + j ordenar por valores de i crecientes. L es recursivamente enumerable   M : L = G(M) sin repeticiones (el método anterior es el correcto) L es recursivo  M : L = G(M) en orden canónico  L es recursivo  L = L(M1) y  x  *, M1(x) para. Construcción de M: Sometemos a M1, de forma ordenada, *. Si M1 acepta una palabra x, M la genera.

 Supongamos  M : L = G(M) en orden canónico. Construimos M’ como sigue: Toma como entrada x  * M’ simula a M (comienza a generar palabras en orden canónico) Si M genera x, M’ para y acepta la entrada. Si M genera una palabra con índice posterior a x, M’ para y rechaza. Problema: L es finito (no está garantizado que una máquina pare después de generar la última palabra de un lenguaje finito). Si la entrada es posterior a la última palabra de L, no sabemos si acepta  No existe procedimiento efectivo para el cálculo de M’, pero: L es finito  L es regular  L es recursivo.

4.6. Restricciones de la M. T. Si L  (0+1)* recursivamente enumerable   M con  = {0, 1, B}y L = L(M) Supongamos L = L(M1) con M1 = (Q, {0, 1}, 1, , q0, B, F) Con k 0’s y 1’s se pueden codificar entre 2 k-1 + 1 y 2 k símbolos de 1  cada celda de M1 pasa a ser k celdas de M. Si la cinta de M1 contiene la de M contiene El control finito de M ha de guardar además del estado, la posición módulo k de la cabeza. Cada movimiento M1 de supone k movimientos de M. a1 a2 a3 ... an B ... ... ... ... a11 a12 a1k a21 a22 a2k an1 an2 ank B código de a1 Si L  * recursivamente enumerable   M con  = {0, 1, B}y L = L(M)