f1, . . . , fn tales quefn esf y cadafi es recursiva elemental o est´a definida por composici´on, recursi´on o minimizaci´on parcial a partir de funciones anteriores de la sucesi´on.
Obviamente, toda funci´on recursiva es recursiva parcial. Ahora s´ı podemos enumerar expl´ıcitamente todas las funciones recursivas parciales, pero ya no llegamos a ninguna contradicci´on. Simplemente, la funci´on g(n, n) + 1 puede ser igual a una funci´ongn de modo quegn(n) no est´e definido.
5.6
M´aquinas de Turing
El argumento de Turing para probar que las funciones recursivas coinciden con las funciones calculables mediante un algoritmo se basa en el concepto de m´aquina de Turing. Una m´aquina de Turing es un modelo te´orico de ordena- dor con infinita memoria disponible. Aunque la descripci´on que sigue parezca la descripci´on de una m´aquina real, debemos tener presente que una m´aquina de Turing es un concepto abstracto de la misma naturaleza que una teor´ıa axiom´atica, es decir, un sistema conceptual que fundamenta una serie de afir- maciones objetivas.
Una m´aquina de Turing consta de una cinta infinita dividida en infinitas casillas contiguas infinitamente prolongable tanto a izquierda como a derecha:
Cada casilla puede estar en blanco o tener impreso un signo de entre los de una lista finita que llamaremos alfabeto: s1, . . . , sj (j ≥ 1) fija para cada m´aquina particular. Escribiremoss0para nombrar al “blanco” y as´ı la situaci´on
posible de una casilla ser´a una de entres0, . . . , sj. En cualquier momento la cinta tendr´a un n´umero finito de casillas impresas (con signos distintos des0).
Representaremos la cinta con signos as´ı:
s1 s2 s2 s3 s1 s1 s4 s1
Se sobrentiende que el resto de la cinta est´a en blanco. Si queremos indicar que el resto de la cinta puede no estar en blanco pero que no importa lo que haya impreso, lo representaremos as´ı:
s1 s2 s2 s3 s1 s1 s4 s1
El estado de la cinta en un momento dado lo llamaremossituaci´on.
En cada instante la m´aquina se encontrar´a en unestadode entre un n´umero finito posible de ellosq0, . . . , qk (k≥1) fijo para cada m´aquina particular. Cada estado puede seractivoopasivo. El estado q0 siempre es pasivo,q1 siempre es
activo. A q1 le llamaremos estado inicial, es el estado en que se encuentra la
m´aquina cuando empieza a funcionar.
En cada instante la m´aquina lee el signo de una casilla de la cinta. Esta casilla se llamacasilla escrutaday el signo se llamasigno escrutado.
El estado de la m´aquina y el signo escrutado determinan laconfiguraci´onde la m´aquina en un instante dado. La configuraci´on y la situaci´on determinan la
configuraci´on completa.
Expresaremos las configuraciones completas indicando el estado sobre la ca- silla escrutada as´ı:
s1 s2 s2 s3 s1 s1
q4
s4 s1
Si no queremos indicar el estado usaremos un gui´on “—”.
Si en un instante dado una m´aquina de Turing se encuentra en un estado activo, ´esta realizar´a unacto. Un acto consiste en:
a) Leer el signo de la casilla escrutada,
b) Imprimir un signo (quiz´as0) en la casilla escrutada,
c) Mover un lugar la cinta de modo que la nueva casilla escrutada pase a ser la contigua izquierda, la misma casilla o la contigua derecha,
d) Cambiar de estado (pasando quiz´a al mismo),
de tal modo que el signo que se imprime, el movimiento que se hace y el estado al que se pasa, son funci´on exclusivamente de la configuraci´on de la m´aquina en ese instante.
Si el estado es pasivo no se produce ning´un acto: la m´aquina est´aparada.
Seg´un esto una m´aquina de Turing viene determinada por: a) El alfabetos0, . . . , sj, conj≥1,
b) El conjunto de estados posiblesq0, . . . , qk, conk≥1,
c) Una funci´on que a cada configuraci´on activa (sa, qb) le asigna una terna (sc, M, qd), donde sc, M, qd son, respectivamente el signo impreso, el movimiento realizadoI,DoC(izquierda, derecha o centro) y el estado al que se pasa, todo esto cuando la configuraci´on es (sa, qb). A esta funci´on se le llamaprogramade la m´aquina.
En la pr´actica escribiremos el programa en forma de tabla. Por ejemplo: Sea Ala m´aquina de Turing con alfabetos0,s1, estadosq0,q1 y programa
A s0 s1
q1 s1Cq0 s1Dq1
La m´aquinaAse mueve sobre la cinta hacia la derecha hasta encontrar una casilla en blanco, donde imprimes1 y se para.
5.6. M´aquinas de Turing 141 Seg´un advert´ıamos al principio, las m´aquinas de Turing no existen (como objetos f´ısicos). No son ordenadores porque ning´un ordenador puede trabajar con una “cinta” de memoria infinita. Son un modelo de ordenador ideal exento de limitaciones de memoria. Lo ´unico importante es que podemos hablar consis- tentemente de ellas y determinar qu´e hace una m´aquina dada a partir de unos datos dados, como acabamos de hacer con la m´aquinaA.
Computabilidad Consideremos una m´aquina de Turing y sea s=s1. Lla-
maremos representaci´on del n´umero natural n a la situaci´on de la cinta que consta den+ 1 signossconsecutivos, con el anterior y posterior en blanco.
Llamaremos representaci´on de los n´umeros a1, . . . , an a la situaci´on que consta de n secuencias de ai + 1 signos s consecutivos cada una, separadas por un blanco. Por ejemplo, la representaci´on de 2, 0, 3 es
s s s s s s s s
Llamaremos vac´ıo en la cinta a dos o m´as casillas en blanco consecutivas. Llamaremosrepresentaci´on normaloposici´on normalde los naturalesa1, . . . , an a la representaci´on dea1, . . . , an cuando la casilla escrutada es la ´ultima casilla impresa dean. Por ejemplo 2, 0, 3 en posici´on normal es
s s s s s s s s
—
Diremos que una m´aquina de TuringM computa la funci´on parcialn-´adica f si cuando M comienza con los n´umeros a1, . . . , an en posici´on normal y el resto de la cinta en blanco, termina con la representaci´on normal de
a1, . . . , an, f(a1, . . . , an)
en el caso de quef(a1, . . . , an) est´e definido y no se detiene o no se detiene con
a1, . . . , an, aen posici´on normal para ning´un n´umeroasif(a1, . . . , an) no est´a
definido.
Por ejemplo si f(2,0,3) = 0 yM computaf, cuandoM comienza con
s s s s s s s s
q1
termina con
s s s s s s s s s
—
No se exige que la posici´on absoluta de los n´umeros en la cinta sea la misma que al comienzo.
Una funci´on parcial es computable si hay una m´aquina de Turing que la computa. Una m´aquina de TuringM computa 1|1 la funci´on parcialn-´adica f si cumple:
a) El alfabeto deM ess0,s,
b) SiM comienza cona1, . . . , an en posici´on normal y el resto de la cinta a la derecha en blanco se cumple:
1. Las casillas a la izquierda de la representaci´on dea1, . . . , an (o sea, a la izquierda del blanco anterior aa1) no son nunca escrutadas.
2. Sif(a1, . . . , an) est´a definido, entonces M acaba con a1, . . . , an, f(a1, . . . , an)
en posici´on normal de modo que la representaci´on comienza en la misma casilla donde comenzaba la dea1, . . . , anal principio. Adem´as todas las casillas a la derecha quedan en blanco.
3. Sif(a1, . . . , an) no est´a definido entoncesM no se para.
Una funci´on parcial es 1|1computablesi hay una m´aquina de Turing que la computa 1|1. Vamos a demostrar que una funci´on es computable si y s´olo si es 1|1 computable si y s´olo si es recursiva parcial. El concepto de computabilidad 1|1 es un concepto auxiliar t´ecnico para la prueba.
Por el momento trabajaremos con m´aquinas de un solo signo. Para ellas usaremos la siguiente notaci´on m´as c´omoda:
a) Llamaremos 0 as0y 1 as1.
b) Imprimir 1 sobre un 0 lo representaremosE(escribir). c) Imprimir 0 sobre un 1 lo representaremos B (borrar). d) Si un signo no se modifica no indicaremos nada.
e) Los estados pasivos ser´an 01, . . . ,0n (o “0” si s´olo hay uno). f) Los estados activos ser´an 1, 2, 3, . . . (1 es el estado inicial).
Por ejemplo la m´aquinaA de antes se representa ahora as´ı:
A 0 1
1 E0 D1
Concatenaci´on de m´aquinas de Turing SiM es una m´aquina de Turing con estados pasivos 01, . . . ,0n yN1, . . . , Nn son otras m´aquinas de Turing, lla- maremos M N1 .. . Nn a la m´aquina de Turing definida como sigue:
5.6. M´aquinas de Turing 143 Siq1, . . . , qj son los estados activos deM yq1i, . . . qjii son los estados activos de Ni, los estados activos de la nueva m´aquina son q1, . . . , qj, q1i, . . . qjii , para i= 1, . . . , j.
Los estados pasivos son los de las m´aquinasN1, . . . , Nn. El estado inicial es q1, es decir, el estado inicial deM. El programa es como sigue:
Dada una configuraci´on, se realiza el acto marcado por el programa de la m´aquina a la que pertenece el estado en curso, a excepci´on del caso en queM deba pasar al estado 0i, en cuyo caso se pasa al estadoqi
1.
En otras palabras, se trata de la m´aquina que empieza actuando comoM y, cuando se ´esta se ha de parar por pasar al estado 0i, en lugar de ello comienza a actuar la m´aquinaNi.
M N1
N2
P1
La concatenaci´on puede repetirse cuantas veces se quiera, in- cluso de forma circular. Por ejemplo, la m´aquina de la figura empieza actuando como M, cuando ´esta acaba empieza N1 o
N2, seg´un el estado pasivo deM al que se llegue; si empiezaN2,
cuando ´esta acaba empieza P1 o vuelve a empezar M seg´un el
estado pasivo final.
SiMes una m´aquina de Turing con un ´unico estado pasivo, llamaremosMn a la m´aquina que resulta de concatenarM consigo mismanveces.
Construcci´on de m´aquinas de Turing Construimos ahora algunas m´aqui- nas de Turing concretas e indicamos la actividad que realizan (bajo determi- nadas condiciones iniciales). Un gui´on en la tabla del programa indica que no importa la instrucci´on que pongamos en esa casilla, pues no afecta al compor- tamiento que se requiere de la m´aquina.
B1 0 1 1 − BI2 2 EI3 I2 3 D01 D02 B2 0 1 1 I0 D1 B3 0 1 1 − BD0 B=B1 B2 B3A
Si B comienza con un n´umero en posici´on normal y otro a su izquierda, mueve el primero hasta eliminar el vac´ıo que los separa (si hay tal vac´ıo) sin escrutar las casillas a la izquierda del segundo n´umero.
Por ejemplo, partiendo de
1 1 1 1 1
—
B termina as´ı:
1 1 1 1 1
—
C 0 1 D 0 1 1 − D2 1 I2 I1 2 D3 − 2 I2 0 3 E0 − E 0 1 F 0 1 1 − I2 1 − BI0 2 D01 D02 G 0 1 H 0 1 1 − D2 1 − D2 2 D2 D3 2 ED2 I3 3 I0 D3 3 − BI0 El comportamiento de estas m´aquinas es el siguiente:
C Cuando empieza con un n´umero en posici´on normal va dos lugares a la derecha e imprime.
D Cuando empieza con un n´umero en posici´on normal que no sea el extremo izquierdo de la cinta, se sit´ua en posici´on normal respecto al n´umero si- guiente por la izquierda.
E Cuando empieza con un n´umero en posici´on normal toma la salida 01 o
02 seg´un sea 0 o distinto de 0 y termina en posici´on normal.
F Cuando comienza en una casilla impresa, borra y va una casilla a la iz- quierda.
G Va un n´umero a la derecha (al rev´es queD).
H Cuando comienza con un n´umero en posici´on normal que no sea el extremo derecho de la cinta, lo completa con unos hasta eliminar el vac´ıo (si existe) que lo separa del siguiente n´umero por la derecha y termina con el n´umero completado en posici´on normal.
Im=CDmE HGm F GmA
La m´aquinaIm, cuando comienza cona1, . . . , am en posici´on normal y con lasa1+2 casillas siguientes por la derecha en blanco, termina cona1, . . . , am, a1,
en posici´on normal.
Km=AImmF DmF Gm.
La m´aquinaKm, cuando comienza cona1, . . . , am en posici´on normal y las a1+· · ·+am+ 2m+ 1 casillas siguientes por la derecha en blanco, termina
5.7. La tesis de Church-Turing 145