Clase 20: Variantes de la Máquina de Turing M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom edfranco@ipn.mx 1 • Introducción • Almacenamiento en el Estado • Ejemplo 01 • Separar la cinta en tramos o pistas • Ejemplo 02 • Combinando variantes Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Contenido • Ejemplo 03 2 Compiladores (Lenguajes y gramáticas - Edgardo A. Franco) • Hay otros modelos de máquinas de Turing • Todos ellos son equivalentes al modelo simple (máquinas estándar). 1. Cualquier máquina estándar puede ser simulada por una máquina de estos modelos 2. Cualquier máquina de estos modelos puede ser simulada por una máquina estándar. Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Introducción 3. Ningún modelo es más potente que el modelo estándar 3 Compiladores (Lenguajes y gramáticas - Edgardo A. Franco) • Una máquina M puede almacenar datos en su unidad de control (y realizar los movimientos en función de estos datos y del estado actual): (no cambia la definición de la máquina de Turing) Compiladores (Lenguajes y gramáticas - Edgardo A. Franco) Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Almacenamiento en el Estado 4 • M= ({0,1,•},{1,0},•,Q,[q0,•],f,{[q2, •]}) Donde: Q={[q0,•], [q1,1], [q1,0], [q2,•]} ⊆{q0,q1,q2}×{0,1, •} (los estados son tuplas [estado, dato]) Transiciones: f([q0,•],0)= ([q1,0], •,R) f([q0,•],1)= ([q1,1], •,R) f([q1,0],1)= ([q1,0], •,R) f([q1,1],0)= ([q1,1], •,R) f([q1,0],0)= ([q2,•],0,L) f([q1,1],1)= ([q2,•],1,L) Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Ejemplo 01 5 [q0, •]= 0 1 1 1 … [q1,0]= … 1 0 1 1 [q1,0]= … 0 1 1 … [q2,•]= … • 0 1 1 … … Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez [q0,•]01011├ [q1,0]1011├ [q1,0]011├ [q2,•]•011 6 • Se puede considerar que la cinta de una máquina M tiene varias pistas o tramos (para almacenar distintos datos). Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Separar la cinta en tramos o pistas • Idea: se considera los símbolos de la cinta como tuplas [X,Y] 7 • Usar el primer tramo para marcar celdas en el segundo tramo. • Marcar la primera b (alfabeto de entrada es {a,b}) Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Ejemplo 02 8 ••••• •••• ••* q0a...ab...├* a...aq0b...├ a...abq1... Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Transiciones: f(q0,[•,a])= (q0,[•,a],R) f(q0,[•,b])= (q1,[*,b],R) 9 • Si consideramos el almacenamiento de símbolos en el estado y el aumento de la cantidad de cintas, podríamos facilitar la tarea de implementar problemas más complejos de manera más simple. Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Combinando variantes 10 • Buscar la celda marcada, cópiala al dato almacenado en el estado y quita la marca (alfabeto de entrada es {a,b}) f([q0,•],[•,a])= ([q0,•],[•,a],R) f([q0,•],[•,b])= ([q0,•],[•,b],R) f([q0,•],[*,b])= ([q1,b],[•,b],R) f([q0,•],[*,a])= ([q1,a],[•,a],R) ••*• •• *• ••• • [q0,•] aabb...├* aa[q0,•] bb...├ aab[q1,b]b... Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Ejemplo 03 11 Teoría computacional Clase 20: Variantes de la Máquina de Turing la cinta en tramos Prof. Edgardo Adrián Franco Martínez Quedando de la siguiente manera: q1 b 12