curso básico de computación -...

43
Curso Básico de Computación 7 Máquina de Turing Feliú Sagols Troncoso Matemáticas CINVESTAV-IPN <[email protected]> 2010 Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 1 / 43

Upload: lytram

Post on 17-Oct-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Curso Básico de Computación7 Máquina de Turing

Feliú Sagols Troncoso

MatemáticasCINVESTAV-IPN

<[email protected]>

2010

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 1 / 43

7 Máquina de Turing

Es este capítulo introducimos la Máquina de Turing que es, unmodelo matemático simple de una computadora.

7.1 IntroducciónHasta ahora no se ha podido demostrar que el modelo de la maquinade Turing es equivalente a nuestra noción intuitiva de unacomputadora, pero existen argumentos complejos que sugieren estaequivalencia, a esto se le conoce como la hipótesis de Church. Lamaquina de Turing tiene un poder computacional más grande quecualquier computadora digital actual y no parece factible que puedaser superada algún día. Al igual que los AFD y los AP, la máquina deTuring es un dispositivo teórico que se utiliza principalmente enestudios de computabilidad y de análisis de complejidadcomputacional.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 2 / 43

7.2 El modelo de la Máquina de Turing

Un modelo formal de cómputo efectivo debe tener ciertaspropiedades. Primero, cada procedimiento debe poder ser descrito demanera finita. Segundo, el procedimiento debe consistir de pasosseparados, y cada uno de ellos debe poderse llevar a cabo de maneramecánica. Este modelo fue introducido por Alan Turing en 1936.Aquí presentaremos una variante.El modelo básico que se ilustra en la siguiente figura,

a1 a2 ai an B B

Control

Finito

...... ...

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 3 / 43

tiene un control finito, una cinta que está dividida en celdas, y unacabeza de la cinta que explora una celda en la cinta a la vez. La cintatiene una primer celda ubicada en la posición más a la izquierda de lacinta pero es infinita del lado derecho. Cada celda en la cinta puedecontener exactamente un símbolo tomado de un alfabeto finito.Inicialmente, las n celdas más a la izquierda, para algún número finiton ≥ 0, contienen la entrada de la máquina, la cual es una cadena desímbolos que se escogen de un alfabeto llamado símbolos de entrada.Todas las celdas restantes (que forman un conjunto infinito)contienen el símbolo blanco, el cual es un símbolo especial que noforma parte del alfabeto de entrada.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 4 / 43

Un movimiento en la Máquina de Turing depende del símboloexplorado por la cabeza de la cinta y del estado de control finito. Demanera sintética se hace lo siguiente:

1 dependiendo del símbolo explorado por la cabezalectora/escritora y del estado en el control finito se cambia deestado,

2 se imprime un símbolo en la celda explorada, reemplazando elsímbolo que ésta contenga y

3 se mueve la cabeza de lectura una celda hacia la izquierda oderecha.

Note que la diferencia entre la máquina de Turing y un autómatafinito de doble vía es que la máquina de Turing tiene la habilidad decambiar los símbolos en la cinta de entrada.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 5 / 43

Formalmente, una máquina de Turing (MT) se denota por:

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

donde

Q es un conjunto finito de estados,

Γ es un conjunto finito de símbolos, llamado alfabeto de la cinta,

B es un símbolo en Γ, y el símbolo blanco,

Σ es un subconjunto de Γ que no incluye a B, es el alfabeto de

símbolos de entrada,

δ es la función que determina los movimientos de la máquina, esuna transformación de Q × Γ a Q × Γ× {L,R} (δ puede estarindefinida para algunos argumentos),

q0 ∈ Q es el estado inicial,

F ⊆ Q es el conjunto de estados finales.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 6 / 43

Una descripción instantánea (DI) de una máquina de Turing M esuna expresión α1qα2. Aquí q ∈ Q, es el estado actual de M ; α1α2 esuna cadena en Γ∗ y es el contenido de la cinta hasta el símbolo noblanco más a la derecha o el símbolo de la izquierda de la cabeza,cualquiera que este más a la derecha. (Observe que el blanco B

puede ocurrir en α1α2).

Asumimos que Q y Γ son disjuntos. Finalmente, asumimos que lacabeza de la cinta explora el símbolo más a la izquierda de α2, o siα2 = ǫ, la cabeza explora un blanco.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 7 / 43

Se define un movimiento en M como: sea X1X2 · · ·Xi−1qXi · · ·Xn unaDI. Se supone que δ(q,Xi) = (p,Y , L), si i − 1 = n, entonces seconsidera a Xi como B. Si i = 1 entonces no es posible realizar elmovimiento a la izquierda así que no hay DI siguiente porque lacabeza de la cinta no tiene permitido desprenderse del fin izquierdode la cinta. Si i > 1, entonces escribimos

1) X1X2 · · ·Xi−1qXi · · ·Xn M X1X2 · · ·Xi−2pXi−1YXi+1 · · ·Xn

Sin embargo, si cualquier sufijo de Xi−1YXi+1 · · ·Xn escompletamente blanco entonces el sufijo se borra en (1).

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 8 / 43

Alternativamente si δ(q,Xi) = (p,Y ,R) entonces escribimos:

2) X1X2 · · ·Xi−1qXiXi+1 · · ·Xn M X1X2 · · ·Xi−1YpXi+1 · · ·Xn

Note que en el caso de i − 1 = n, la cadena Xi · · ·Xn es vacía, y ellado derecho de (2) es más largo que el lado izquierdo.Si dos DI están relacionadas por M , decimos que la segunda resultade la primera por un movimiento. Si una DI resulta de otra por unnúmero finito de movimientos, incluyendo cero movimientos, ellasestán relacionadas por el símbolo

*M .

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 9 / 43

El lenguaje aceptado por M, denotado por L(M), es el conjunto delas palabras en Σ∗ que causan que M entre a un estado final cuandose colocan al principio de la cinta de M , con M en el estado q0, y lacabeza de la cinta de M en la celda más a la izquierda. Formalmente,el lenguaje aceptado por M = (Q,Σ, Γ, δ, q0,B, F ) es

{w | w ∈ Σ∗, q0w*

M α1pα2

para algún p ∈ F , y α1, α2 ∈ Γ∗}Dada una MT que reconoce un lenguaje L, asumimos sin perdergeneralidad que la MT se para, es decir, no tiene más movimientos,cuando la entrada es aceptada. Sin embargo, para algunas palabrasno aceptadas, es posible que la MT nunca pare.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 10 / 43

Ejemplo:

El diseño de una MT que acepte el lenguaje L = {0n1n | n ≥ 1} es:inicialmente, la cinta de entrada de M contendrá 0n1n seguido de unnúmero infinito de blancos. Repetidamente, M reemplaza el 0 más ala izquierda por X , mueve hacia la derecha la cabeza de la cintahasta encontrar el 1 que esté más a la izquierda, reemplazandolo porY , luego se mueve a la izquierda para encontrar la X más a laderecha, entonces mueve la cabeza una celda hacia la derecha y siencuentra un 0 entonces repite el ciclo. Sin embargo, si cuando sebusca un 1, M encuentra un blanco en su lugar, entonces M se parasin aceptar su entrada . Si, después de cambiar un 1 por una Y , M

no encuentra más 0’s, entonces M examina que no haya más 1, si nolos hay entonces acepta su entrada.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 11 / 43

Sea Q = {q0, q1, q2, q3, q4}, Σ = {0, 1}, Γ = {0, 1,X ,Y ,B}, yF = {q4}. Informalmente, cada estado representa una declaración oun grupo de declaraciones en un programa. Al estado q0 se ingresainicialmente y es el estado previo a cada reemplazo del 0 más a laizquierda por una X . El estado q1 se usa para buscar a la derecha,saltando sobre los 0’s y las Y ’s, hasta encontrar el 1 más a laizquierda. Si M encuentra 1, lo cambia por Y , y entra al estado q2.

El estado q2 busca a la izquierda una X y entra en el estado q0

cuando lo encuentra, luego se mueve hacia la derecha hasta el 0ubicado más a la izquierda. Conforme M busca hacia la derecha en elestado q1, si B o X aparecen antes de encontrar un 1, entonces laentrada es rechazada; puede que haya demasiados 0’s o la entrada noesta en 0∗1∗.El estado q0 tiene otro papel. Si, después del estado q2 se encuentrala X más a la derecha, existe una Y inmediatamente a su derecha,entonces los 0’s están agotados.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 12 / 43

Desde q0, se explora Y , entra el estado q3 para explorar sobre las Y ’sy examina que no haya 1’s restantes. Si las Y ’s están seguidas por B,se entra al estado q4 y la aceptación ocurre; en otro caso, la cadenaes rechazada. La función δ es:

Estado 0 1 X

q0 (q1,X ,R) − −q1 (q1, 0,R) (q2,Y , L) −q2 (q2, 0, L) − (q0,X ,R)q3 − − −q4 − − −

Estado Y B

q0 (q3,Y ,R) −q1 (q1,Y ,R) −q2 (q2,Y , L) −q3 (q3,Y ,R) (q4,B,R)q4 − −

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 13 / 43

La siguiente tabla muestra el cálculo de M para la entrada 0011.

q00011 Xq1011 X0q111 Xq20Y 1q2X0Y 1 Xq00Y 1 XXq1Y 1 XXYq11XXq2YY Xq2XYY XXq0YY XXYq3Y

XXYYq3 XXYYBq4

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 14 / 43

7.3 Lenguajes computables y funciones

Un lenguaje que es aceptado por una máquina de Turing se dicerecursivamente enumerable (r.e.). El término “enumerable” deriva delhecho de que precisamente estos lenguajes tienen cadenas quepueden ser enumeradas (listadas) por la máquina de Turing. La clasede los lenguajes r.e es muy amplia e incluye propiamente a los LLC.La clase de lenguajes r.e. incluye algunos lenguajes para los cuales nose puede determinar mecánicamente su pertenecia. Si L(M) es tallenguaje, entonces cualquier máquina de Turing que reconozca aL(M) falla y se detiene con alguna entrada que no está en L(M). Siw ∈ L(M), M eventualmente se para con la entrada w . Sin embargo,mientras M se mantenga en ejecución, puede que en algún momentopare y acepte su entrada o pueda que se mantenga así por siempre.Es conveniente distinguir una subclase de los conjuntos r.e. llamadaconjuntos recursivos, los cuales son los lenguajes aceptados por almenos una máquina de Turing que se para con todas las entradas.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 15 / 43

La máquina de Turing como un medio para evaluarfunciones enterasLa máquina de Turing puede verse como un medio para evaluarfunciones de los enteros a los enteros. El método tradicional consisteen representar a los enteros en base 1; así el entero i ≥ 0 serepresenta por la cadena 0i . Si una función tiene k argumentos,i1, i2, ..., ik , entonces estos enteros se colocan inicialmente en la cintaseparados por 1’s: 0i110i21 · · ·10ik .

Si la MT se para y la cinta contiene 0m para algún m, entonces sedice que f (i1, i2, ..., ik) = m, donde f es la función de k argumentoscalculados por esta máquina de Turing. Note que una máquina deTuring puede calcular una función de un argumento, una funcióndiferente de dos argumentos, y así sucesivamente. También note quesi la MT M calcula la función f con k argumentos, entonces f nonecesariamente tiene un valor para todas las diferentes k-tuplas deenteros i1, i2, ..., ik .

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 16 / 43

Si f (i1, i2, ..., ik) está definida para todas las i1, i2, ..., ik , entonces sedice que f es una función recursiva total. Una función f (i1, i2, ..., ik)calculada por la MT se llama función recursiva parcial. En estesentido, las funciones recursivas parciales son análogas a los lenguajesr.e., las funciones recursivas totales corresponden a los lenguajesrecursivos. Todas las funciones aritméticas sobre enteros, como lamultiplicación, n!, 22n

son funciones recursivas totales.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 17 / 43

Ejemplo:

La sustracción propia ������

������

se define como m − n para m ≥ n, y 0 param < n. La MT M = ({q0, q1, ..., q6}, {0, 1}, {0, 1,B}, δ, q0,B, {q6})se define como: se inicia con 0m10n en la cinta, se para con 0m ��

����

������

n.M reemplaza repetidamente el primer 0 por blanco, entonces busca ala derecha un 1 seguido de un 0 y cambia el 0 por el 1. Luego, M semueve hacia la izquierda hasta encontrar un blanco, se mueve haciala derecha y entonces repite el ciclo. La repetición termina si

i) Al buscar hacia la derecha un 0, M encuentra un blanco.Entonces, los n 0’s en 0m10n han sido todos cambiados por 1’s,y n + 1 de los m 0’s fueron cambiados por B. M reemplaza losn + 1 1’s por un 0 y n B’s, quedando m − n 0’s de la cinta.

ii) Comenzando el ciclo, M no encontró un 0 para cambiarlospor un blanco, porque los primeros m 0’s ya fueron cambiados.Entonces n ≥ m, así m ��

����

������

n = 0. M reemplaza el resto de todoslos 1’s y 0’s por B.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 18 / 43

La función δ se describe como:

1 δ(q0, 0) = (q1,B,R)Comienza el ciclo. Reemplaza el primer 0 por el B.

2 δ(q1, 0) = (q1, 0,R)δ(q1, 1) = (q2, 1,R)Busca en la derecha, búscando al primer 1.

3 δ(q2, 1) = (q2, 1,R)δ(q2, 0) = (q3, 1, L)Busca en la derecha al primer 0 que aparezca después de un 1.Cambia ese 0 por 1.

4 δ(q3, 0) = (q3, 0, L)δ(q3, 1) = (q3, 1, L)δ(q3,B) = (q0,B,R)Se mueve hacia la izquierda hasta encontrar el primer blanco.Entra al estado q0 para repetir el ciclo.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 19 / 43

5 δ(q2,B) = (q4,B, L)δ(q4, 1) = (q4,B, L)δ(q4, 0) = (q4, 0, L)δ(q4,B) = (q6, 0,R)Si en el estado q2 aparece un símbolo B antes de un 0, se tienela situación (i) que se describió antes. Entra al estado q4 y semueve hacia la izquierda, cambiando todos los 1’s por B’s hastaencontrar a B. Esta B se cambia de regreso a 0, se entra alestado q6, y M se detiene.

6 δ(q0, 1) = (q5,B,R)δ(q5, 0) = (q5,B,R)δ(q5, 1) = (q5,B,R)δ(q5,B) = (q6,B,R)Si en el estado q0 aparece un 1 en lugar de un 0, el primerbloque de 0’s ha sido consumido, como en la situación (ii)anterior. M entra al estado q5 para borrar el resto de la cinta,entonces entra al estado q6 y se para.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 20 / 43

Un cálculo simple de M con la entrada 0010 es:

q00010 Bq1010 B0q110 B01q20

B0q311 Bq3011 q3B011 Bq0011

BBq111 BB1q21 BB11q2 BB1q41

BBq41 Bq4 B0q6

Con la entrada 0100, M se comporta como:

q00100 Bq1100 B1q200 Bq3110

q3B110 Bq0110 BBq510 BBBq50

BBBBq5 BBBBBq6

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 21 / 43

7.4 Técnicas para la construcción de máquinas de

Turing

Con el objeto de describir construcciones complicadas de la máquinade Turing es importante contar con herramientas conceptuales de“alto nivel”.

Almacenamiento en el control finitoEl control finito puede ser usado para almacenar una cantidad finitade información. Así, cada estado se escribe como un par deelementos, uno que ejerce el control y el otro almacena un símbolo.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 22 / 43

Ejemplo:Considere una máquina de Turing M que mira el primer símbolo deentrada, lo registra en su control finito, y verifica que el símbolo noaparezca en otra parte de la entrada. Note que M acepta un conjuntoregular, pero M nos sirve para propósitos de demostración:

M = (Q, {0, 1}, {0, 1,B}, δ, [q0,B],B, F )

donde Q es {q0, q1} × {0, 1,B}. Es decir, Q consiste de los pares[q0, 0], [q0, 1],[q1, 0],[q1, 1] y [q1,B]. El conjunto F es {[q1,B]}. Laintención es que el primer componente de un estado de control estéen acción, mientras el segundo componente “recuerde” un símbolo.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 23 / 43

Se define δ como

1 a) δ([q0,B], 0) = ([q1, 0], 0,R),b) δ([q0,B], 1) = ([q1, 1], 1,R),Inicialmente, q0 es el componente de control del estado, y M semueve hacia la derecha. Los primeros componentes de los estadode M se convierten en q1, y el primer símbolo de entrada esalmacenado en la segunda componente.

2 a) δ([q1, 0], 1) = ([q1, 0], 1,R),b) δ([q1, 1], 0) = ([q1, 1], 0,R),Si M tiene un 0 almacenado y ve un 1 o viceversa, entonces M

continua moviendose hacia la derecha.

3 a) δ([q1, 0],B) = ([q1,B],B, L),b) δ([q1, 1],B) = ([q1,B],B, L),M entra al estado final [q1,B] si se alcanza un símbolo blancosin haber encontrado el primero una segunda copia del símbolomás a la izquierda.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 24 / 43

Si M alcanza un blanco en el estado [q1, 0] o [q1, 1], es aceptado.Para el estado [q1, 0] y el símbolo 0 o para el estado [q1, 1] y elsímbolo 1, δ no está definida. Así si M encuentra símbolos en la cintaalmacenados, M se para sin aceptar.

En general, podemos permitir que el control finito tenga k

componentes y todas, excepto una, almacenen información.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 25 / 43

Múltiples pistasPodemos imaginar que la cinta de la máquina de Turing está divididaen k pistas, para algún k finito. Por ejemplo, para k = 3 estamoshablando de una división como la que se muestra en la siguientefigura

c 1 0 1 1 1 1 $ B B

B B B B 1 0 1 B B B ...B 1 0 0 1 0 1 B B B

ControlFinito

Es decir, bajo este esquema los símbolos en la cinta son consideradoscomo un k-tuplas con un componente por cada pista.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 26 / 43

Ejemplo:La cinta de la figura anterior pertenece a una máquina de Turing quetoma una entrada binaria más grande que 2, la escribe en la primerapista, y determina si es un primo. La entrada aparece rodeada por ç y$ en la primera pista. Así, las entradas permitidas son[ c ,B,B], [0,B,B], [1,B,B], y [$,B,B]. Estos símbolos pueden seridentificados con c , 0, 1 y $, respectivamente, cuando se examinacomo entrada. El símbolo blanco es identificado por [B,B,B].

Para probar si esta entrada es un primo, la MT primero escribe elnúmero dos en binario sobre la segunda pista y copia la primer pistaen la tercera. Entonces la segunda pista es substraída, tantas vecescomo sea posible, de la tercera pista, efectivamente se divide latercera pista por la segunda y deja el resto.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 27 / 43

Si el resto es 0, el número en la primera pista no es un primo. Si elresto no es cero, se incrementa en uno el número de la segunda pista.Si la segunda es igual a la primera, el número en la primera pista esprimo, porque no se puede dividir por cualquier otro númeropropiamente situado entre 1 y el mismo. Si el segundo es menor queel primero, toda la operación se repite para el nuevo número de lasegunda pista.

En la figura anterior, la MT prueba si 47 es primo. La MT divide por5, ya que el 5 es substraído dos veces, aparece el 37 en la tercerapista.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 28 / 43

Poniendo marcas de verificación sobre los símbolosPoner marcas de verificación sobre los símbolos es un truco útil paravisualizar como una MT reconoce lenguajes definidos por cadenasrepetidas, tales como:

{ww | w ∈ Σ∗}{wcy | w , y ∈ Σ∗, w 6= y}

o

{wwR | w ∈ Σ∗}.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 29 / 43

Es también útil cuando la longitud de las subcadenas deben sercomparadas, como en los lenguajes

{aibi | i ≥ 1}

o

{aibjck | i 6= j o j 6= k}Se introduce una pista extra en la cinta que tenga blancos o

√(la

marca de verificación). La marca√

aparece cuando la MT considerael símbolo que aparece bajo la marca es una de sus comparaciones.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 30 / 43

Ejemplo:

Considere una máquina de Turing M = (Q,Σ, Γ, δ, q0,B, F ), la cualreconoce el lenguaje {wcw | w ∈ (a + b)+}. Sea

Q = {[q, d ] | q = q1, q2, ..., q9; d = a, b, o B}

La segunda componente del estado se usa para almacenar un símbolode la entrada,

Σ = {[B, d ] | d = a, b, o c}El símbolo de entrada [B, d ] se identifica con d . Recuerde que dos“pistas” son herramientas conceptuales, es decir, [B, d ] es otro“nombre” de d :

Γ = {[X , d ] | X = B o√

; d = a, b, c, o B}

q0 = [q1,B]; F = {[q9,B]};

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 31 / 43

[B,B] es identificado con B, símbolo blanco. Para d = a o b y e = a

o b se define δ como:

1) δ([q1,B], [B, d ]) = ([q2, d ], [√, d ],R)

M busca el símbolo explorado en la cinta, almacena el símboloen el control finito, y se mueve hacia la derecha.

2) δ([q2, d ], [B, e]) = ([q2, d ], [B, e],R)M continua moviendose hacia la derecha, mira hacia c.

3) δ([q2, d ], [B, c]) = ([q3, d ], [B, c],R)Al encontrar c, M entra a un estado con la primer componenteq3.

4) δ([q3, d ], [√, e]) = ([q3, d ], [

√, e],R)

M se mueve hacia la derecha sobre símbolos que tengan marcasde verificación.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 32 / 43

5) δ([q3, d ], [B, d ]) = ([q4,B], [√, d ], L)

M encuentra un símbolo sin marca de verificación. Si tal símboloes igual al símbolo almacenado en el control finito. M le pone lamarca de verificación y comienza a moverse hacia la izquierda.Si los símbolos son diferentes, M se para sin aceptar su entrada.M también se para si en el estado q3, alcanza [B,B] antes deencontrar un símbolo sin marcas de verificación.

6) δ([q4,B], [√, d ]) = ([q4,B], [

√, d ], L)

M se mueve hacia la izquierda sobre símbolos con marcas deverificación.

7) δ([q4,B], [B, c]) = ([q5,B], [B, c], L)M encuentra el símbolo c.

8) δ([q5,B], [B, d ]) = ([q6,B], [B, d ], L)Si el símbolo inmediato a la izquierda de c no tiene marca deverificación. M continúa hacia la izquierda para encontrar elsímbolo con marca de verificación más a la derecha.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 33 / 43

9) δ([q6,B], [B, d ]) = ([q6,B], [B, d ], L)M continúa a la izquierda.

10) δ([q6,B], [√, d ]) = ([q1,B], [

√, d ],R)

M encuentra un símbolo con marca de verificación y se muevehacia la derecha para continuar con otro símbolo para lacomparación. El primer componente del estado se convierte otravez en q1.

11) δ([q5,B], [√, d ]) = ([q7,B], [

√, d ],R)

M podría estar en el estado [q5,B] inmediatamente después decruzar c moviendose hacia la izquierda (ver regla 7). Si unsímbolo con marca de verificación aparece inmediatamente a laizquierda de c, todos los símbolos a la izquierda de c tienenmarcas de verificación. M debe probar si todos los símbolos a laderecha tienen marcas de verificación. Si es así, ellos debenhaber sido comparados propiamente con los símbolos a laizquierda de c, así M aceptará su entrada.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 34 / 43

12) δ([q7,B], [B, c]) = ([q8,B], [B, c],R)M se mueve hacia la derecha sobre c.

13) δ([q8,B], [√, d ]) = ([q8,B], [

√, d ],R)

M se mueve hacia la derecha sobre los símbolos con marcas deverificación.

14) δ([q8,B], [B,B]) = ([q9,B], [√,B], L)

Si M encuentra [B,B], el blanco, se para y la acepta. Si M

encuentra un símbolo sin marca de verificación cuando su primercomponente del estado es q8, se para sin aceptarla.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 35 / 43

CorrimientosUna máquina de Turing puede hacer un espacio en su cinta paramover todos los símbolos no blancos a un número finito de celdashacia la derecha. Para hacer esto, la cabeza de la cinta hace unaexcursión a la derecha, repetidamente almacena los símbolos leídosen el control finito y los reemplaza por símbolos leídos de celdas de laizquierda. La MT pueden entonces regresar a las celdas vacantes eimprimir los símbolos escogidos. Si el espacio es suficiente, puedeempujar bloques de símbolos a la izquierda de manera similar.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 36 / 43

Ejemplo:

Construir una parte de la MT M = (Q,Σ, Γ, δ, q0,B, F ), la cualpuede ocasionalmente necesitar mover dos celdas de símbolos noblancos a la derecha. Suponemos que la cinta de M no contieneblancos entre no blancos, así que cuando se alcance un blanco separa el proceso de moverse. Supongamos que Q contiene estados dela forma [q,A1,A2] para q = q1 o q2, y A1,A2 ∈ Γ. Sea X un símboloespecial no usado por M excepto en el proceso de corrimiento. M

comienza el proceso de corrimiento en el estado [q1,B,B]. Las partesrelevantes de la función δ son:

1) δ([q1,B,B],A1) = ([q1,B,A1],X ,R) para A1 ∈ Γ− {B,X}.M almacena el primer símbolo leido en la tercera componentedel estado. X se imprime sobre la celda explorada, y M se muevehacia la derecha.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 37 / 43

2) δ([q1,B,A1],A2) = ([q1,A1,A2],X ,R) paraA1,A2 ∈ Γ− {B,X}.M mueve el símbolo de la tercera componente a la segundacomponente, almacena el símbolo que comienza a leer en latercera componente, imprime X y se mueve hacia la derecha.

3) δ([q1,A1,A2],A3) = ([q1,A2,A3],A1,R) paraA1,A2,A3 ∈ Γ− {B,X}.Ahora M repetidamente lee el símbolo A3, lo almacena en latercera componente del estado, mueve el símbolo quepreviamente estaba en la tercera componente, A2, a la segundacomponente, deposita la segunda componente previa, A1, en lacelda explorada, y se mueve hacia la derecha. Así, un símbolo sedeposita en dos celdas a la derecha de su posición original.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 38 / 43

4) δ([q1,A1,A2],B) = ([q1,A2,B],A1,R) paraA1,A2 ∈ Γ− {B,X}.Cuando se ve un blanco en la cinta, los símbolos almacenadosson depositados en la cinta.

5) δ([q1,A1,B],B) = ([q2,B,B],A1, L)Después de que todos los símbolos son depositados, M cambiala primer componente del estados a q2 y se mueve hacia laizquierda para encontrar un X , el cual marca la celda vacantemás a la derecha.

6) δ([q2,B,B],A) = ([q2,B,B],A, L) para A ∈ Γ− {B,X}.M se mueve hacia la izquierda hasta encontrar a X . Cuando seencuentra X , M transfiere el control a un estado donde elautómata reanuda sus funciones.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 39 / 43

SubrutinasComo en la programación, un diseño “modular” o “de arriba a abajo”se facilita al emplear subrutinas para definir procesos elementales.Una máquina de Turing puede simular cualquier tipo de subrutinasencontradas en lenguajes de programación, incluyendo procesosrecursivos y cualquier mecanismo conocido para transferir parámetros.Aquí sólo vamos a describir el uso de subrutinas sin parámetros y norecursivas, pero aún éstas son herramientas en extremo poderosas.La idea general es escribir parte de un programa de una MT como unasubrutina; el diseño tiene un estado inicial designado y un estado deretorno también designado el cual temporalmente no tiene definidosmovimientos y que se usa para efectuar el regreso a la rutina que loha invocado. Para diseñar una MT que “invoque” a la subrutina, seconstruye un conjunto nuevo de estados para la subrutina, y seespecifica el movimiento al estado de retorno. La llamada se lleva acabo ingresando al estado inicial de la subrutina, y el regreso se llevaa cabo mediante el movimiento al estado de retorno.

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 40 / 43

Ejemplo:El diseño de una MT M que implemente la función “multiplicación”recursiva total es: M comienza con 0m10n en la cinta y termina con0mn rodeados por blancos. La idea general es colocar un 1 después de0m10n y entonces copiar el bloque de n 0’s sobre la parte final de laderecha m veces, borrando en cada paso uno de los m 0’s. Elresultado es 10n10mn. Finalmente se borra el prefijo 10n1, y se deja0mn. El corazón del algoritmo es la subrutina COPIA, que comienzacon la DI 0m1q10n10i y eventualmente genera una DI 0m1q50n10i+n.COPIA es definida en la siguiente tabla:

0 1 2 Bq1 (q2, 2,R) (q4, 1, L)q2 (q2, 0,R) (q2, 1,R) (q3, 0, L)q3 (q3, 0, L) (q3, 1, L) (q1, 2,R)q4 (q5, 1,R) (q4, 0, L)

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 41 / 43

En el estado q1, y con 0 bajo la cabeza de la cinta, M cambia a el 0a 2 y entra al estado q2. En el estado q2, M mueve la cabeza de lacinta hacia la derecha, hasta alcanzar el siguiente símbolo blanco,cambia a este símbolo por 0, e inicia el siguiente movimiento hacia laizquierda en el estado q3. En el estado q3, M mueve la cabeza de lacinta hacia la izquierda hasta encontrar el 2. Al alcanzarlo, entra alestado q1 y el proceso se repite hasta encontrar el 1, que indica queel proceso de copiar está completo. El estado q4 se usa para convertirlos 2 en 0’s, y la subrutina para en q5.Para completar el programa de multiplicación, se añaden estados paraconvertir la DI inicial q00m10n en B0m−11q10

n1. Es decir,necesitamos las reglas

δ(q0, 0) = (q6,B,R),

δ(q6, 0) = (q6, 0,R),

δ(q6, 1) = (q1, 1,R).

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 42 / 43

Se necesitan algunos estados adicionales para convertir la DIB i0m−i1q50

n10ni en B i+10m−i−11q10n10ni , que prepara el entorno

para volver a invocar a COPIA, y verifica si i = m, es decir, si todoslos m 0’s fueron borrados. En caso que i = m, se borra el prefijo 10n1y el cálculo se detiene en el estado q12. Los movimientos son:

0 1 2 Bq5 (q7, 0, L)q7 (q8, 1, L)q8 (q9, 0, L) (q10,B,R)q9 (q9, 0, L) (q0,B,R)q10 (q11,B,R)q11 (q11,B,R) (q12,B,R)

Curso Básico de Computación (Matemáticas) 7 Máquina de Turing 2010 43 / 43