Está en la página 1de 36

,

UNA PROGRAMACION EN LENGUAJE BASIC


DE LA MAQUINA UNIVERSAL DE TURING

Carmen García Trevijano


Univenidad Complutense de Madrid

lA teoría de Turing

En su famoso artículo de 1936,1 que tiene un carácter


fundacional para la moderna teoría de la computabilidad, Alan M.
Turing presentó una caracterización matemática precisa de la no-
ción de algoritmo o procedimiento efectiv02 mediante el diseño
de una serie de artificios ideales,construidos por ensamblamiento
de partes sumamente simples.A esos artificios se los conoce desde
entonces como "máquinas de Turing", De las varias caracteriza-
ciones alternativas que se han presentado de la noción de algorit-
mo, esta es, quizá, la que parece heurísticamente más interesante,
pues una buena manera de defmir un método automático de solu-
ción de problemas es aducir una máquina que 10realice.
La idea que guió a Turing en el diseño de sus máquinas
guarda un paralelo muy estrecho con los procedimientos que si- ~
r
gue un calculador humano en su tarea de computar una determi-
nada función aritmética: tI
\
í
II
"La computación se realiza normalmente escribiendo ciertos I
símbolos en un papel. Podemos suponer que este papel está I
dividido en cuadrados ,.. y que la computación se realizaso-
bre un papel uní-dimensional,esto es, sobre una cinta dividi-
da en cuadrados. Supondré asimismoque el número de sím- 1
bolos susceptiblesde ser impresosen esta cinta es fInito .." I
10 cual no supone una restricción seria ... porque siempre es
posible utilizar una secuencia de símbolos en lugar de uno I
II
307 !
I

- - - --- - -- -
308 Programación de una máquina universal de Turing

solo" .
"El comportamiento del calculador [humano] está en
todo momento determinado por los símbolos que está ob-
servando y por su "estado de ánimo" en ese instante. Pode-
mos suponer que existe un límite en el número de símbolos
o de cuadrados que el calculador puede observar en un solo
acto. Si desea observar más, tendrá que recurrir a sucesivas
observaciones".3

En esta descripción de un proceso de computación se en-


cuentran ya indicados todos los elementos necesariospara la con-
fección de esasmáquinas.
Una máquina de Turing se reduce, en última instancia, a
una combinación de dos factores: una cabeza lectora y una cinta.
La cinta, a la que se supone idealmente prolongableal infmito, es-
tá divididaen seccioneso cuadrados y puede contener un mensaje
escrito en un alfabeto cualquiera (con tal de que alfabeto y men-
saje sean fmitos y no se escriba más de un símbolo en un cua-
drado) .
La cabeza es capaz de desplazarse-cuadrado por cuadra-
do- a la derecha o a la izquierda a 10largo de la cinta, "leer" o
"reconocer" el símbolo impreso en el cuadrado que tiene delante
en cada momento, borrar ese símbolo, imprimir sobre él uno nue-
vo, y detenerse. Su repertorio operativo parece, pues, muy exi-
guo, ya que se reduce exactamente a estos tipos de conducta: (1)
dar un paso a la derecha o (2) a la izquierda, (3) imprimir o (4)
borrar un símbolo, y (5) detenerse.
A efectos de simplicidad, el alfabeto elegido para repre-
sentar sobre la cinta cualquier expresión puede limitarse a dos ca-
racteres, por ejemplo el! y el O(con la convenciónde que este úl-
timo indique que el cuadrado que lo contenga es un cuadrado va-
cío). Para poder localizar cualquier cuadrado en la cinta, se con-
vieneen adjudicarlea cada uno un número de orden.
Turing señala como aspecto esencial de su teoría que la
máquina pasa además por una serie de estadosinternos, desde que
empiezahasta que termina de funcionar. Un estado interno es una
especie de disposición que determina a la máquina a reAli7.ar,se-

\,.".,..
. ...
- .,. J
--
"
Progrtmuzdónde una nuíquinauniv~ de Turing 309

gún la infonnación recibida de la cinta (9 más concretamente, se-


gún el contenido del cuadrado actualmente leído por la máquina),
1I
uno de los cinco tipos mencionados de acto.4 Cada vez que tiene ,
lugar la realizaciónde un acto por parte de la máquina, tiene lugar 1
en ella un cambio de estado (que eventualmente incluye la perma-
nencia en el estado anterior).
El comportamiento total de la máquina se rige por un con-
junto de instrucciones en el que se explícita hasta el menor deta-
lle la serie de estados, símbolos y acciones por los que ésta ha de
pasar durante el curso de una computación. Cada una de esas ins-
trucciones puede ser fonnulada enumerando cuatro elementos,
e, s, o, e': e representa un estado de la máquina, s el símbolo
que pueda haber en el cuadrado de la cinta actualmente conside-
rado, o es una orden de operación (que depende del estado actual
de la máquina y del símbolo que ésta tenga momentáneamente
,ante s1'),y e' el nuevo estado que ha de adoptar la máquina una
vez ejecutada la operación prescrita en la instrucción. La disposi-
ción ordenada, línea por línea, de la serie de cuádruplos5 que diri-
gen el proceso entero de la computación da lugar a lo que se co-
noce como "tabla de instrucciones" o "tabla de Turing". A todos
los efectos una máquina de Turing se identifica con su tabla.
Resumiendo lo anterior, puede decirse que el comporta-
miento de una máquina de Turing está detenninado en todo mo-
mento por un factor interno -su estado actual- y por otro exter-
no -el símbolo cqntenido en el cuadrado actualmente analizado.
Al conjunto de tres datos constituido por el estado actual de la
máquina, el número de orden del cuadrado actualmente analiza-
do, y el símbolo contenido en ese momento en dicho cuadrado,
se le da el nombre de configuración.La configuraciónes evidente-
mente, el conjunto de factores que detenninan el comportamien-
to futuro de la máquina en un instante dado. Dada una configu-
ración en un instante dado, es tarea mecánica averiguarqué hará
la máquina al instante siguiente y cuál será su nueva configura-
ción en ese instante.
- - - - -- --- -- -- - -- -

310 ProgramJlCiónde U1I/lmdquina universal de Turing

El diseño clásico de una máquina universal

Una máquina particular de Turing es, sencillamente, una


máquina que computa una función aritmética. Para cada función
aritmética que sea mecánicamente resoluble se pueden construir
máquinas de Turing que las realicen. Ahora bien, al comienzo de
la Sección 6 de su artículo, Turing af11111a:

"Es posible inventar una única máquina que pueda ser utili-
zada para computar cualquier secuenciaque sea computable.
Si se equipa a esta máquina U con una cinta en cuyo comien-
zo esté escrita la descripción standard de alguna máquina
computadora M, entonces U computará la misma secuencia
queM".6

La idea que preside el diseño de una máquina universalU


es sorprendentemente simple, pues sus ingredientes son, en defi-
nitiva, los mismos utilizados en una máquina particular. Sin em-
bargo, como señala Turingen el párrafo acabado de citar, una má-
quina universaldebe incluir en su cinta una información que no es
usual en las máquinasparticulares. Estas sólo requieren que vayan
impresos en su cinta los argumentos de la función que han de
computar; en lo demás, la cinta está vacía. Una máquina univer-
sal, en cambio, ha de contar desde el inicio con dos factores en
la inscripciónde su cinta: (1) una descripciónunilineal y codifica-
da7 de la tabla de instrucciones de la máquina concreta que va
a simular, y (2) los argumentos de la función a computar por la
máquina simulada.
Ello requiere, por supuesto, que se cuente con un lenguaje
o código capaz de describir en la cinta de un modo adecuado la
tabla de la máquina a simular.8
Pero sobre todo, y esto es lo más importante, la máquina
universal U deberá incluir en la tabla que la defme un conjunto de
instrucciones que le pennita, primero, interpretar o decodificar la
descripción de la tabla de la máquina a simular que tiene inscrita
en su cinta; y segundo, po~er en práctica, a medida que las inter-
preta, las instrucciones de la máquina simulada.A este efecto ha-
-. -----

Prognmuzd6n de U1IIInuíquina univenal de Turlng 311

brá que distinguir en la cinta de U tres regiones:una de ellas con..


tendrá la descripción codificada de la máquina a simular M; otra
contendrá los argumentos de M; y una tercera quedará reservada
como "campo de operaciones" en donde U pueda efectuar las
anotaciones que sean precisasen el curso de la computación.
De acuerdo con estos criterios de disefto, el comporta..
miento de la máquina universalU recorreni, en líneas generales,
los siguientesestadios: al comienzo de su operación, la máquina U
toma nota del estado actual de la máquina a simular M Ydel nú"
mero del cuadrado donde ésta debe empezar el cómputo, le tras..
lada luego a la región de la cinQidonde fIgUranlos argumentos de
M, seleccionael símbolo contenido en el referido cuadrado, y es-
tablece un registro de la configuración(es decir, del triplo estado-
cuadrado-símbolo) que así acaba de obtener. Seguidamente se
deslizahasta la región de la cinta que contiene las instrucciones de
M, a las qu~ examina una tras otra hasta encontrar aquella cuyos
dos primeros elementos coincidan con los datos de su registro de
confIguración. A continuación ejecuta esta instrucción, ya sea im-
primiendo o borrando un símbolo, o desplazándosea derecha o
izquierda, y efectúa el cambio de estado de M que corresponda,
generando con ello una nueva pareja de estado actual y número
de cuadrado escrutado por M. En este punto comienza de nuevo
el ciclo para hallar la siguiente confIgUración,inspeccionar la ta-
bla buscando una nueva instrucción, ejecutar esta última, etc.
Mediante una serie de iteraciones de este ciclo, la máquina U irá
simulando, una tras otra, las operaciones de M hasta obtener
exactamente el mismo resultado que ésta obtendría.
El siguiente organigrama ofrece una representación gráfi-
ca muy esquematizada de este proceso:

--- --- -
312 Programación de una máquina universal de Turing

I
Búsqueda
de
configuración

11
pasa a la Instrucción inmediata
Búsqueda
de
instrucción
NO SI

es la última SI III
instrucción
? Ejecución
de
instrucción
cam bia
de estado
da un paso a la
derecha (o a la iz-
quierda, según el
ceso)
SI

imprime (o bo-
rra, según el
caso)

cambia
de
estado

- --- - - --
Programación de una máquína univenal de 1úring 313

Máquinas y Programas

La realización física de una máquina de Turing choca


frontalmente con una dificultad de principio, como es la su-
posición de que la cinta sea infInita, pues la magnitud física
real del cosmos parece incompatible con esa postulación ideal.
Pero desde un punto de vista práctico cabe recurrir al mismo
procedimiento normalmente seguido por los seres humanos
en el ejercicio de la aritmética. Basta con poner entre parén-
tesis el hecho de la fmitud de la vida y del mundo y darse por
satisfecho con la asunción de una prolongabilidad indefinida.
Ahora bien, si se conviene en dar así por sorteado este proble-
ma, la realización física de una máquina de Turing, sea par-
ticular o universal, es técnicamente factible desde alternati-
vas estructurales muy diversas. Shannon mostró en 19569
que dada una máquina universal de Turing A con un alfabe-
to de m letras y n estados internos (incluyendo el blanco), es
posible diseñar una máquina B con dos estados internos y un
alfabeto de a lo sumo 4mn+m símbolos que actuará esencial-
mente igual que A. Si A es universal, también lo será B. Asi-
mismo probó que es imposible diseñar una máquina univer-
sal de Turing con un solo estado y sugirió que es posible,
dentro de ciertos límites, cambiar símbolos por estados en
una máquina de Turing sin alterar excesivamente el produc-
to de ambos. Con ello dio origen al problema de hallar el mí-
nimo producto posible de número-de-símbolos-por-número-de-
estados en una máquina universal de Turing.1O
Por otra parte, la deliberada escasez de elementos es-
tructurales que Turing impuso a sus máquinas reduce mucho
el margen de operatividad de éstas, lo cual tiene por consecuen-
cia que los cálculos por ellas efectuados sean, desde el punto
de vista de su realización física, sumamente engorrosos. Las
operaciones de una máquina de Turing son muy simples, ais-
ladamente consideradas. Pero cuando la máquina o el argumen-
to o argumentos a computar son de una cierta magnitud, el
número de veces que hay que repetir esas operaciones exigi-
ría un costo de trabajo y de tiempo poco o nada rentables.

-- - - - - -
314 Programación de una máquina universal de Turing

De hecho, entre la estructura clásica de una máquina de


Turing como caracterización teórica de la idea de algoritmo y
la de un computador digital hay tantas y tan acusadas diferen-
cias -aun dejando aparte el requisito de la idealización-, que
el conocimiento de la primera suele ser considerado como ente-
ramente irrelevantepara el de la segunda.

En 1957, sin embargo, Hao Wang11 ofreció una versión


modificada de las máquinas de Turing que elimina muchos in-
convenientes prácticos de realización y guarda una conexión más
estrecha con la actual tecnología del computador digital, desde
el doble punto de vista del "hardware" y del "software". Wang
presentó una máquina básica B que, además de la cinta o me-
moria externa infInitamente expandible típica de las máquinas
de Turing, poseía una memoria interna, asimismo infInitamen-
te expandible, en cuyos registros se alojarían las instrucciones
que gobernasen el cómputo. Pero la innovación más interesan-
te a los efectos del presente artículo fue la idea de extrapolar
a las máquinas de Turing la noción de "programa" o "rutina",
ya impuesta en el área de los computadores digitales.
Esta idea consiste en (1) hacer corresponder con cada
una de las cinco operaciones básicas una instrucción básica, de
una manera como la siguiente:

instrucción básica operación básica

+ marcar un símbolo
borrar un símbolo
-+
dar un paso a la derecha
dar un paso a la izquierda
. parada °12

(2) convenir en asignar un número de orden a cada una de las ins-


trucciones que hay que ejecutar en el curso de una determinada
computación; y (3) completar el catálogo de instrucciones básicas
que se acaba de exponer ~n la instrucción de trtlruferencÚlcon-
dicio1JJll

-
. -.- - -----

"
~

Prognmuzciónde una mtfquinllunivenal aé.1Ymirt 31S

Tm n si se cumple la condicióa m en el cua-


drado de la cinta actualmente escrutado,
ejecutar la instrucción de número n; en
caso contrario ejecutar la instrucción
que siguea T

Un programao rutina en la máquina B, o en una máquina


de Turing, es un conjunto de pares ordenados tales que hay un
entero positivo k mayor que 2 para el cual: (a) n ocurre como
primer miembro de exactamente uno de esos pares si y sólo si
1 ~ n ~ k; y (b) el segundo miembro es una de las instrucciones
básicas. 13
Un programa de máquina de Turing determina, con el
mismo rigor que la tabla de máquina, una función computable.
y ya sea que se lo considere introducido en una memoria inter-
na (como en la máquina B de Wang)o incorPOradoa la cabeza
o centro de control de la máquina(como en la teoría de Turing),
resulta, a efectos de realización, considerablemente más opera-
tivo que la tabla, puesto que el número de orden de las instruc-
ciones (susceptible de ser interpretado como dirección de me-
moria o "número registro" en una memoria de computador)
y la instrucción de transferencia pueden suplir con ventaja la
complicada estrategia de los estados internos en una tabla clá-
sica de máquina de Turing.
316 Programación de una máquina universal de Turing

Estrategia para la programación de una máquina universal de


Turing

Una máquina universal de Turing es, básicamente,un


intérprete. Se diferencia de cualquier máquina particular o es-
pecial en que su "especialidad" consiste en imitar o simular
cualquier otra máquina.
Los datos de la simulación han de ser, obviamente, (1) el
programa de la máquina a simular, y (2) los datos sobre los que
ésta operaría. El proceso de la simulación deberá constar, por
una parte, de (a) reglas de interpretación del programa de la má-
quina a simular, y por otra, de (b) reglas que simulen la ejecu-
ción de dicho programa: el conjunto de ambos tipos de reglas
(a) y (b) constituirá precisamente el programa de la máquina
universal.
Ahora b.ien, para que la tarea de interpretación pueda
llevarse a cabo, es preciso haber estipulado antes con toda exac-
titud un criterio de codificación de instrucciones, con arreglo al
cual se describa en la cinta de la máquina universal el programa
de la simulada. A cada instrucción de este programa se le asig-
na una cifra o código numérico. (Al pasar a cinta el programa.
así codificado, se procurará que el principio y el fillal del mismo,
como también los intervalos entre cada instrucción queden se-
ñalados de una manera ostensible).
La máquina universal deberá interpretar o decodificar,
una tras otra, las instrucciones del programa descrito en su cin-
ta y hacerseen cadacasocargode su oportunaejecución.
Estas consideraciones aconsejan distinguir dos diferen-
tes bloques de instrucciones en el programa de la máquina uni-
versal. Uno de ellos, el Programa Principal, tendrá por misión
el análisis de las instrucciones. El otro estará constituido por
un conjunto de Subrutinas de Ejecución.
Como cada una de las instrucciones del .programacodi- ..
ficado en cinta tiene una estructura sintáctica o numérica bien ..s
defmida, será interesante contar, a efectos de decodificación, 1
con una subrutina de reconocimiento de formas que vaya discri- 1
minando sucesivamente la cifra que corresponda a cada ins-

- --- - ---
-- --- -- -.-

ProgramllCión de una máquina universal de Turing 317

trucción. Esta subrutina será, pues, pieza clavedel ProgramaPrin-


cipal.
Una vez identificada la instrucción de turno, el Programa
Principal remite al lugar que corresponda en el bloque de Subru-
tinas de Ejecución. Por de pronto, es claro que deberá haber cin-
co subrutinas de este género, una por cada uno de los cinco ti-
pos básicos de operación (imprimir, borrar, movimiento a la de-
recha, movimiento a la izquierda y parada) de la máquina par-
ticular que vaya a ser imitada. Como la máquina universal actúa
a manera de intérprete, no realiza directamente y sin más los
actos que ejecutaría la máquina imitada, sino que los simula a
través de un proceso más complejo que en cada caso constitu-
ye una subrutina, de la misma manera que el proceso de traduc-
ción de un texto implica, por parte del traductor, la realización
de una serie de rodeos y circunloquios para cada expresión
simple del idioma nativo. Pero dado que nuestro lenguaje de
programación incluye además la instrucción de transferencia,
a la que corresponde la acción de saltar de un punto a otro del
programa, deberá haber también la correspondiente subrutina
o subrutinas responsablesde la simulaciónde esta acción.
El análisis de cada instrucción, efectuado en el seno
del Programa Principal, remite, como acabo de indicar, a la
Subrutina de Ejecución correspondiente. Pero una vez efectua-
da ésta -y siempre que no se trate de la Subrutina de Parada,
que pondría fm a la simulación del cómputo- el control del
proceso deberá volver al Programa Principal para que se repi-
ta el ciclo de análisis de la nueva instrucción, ejecución de la
misma, retorno al Programa Principal y así sucesivamentehas-
ta la terminación total del proceso.
La aplicación de las Subrutinas de Ejecución exigirá
la realización de operaciones de cálculo, a cuyo efecto deberá
f~arse previamente en la cinta de la máquina universaluna "zona
de cómputo" donde tendrán lugar esos cálculos.
. Al principio del proceso la inscripción de cinta deberá
constar, como ya quedó indicado, dei programa de la máquina
(es decir, la función) a simular y de los datos (argumentos de
función) sobre los que ésta operaría. Al fmal, la inscripción

-- - - -
318 ProgramJlciónde una máquina universal de Turing

de cinta deberá incluir el resultado de las operaciones que efec-


tuaría la máquina simulada (es decir, el valor de la función).
Si convenimos en designar al Programa Principal con
la etiqueta NUEVA INSTRUCCION(= Análisis de Nueva Ins-
trucción) y a cada una de las Subrutinas de Ejecución con el
nombre de las operaciones simuladas, las líneas generales del
diagrama de flujo deberán discurrir de acuerdo con el siguien-
te esquema:

- -- -
-----------.--..

~ d~ UfUImáquina unlveml d~ ~ 319

NUEVA 100
INSTRUCCION

BORRAR DERECHA
g- Q
g- -.
e
g-
e .. ee
-
e
.
-
ee
-
g-
MARCAR IZQUIERDA

TRANSFE-
RENCIA

100100100100100

PARADA

--- --
320 Programación de una máquina universal de Turing

Programa para la realización de una máquina universal de Turing


en un computador digital

El programa que aparece a continuación se basa en el mo-


delo esbozado por F. Suppe en 197614 y ha sido desarrollado en
lenguaje BASIC y ejecutado en un computador personal APPLE
11 en el Departamento de Lógica de la Universidad Complutense
de Madrid.*
El presente programa de Máquina Universal consta de un
Programa Principal y ocho Subrutinas de Ejecución. El Progra-
ma Principal -denominado NUEVA INSTRUCCION- tiene
por misión analizar o interpretar, una por una, las instrucciones
codificadas en cinta que representan el programa de la máquina
a simular. El criterio de codificación adoptado consiste en asignar
(ajustándose al alfabeto de la máquina 1,0) a cada una de las ins-
trucciones +, -, ~, ~, *, un código numérico que es la cifra
100 para ~, la cifra 100100 para ~, la cifra 100100100 para
+, la cifra 1001 00 100100 para - y la cifra 1001001 001001 00
para *. En el caso de la instrucción de transferencia T, se re-
petirá esa misma cifra 100 en un número de 5+2n-l veces,
o 5+2n veces, según que la condición de T (es decir m en Tm n)
sea O ó 1, Y siendo n el número de orden de la instrucción a la
que remite la transferencia.
Los límites del programa descrito en cinta se señalan
utilizando como marcador la cifra 111, una vez antes de la pri-
mera instrucción (límite inicial) y otra vez después de la últi-
ma (límite fmal). Antes y después de cada instrucción se uti-
liza como intervalo la marca 000.
Después del límite final del programa, se reserva en la
cinta un cuadrado libre como zona de cómputo. Los argumen-
tos de la función que correpon de a la máquina simulada se si-
túan, respectivamente, el primero a la izquierda del programa
y el segundo a la derecha de la zona de cómputo.
.
En la confección de este programa han colaborado 105 alumnos de
segundo curso de Lógica de la Universidad Complutense Jesús Ruiz Aznar,
Patricia Rivera Quero, Evaristo Uanos Tato e Ignacio Verdú Berganza.

- ----
,
Programación de una máquina universal de Turing 321

El Programa Principal discrimina la identidad de la ins-


trucción de turno valiéndose de un analizador de triplos de dí-
gitos binarios, la subrutina RTD, que se encarga de rastrear
o bien la cifra 100 o bien el grupo 000 (que es el intervalo sepa-
rador de instrucciones). Si el analizador detecta que la instruc-
ción consta de un solo 100, la interpretará como orden de dar I
I
un paso a la derecha; si detecta una pareja de cientos, la inter- 1
1
I
pretará como orden de dar un paso a la izquierda, y así suce- I
sivamente.
A continuación, y tras dejar una marca en el intervalo
que sigue a la instrucción analizada, el control del proceso pasa a
las Subrutinas de Ejecución: DERECHA, IZQUIERDA, MAR-
CAR, BORRAR, TRANSFERENCIA(una para cada condición,
O ó 1), OPERACIONREALIZADA y PARADA(STOP), según
la instrucción de que se trate. La instrucción de transferencia
requiere doble subrutina, según que dependa de la condición
O o de la condición 1. La subrutina de PARADA va precedida
de la que indica OPERACIONREALIZADA.
Aunque las operaciones simuladaspor la máquina univer-
sal son muy simples, su ejecución es más compleja que en una
máquina particular y requiere en cada caso la intervención de una
subrutina. Asi por ejemplo, la subrutina correspondiente a la
instrucción de "marcar" -que para la máquina concreta obliga
simplemente a imprimir un 1 en el cuadrado actualmente escru-
tado- implica, cuando menos, la siguiente secuencia de actos
para la máquina universal: poner una marca provisional sobre el
intervalo que sigue inmediatamente al código de la instrucción
de marcar escrito en la cinta, desplazarsea lo largo de todo el pro-
grama hasta el cuadrado vacío reservado como campo de opera-
ciones, implantar allí un 1, retomar hasta la marca provisional
anteriormente establecida, borrada y prepararse para a~alizar
la instrucción que inmediatamente sigue a esta marca recién eli-
minada.
Generalmente, una vez alcanzada la ejecución de una ins-
trucción, la subrutina devolveráel control al Programa Principal;
éste eliminará el último vestigio de marca provisional y situará
a la máquina en posición adecuada para el examen de la siguiente

-- ----
322 Programación de una máquina universal de Turing

instrucción en la secuencia. Cuando eventualmente se analice


la instrucción cuya orden es de parada, el Programa Principal
transferirá el control a la subrutina OPERACION REALIZADA,
y ésta a la de PARADA y con ello acabará el proceso de ejecu-
ción de la máquina universal.

En las páginas que siguen presento el resto del organigrama


del programa, el programa en su integridad formulado en lengua-
je BASIC, y una ilustración de su funcionamiento eligiendo como
"máquina" o "programa" a simular la función suma (1 +, 2 ~,
3 T12, 4"',5 -,6 *).

-- - -
Programación de una máquina univeTSlll de Turing 323
1:
,(1
SUBRUTINA DE ~tl
i!
PASO A LA
DERECHA

marca con 101


intervalo final
de instrucción

busca límite
final del pro-
grama

avanza tres
pasos

NO SI

desplazar pro- desplazar pro-


grama 1 cuadra- grama 1 cuadra-
do a la derecha do a la derecha

buscar límite buscar límite


inicial del pro- inicial del pro-
grama grama

retroceder 1 pa- retroceder 1 pa-


so e imprimir un e imprimir un
Q 1

buscar intervalo busc ar intervalo


marcado marcado
(101) (101)

PROGRAMA PRINCIPAL PROG RAMA PRINCIPAL

- ---- ---
324 Programación de una máquina universal de Turing

SUBRUTINA DE
PASO A LA
IZQUIijRDA

marca con 101


intervalo final
de instrucción

busca límite
inicial del pro-
gram a

retrocede 1 paso

NO SI

desplazar pro- desplazar pro-


grama 1 cua- grama 1 cua-
drado a la izq. drado a la izq.

imprimir un O imprimir un 1
en el intervalo si- en el intervalo si-
guiente al límite guiente al límite
Imal del progr. final del pro gr.

busca intervalo busca intervalo


marcado marcado
(101) (101)

PROGRAMA PRINCIPAL PROGRAMA PRINCIPAL


4

j
.1

Programación de una máquina universal de Turing 325

SUB RUTINA DE TRANSFERENCIA


;
:~
1;

marca con O10


lugar programa

ve a límite ini-
cial del progra-
ma

marca con 101


el triplo subsi-
guiente

avanza hasta O10


Y restaura el 100
original

reconoce el tri-
plo subsiguiente

marca con 101

TRA-O TRA-l

PROGRAMA' PRINCIPAL

- --- -- --
326 Programación de una mJiquina universal de Turing
SUBRUTINA SUBRUTINA
DE DE
MARCAR BORRAR

marca con 101 in- marca con 101 in-


tervalo final de tervalo final de
instrucción instrucción

,,11 ,lJ

busca límite final busca límite final


del programa del programa

\ I ,11

avanza tres pasos avanza tres pasos


e imprime un 1 e imprime un O

\J ,1I
vuelve a intervalo vuelve a intervalo
marcado marcado

. 8"

PROGRAMA PRINCIPAL PROGRAMA PRINCIPAL

SUBRUTINA
DE
PARADA

busca límite ini-


cial del programa

---- ----
1
Prognmuu:iónde UntlmlÍquins univentll de Turing 327

JLIST

300 PRINT 'INTRODUCE DIHENSION CINTA'


310 INPUT N
40e DI" D(N)
410 FOR 1 = 1 TO N
415 READ B(I)
4Zi NEXT 1
515 DATA 0,0,1.1,1~1,1,0,0.0 "
~i:,

516 DATA 1,0,0,1,0,~,1,0,0


517 DATA 0,0,0,1,0.0,0,0,.
518 DATA 1.0,0.1,.,0,1,0,0,1,0.0 i.
.~
519 DATA 1.0,oÍ), 1 ,0,0, 1,.,0, 1 ~0~O,1 ,0,0 .~
'1

520 DATA 0,',0,1,~~0,1,.,0,0,0~0


521 DATA 1,0.0,1,0,~,1,0,0.1,0,0
c""
-'~~ DATA ~,0,0,1.0,0.1.0,',1,~.0
523 DATA 1,0,0,1,0.0,0.0,0
524 DATA 1.1,1,0,1,';',0,0
50\0 J = 5
545 GOSUB 1700~
550 J = J 1 ..

cc"c
J = J + 1
..J..J..J

560 J = J + 1
563 RE" PROGRAMA PRINCIPAL:
565 REH NUEVA INSTRUCC!üN
570 B(J) = 0
575 J = J + 1
580 B(J) = ~
585 J = J + 1
590 B(J) = 0
600 J = J - 1
605 J = J - 1
610 J = J + 1
615 J = J + 1
6Z0 J = J + 1
630 GOSUB 15000
64. ON A GOTa 11000.11000.11000.650,11000,11000.11000.4000
650 GOSUB 15000
660 ON A GOTa 11000.11000.11000.670.11000.11000.11000.6000
670 GOSUB 15000
680 ON A GOTa 11000.11000.11000.690.11000.11000,11000,8"0
690 GOSUB lS000
700 ON A GOTa 11000,11000.11000,710.11000,11000.11000.9000
710 GOSUB 15000
720 ON A GOTa 11000,11000,11000,2000,11000,11000.11000,10000
20e0 REH SUBRUTINA DE
2001 REH TRANSFERENCIAS
2ele B(J) = 0
20Z0 J = J + 1
ZI38 D(J) = 1
2048 J = J + 1
2050 B(J) = "
2860 J = J - 1
207e J = J - 1
2175 GOSUB 17000
28el GOSUB 20400
2898 J = J + 1
211e J = J + 1

-------- - --
328 Programación de una máquina universal de Turing

2110 J = J + 1
2120 B(J) = 1
2130 J = J + 1
2140 B(J) = 0
2150 J = J + 1
2160 B(J) = 1
2170 J = J - 1
2180 J = J - 1
2190 GOTO 2450
2200 RE M TRANSFER-0
2210 B(J) = 0
2220 J=J+l
2230 B(J) = 1
2240 J = J + 1
2250 B(J) = 0
2260 J = J 1 -
2270 J = J
1 -
2280 GOSUB 20400
2290 GOSUB 20200
2300 B(J) = 0
2310 J = J + 1
2320 B(J) = 0
2330 J = J + 1
2340 B(J) = 0
2350 J = J - 1
2360 J = J - 1
2370 GOSUB 20800
2380 B(J) 1=
2390 J = J + 1
2400 B(J) = 0
2410 J = J + 1
2420 B(J) = 1
2430 J = J - 1
2440 J = J - 1
2445 GOSUB 20400
2450 GOSUB 21000
2460 B(J) = 1
2470 J = J + 1
2480 B(J) = 0
2490 J = J + 1
2500 B(J) = 0
2510 J = J - 1
2520 J = J - 1
2530 GOSUB 15000
2540 ON AGOTO 11000,11000,565,2960,11000,11000,11000,2550
2550 B(J) = 0
2560 J = J + 1
2570 B(J) = 1
2580 J = J + 1
2590 B(J) = 0
2600 J = J - 1
2610 J .= J - 1
2620 GOSUB 20000
2630 J = J + 1
2640 J = J + 1
2650 J = J + 1
2655 GOSUB 17000
2660 IF ~(J) = 0 THEN 2850
11

~
.t.:

Programación de una máqui1Uz universal de TUTing 329


'f.
.,
...
.! ...
I '
. ~
'h,
267. GOSUB 20600
2680 B(J) = 0
2690 J = J + 1
2700 B(J) = 0
2710 J = J + 1
272e 8(J) = 0
2730 J = J - 1
2740 J = J - 1
2750 GOSUB 20400
2760 GOSU8 21000
2770 8(J) = 1
2780 J = J + 1
2790 B{J) = 0
2800 J = J + 1
2810 B(J) = 1
2820 J = J - 1
2830 J = J - 1
2835 GOSUB 17000
2840 GOTO 565
2850 GOSUB 21200
2860 B{J) = 0
2870 J=J+1
2880 B(J) = 0
2890 J. = J + 1
2900 B{J) = 0
2910 J = J - 1
2920 J = J - 1
2930 GOSUB 20400
2940 GOSUB 20200
2945 GOSUB 17000
2950 GOTa 565
2960 REH TRANSFER-1
2970 GOSUB 15000
2980 ON A GOTa 11000,11000,565,2200,11000,11000,11000,2990
2990 B(J) = 0
3000 J = J + 1
3010 B{J) = 1
3020 J = J + 1
3030 8(J) = 0
3040 J = J - 1
3050 J = J - 1
3055 GOSUB 17000
3060 GOSUB 20000
3070 J = J + 1
3080 J = J + 1
3090 J = J + 1
3100 IF 8(J) = 1 THEN 3290
3110 GOSUB 20600
3120 8{J) = 0
3130 J = J + 1
3140 B(J) = 0
3150 J = J + 1
3160 8(J) = 0
3170 J = J - 1
3180 J = J - 1
3190 GOSUB 20400
3200 GOSUB 21000
3210 B(J) = 1
330 Programación de una máquina universal de Turing

322 J J += 1
3230 B(J) = 0
3240 J = J + 1
3250 B(J) = 1
3260 J =
J - 1
3270 J =
J - 1
3275 GOSUB 17000
3280 GOTO 565
3290 GOSUB 21200
3300 B(J) = 0
3310 J = J + 1
3320 B(J) = 0
3330 J = J + 1
3340 B(J) = 0
3350 J = J - 1
3360 J = J - 1
3370 GOSUB 20400
3380 GOSUB 202j0
3385 GOSUB 17000
3390 GOTO 56:,
4000 F:EM SUBRUTINA LE PASO
4001 F:EM A LA DERECHA
4005 B(J) = ....
4010 J = J + 1
4020 B(J) = 0
4030 J = J + 1
4040 B(j) .: 1
4050 J J - .
= .1

4060 J = J - 1
4070 GOSUE: 2€\000
4080 J = J + 1
4090 J = J + 1
4100 j = J + 1
4110 IF B(J) = 1 THEN 4t.50
4120 J = J - 1
4130 IF B(J) = 1 THEN 4180
4140 GOSUB 22300
4170 GOTC' 41\"13
4180 GOUB 22\0(\
4190 J = J - 1
4200 IF 1I(J) = 1 THEN 425'
4210 GOSUB 22300
4240 GOTO 4260
4250 GOSUB 22000
4260 J = J 1 -
4270 IF B(J) = 1 THEN 4320
4280 GOSUB 22300
4310 GOTO 4330
4320 GOSUB 22000
4330 J = J - 1
4340 IF 14(J) .: 1 THEN 4390
4350 GOSUB 22300
4380 GOTO 4400
4390 GOSUB 22000
4400 J = J - 1
4410 IF B(J) = 1 THEH 4460
4420 COSU14 22300
44se COTO 4470
4461 GOSUB 2200.

--
"i.

Programaciónde una nuíqui1uluniversalde Turing 331


4470 J = J- 1
4480 IF B(J) = 1 THEN 4530
4490 GOSUB 22300
4520 GOTa 4540
4530 GOSUB 22000
4540 J = J- 1
4550 J = J - 1
4560 GOSUB 15000 "
I
4570 ON A GOTa 4600,11000,4580,4580,11000,4580,11000,4580
4580 J = J- 1
4590 GOTa 4330
4600 J = J- 1
4610 B(J) =0
4620 J = J + 1
4630 GOSUB 20200
4640 GaTO 565
4650 J = J - 1
4660 IF B(J) = 1 THEN 4710
4670 GOSUB 22300
4700 GaTO 4720
4710 GOSIJIt 2200'.;
4720 J = J - 1
4730 IF 8(J) = 1 THEN 4780
4740 GOSUB 22300
4770 GaTO 4790
4780 GOSUB 22000
4790 J = J - 1
4800 IF B(J) = 1 THEN 4850
4810 GOSUB 22300
4840 GOTO 4860
4850 GOSUB 22000
4860 J = J - 1
4870 IF B(J) = 1 THEN 4910
4880 GOSUB 22300
49003 GOTO 492;;
4910 GOSUB 22000
4920 J = J - 1
4930 IF B(J) = 1 THEN 4980
4940 GOSUB 22300
4970 GOTO 4990
4980 GOSUB 22000
499~ J = J - 1
5000 IF B(J) = 1 THEN 5050
5010 GOSUB 22300
5040 GOTO 5060
5050 GOSUB 2200~1
5060 J = J - 1
5070 J = J - 1
5080 GOSUB 15000
5090 ON A GOTa 5120,11000,5100,5100,11000,5100,11000,5100
5100 J = J - 1
5110 GOTa 4860
5120 J = J - 1
5130 B(J) =1
5140 J = J + 1
5150 GOSUB 20200
5155 GOSUB 17000
516e GOTO 565
6000 REH SUBRUTINA DE PASO

---------
.

332 Programación de una máquina universal de Turing

6001 REH A LA IZQUIERDA


6005 B(J) 1=
6010 J =J + 1
6020 B(J) = 0
6030 J = J + 1
ó04& [seJ) = 1
6050 J = J - 1
6060 J = J - 1
6070 GOSUB 20400
6190 J=J-1
6200 IF B(J) = 1 THEN 6640
6210 J = J + 1
6220 IF B(J) = 1 THEN 6250
6230 GOSUB 22200
6: 40 GOTO 6260
6250 GOSUB 22100
6260 J=J+l
6270 IF B(J~ = 1 THEN 6300
6280 GOSUB 22200
6290 GOTO 6310
6300 GOSUB 22100
6310 J = J + 1
6320 IF B(J) = 1 THEN 6350
6330 J=J-1
6335 B (J) = 0
6340 GOTO 6360
6350 GOSUB 22100
6360 J = J + 1
6370 IF B(J) = 1 THEN 640~
6380 GOSIJB 22200
6390 GOTO 641~
6400 GOSUB 22100
6410 J=J+l
6420 IF B(J) = 1 THEN 6460
6430 GOSUB 22200
6450 GOTO 6470
6460 GOSUB 22100
6470 J = J + 1
6480 IF B(J) = 1 THEN 6510
6490 GOSUft 22200
6500 GOTO 6520
6510 GOSUB 22100
6520 GOSUB 16000
6530 ON A GOTO 65B0.11000.6540,6540.l1000.6540,1100C.65~O
6540 J = J + 1
6550 J=J+1
6560 J = J + 1
6570 GOTO 6360
6580 J=J+1
6590 J = J + 1
6600 J = J + 1
6610 B(J) = 0
6620 GOSUB 20600
6630 GaTO 565
6640 J = J + 1
6650 IF B(J) = 1 THEN 6680 '
6660 GOSUB 22200
6670 GaTO 6~90
6680 GOSUB 221..

--
.

,
Programación de una máquina univenal de Turing 333 ,
't
¡
6690 J = J + 1
6700 IF B(J) = 1 THEN 6730
6710 GOSUB 22200
6720 GOTa 6740
6730 GOSUB 22100
6740 J = J + 1
6750 IF B(J) = 1 THEN 6780
6760 GOSUB 22200
6770 GaTO 6790
6780 GOSUB 22100
6790 J = J + 1
6800 IF 9(J) = 1 THEN 6830
6810 GOSUB 22200
6820 GOTa 6840
6830 GOSU9 22100
6840 J = J + 1
6850 IF B(J) = 1 THEN 6880
6860 GOSUB 22200
6870 GaTO 6890
6880 GOSUB 22100
6890 J = J + 1
6900 IF B(J) = 1 THEN 6930
6910 GOSUB 22200
6920 GOTO 6940
6930 GOSUB 22100
6940 GOSUB 16000
6950 ON AGOTO 7000,11000,6960,6960,11000,6960,11000,6960
6960 J=J+1
6970 J = J + 1
6980 J = J + 1
6990 GOTO 6790
7000 J = J + 1
7010 J=J+1
7020 J=J+1
7030 B(J) = 1
7040 GOSUB 20600
7045 GOSUB 1700ici
7050 GOTO 565
8000 RE M SUBRUT. DE MARCAR
8010 B(J) = 1
8020 J = J + 1
8030 B(J) = 0
8040 J = J + 1
8050 B(J) = 1
8060 J = J - 1
8070 J = J - 1
8080 GOSUB 20~00
8090 J=J+l
8100 J = J ;t 1
8110 J = J + 1
8120 BU) = 1
8130 GOSUB 20600
8135 GOSUB 170~0
8140 GaTO 565
9000 REM SUBRUT. DE BORRAR
9010 B(J) = 1
9020 J = J + 1
9030 B(J) = 0
9040 J = J + 1

-- --
334 Programación de una máquina universal de Turing

905 11(.1) = 1
9060 J = J - 1
9070 J = J - 1
9080 GOSUB 20000
9090 J = J + 1
9100 J = J ... 1
9110 J = J + 1
9120 EI(J) = 0
9125 GOSUB 17000
9130 GOSUBi0600
9135 GOSUB 17000
9140 GOTa 565
10000 REM SUBRUT. DE
10001 REM OPEP.ACION REALIZADA
10010 GOSUB 20400
11000 GOSUB 17000: END
15000 REM RECONOCEDOR DE
15001 RE" TRIPLOS A LA DERECHA
15003 J = J + 1
15005 J = J + 1
15010 J = J + 1
15015 J = J + 1
15020 J = J + 1
15030 If B(J) = 0 THEN 15170
15040 J = J - 1
15050 IF B(J) = 0 THEN 15110
15060 J = J - 1
15070 IF II{J) = 0 THEN 15090
15080 A = 1
15085 GOTO 15500
15090 A = 5
15100 GOTO 15500
15110 J = J - 1
15120 IF B(J) = 0 THEN 15150
15130 A = 3
15140 GOTO 15500
15150 A = 7
15160 GOTO 15500
15170 J = J - 1
15180 IF B(J) = 0 THEN 15240
15190 J = J - 1
15200 IF I!(J) = 0 THEN 15225
1521. A = 2
15220 GOTO 15500
15225 A = 6
15227 GOTO 15500
15240 J = J - 1
15250 IF B(J) = 0 THEN 152B0
15260 A = 4
15270 GOTO 15500
15280 A =8
15500 F:ETURN
1551. RETURN
16.0. RE" RECONOCEDOR DE
16001 RE" TRIPLOS A LA IZQ.
160.5 J = J - 1
16010 IF B(J) = 0 THEN 16090
1&020 J 11: J - -1: IF 8(J) = 0 THEN 16060
16830 J e J - 1: IF B(J) = 0 THEN 16050

''o.
J

--
l"NJgramJJción
de UIfIlmdquintl universal de Turlrig 335

16ee A = 1
16e5 GOTa 16250
16eSi A :1 5: GOTa 16250
1606e J :a J - 1: IF EI(J) = 0 THEN 16080 11
16070 A = 3: GOTO 16250
16080 A = 7: GaTO 16250
16090 J = J - 1: IF B(J) = 0 THEN 16130 1
16100 J = J - 1: IF B(J) = 0 THEN 16120
16110 A = 2: GOTO 16250
16120 A = 6: GOTa 16250
16130 J = J - 1: IF B(J) = 0 THEN 16150
16140 A = 4: GOTO 16250 .

16150 A = 8: GOTa 16250


16250 RETURN 1f
.'

17000 REH SUBRUTINA DE IHPRESION I


17005 PRINT : PRINT : PRINT : FOR 1 = 1 TO N ! 2
17010 PRINT B{I);
17020 NEXT 1
17030 PRINT
17040 1F J } N j 2 THEN F'RINT .. GaTO 17060
17050 PRINT TAB( J) · .. ·
17060 FOR 1 = (N / 2) + 1 TO N
17080 PRINT B{I);
1 7 0 9 0. NEXT 1
17105 IF J ( N / 2 THEN PRINT : GaTO 17130
17U6 PRINT
J = J - (N / 2)
17107
17110
17115 J
PRINT
= J +
TAB
(N "
J )
;::)
· A ·

17130 PRINT .
RETURN
.

20000 RE/'! BUSQUE DA DE LIMITE DERECHO


20002 REH DEL PROGRAMA
20005 J = J + 1
20010 J = J + 1
20020 J = J + 1
20030 J = J + 1
20040 J = J ... 1
20050 IF B(J) = 1 THEN 20090
20060 J = J - 1
20070 J = J - 1
20080 GaTO 20000
20090 J = J - 1
20100 IF B{J) = 1 THEN 20130
20110 J =J - 1
20120 GaTO 2000
20130 J = J - 1
20140 IF B(J,: = 1 THEN ;:0160
20150 GOTO 20000
20160 RETURN
20200 REM BUSCA INTER'.)ALO
20201 REM MARCADO DERECHA
20205 J = J + 1
20210 J = J + 1
20220 J = J + 1
20230 J = J + 1
20240 J = J + 1
20250 IF B(J) = 1 THEN 20300
20260 J = J - 1

--------
336 Programación
de una máquina universal de Turing

20290 GOTO 20200


20300 J = J - 1
20310 IF B(J) = 0 THEN 20340
20320 J = j - 1
20330 GOTO 20200
26340 J = J - 1
20350 IF B(J) = 1 THEN 20370
20360 GOTO 20200
20370 RETURN
20400 REM BUSCA LIMITE IZG.
20405 J = J - 1
20410 IF B(J) = 1 THEN 20450
20420 J = J - 1
20430 J=J-l.
216446 GOTO 20400
20450 J = J - 1
20460 IF B(J) = 1 THEN 20490
20470 J = J - 1
20480 GOTO 20400
20490 J = J - 1
20500 IF B(J) = 1 THEN 20520
20510 GOTO 20400
20520 RETURN
20600 J=J-l
20610 IF B(J) = 1 THEN 20650
20620 J = J - 1
20630 J = J - 1
20640 GOTO 20600
20650 J = J - 1
20660 IF B(J) = 0 THEN 20690
20670 J = J - 1
20680 GOTO 20600
20690 J = J - 1
20700 IF B(J) = 1 THEN 20720
20710 GOTO 206e0
20720 RETURN
20800 J = J + 1
20810 J = J + 1
20820 J = J + 1
20830 J = ..;+ 1
2084~ J=J+l
20850 IF B(J) = 0 THEN 20870
20860 J = j - l:J = J - 1; GOTO 23800
20870 J = J - 1: :F B(J) = 0 THEN 20890
20880 J = "J - 1: GüTO Z380\'
20890 J = J - 1: Ir B(J) = 0 THE~ 20910
20900 GOTO 20800
20910 RETlIRN
21000 J = J + l:J = J + l:J = J + l:J ~ J + l:J = J .. 1
:1010 IF B(J) = ~ 7HE~ Z~~30
21020 J = J - l:J = J - :: GOTO 210~0
21030 J = J - 1: IF B(J) = 1 THEN 21050
21040 J = J - 1: GOTO 21000
21050 J = J - 1: IF B(J) = 0 THEN 21~70
21060 GOTO 21000
21070 RETURN
21200 J = J - 1
21210 'IF B(J) = 0 THEN ~1230
21220 J = J - l:J = J - 1: COTO 21200

-- ----
,.

Programaciónde unamáquinaunivmaldé Ttlrlhg 337

21230 J ;z J - 1: IF B(J) = 1 THEN 21:50


21240 J =
J -.1: GOTO 2100
21250 J = J - 1: IF a(J) = 0 THEN 21270
21260 GOTO 21200
21270 RETURN
22000 J = J + 1 I

22010 B(J) = 1 j

!
2202 J = J - 1
22030 -RETURN I

22100 J = J - 1 I
22110 B(J) = 1 I

22120 J = J + 1
22130 RETURN
22200 J = J - 1
22210 B(J) 0 =
22222 J = J + 1
22230 RETURN
22300 J J + 1 =
22310 [qJ) 0 =
22320 J = J - 1
22330 RETURN

JRUN
INTRODUCE DIMENSION CINTA
?108

001111100010010010000010000010010010010010010010010010
..
000010010000010010010010000010010010010010000011101000

001111100010010010010110000010010010010010010010010010
..

000010010000010010010010000010010010010010000011111000

00111111000100100100000100i011001001001001~~100100i001
A

000001001000001001001001000001001001001001000001111000

001111110001001001000001000001001001001001000101001~01
..

000001001000001001001001000001001001001001000001111000

- -- -------
338 Programaciónde una máquinauniversalde Turing

001111110001001001001011008001001001001001001001001001

000101001000001001001001000001001001001001000001111000
A

0011111100010010010~1011000001001001001001001001001001
A

000001001000001001001001000001001001001001000001111000

001111111000100100100000100101100100100100100¡00100100
A

100000100100000100100100100000100100100100100000111000

001111111i0010010010i000100000100100100100100010100100
A

100000100100000100100100100000100100100100100000111000

001111111000100100100101100000100100100100100100100100

100010100100000100100100100000100100100100100000111000
A

001111111000100100100000100000100100100100100100100100
10e101100100000100100i0010000010010010010010~00~111000
A

.
0011111100010010010000010000010010010010010010010010~1

e0000100100101100100100100000100100100¡001~000~1111000
A'

e0111111eee10e10010000010000010010~1001001001001~01001
8e0e010010e0001001001001001011001001001001000001110000
A
Programación de una máquina unive7'Sll1de Turing 339

0011111100010010010000010000010010010010010010010i1001

000001001000001001001001001011001001001001000001110000
A

001111110001001001000001000001001001001001001001001001
A

000001001000001001001001000001001001001001000001110000
340 Programación de una máquina universal de Turing
NOTAS

1 "On Computable Numbers, with an Application to the Entschei-


dungsproblem". Este artículo fue reimpreso en 1965 en la antología com-
pilada por Martin Davis, The Undecidable, a cuya paginación me refiero
en las citas que siguen del texto de Turing. (Para los correspondientes de-
talles de pie de imprenta véase la bibliografía).
2 Un algoritmo, o procedimiento efectivamente calculable, es un mé-
todo que permite resolver de una manera mecánica una cierta clase de pro-
blemas, mediante la aplicación de un conjunto finito de reglas formuladas
sin ambigüedad. El orden de aplicación de las mismas debe estar especifi-
cado de antemano.
Ejemplos de algoritmos son el conocido método de Euclides para ha-
llar el máximo común divisor de dos números, la criba de Eratóstenes (que
obtiene la serie de números primos), o la confección de una tabla de verdad
para una fórmula cualquiera de la lógica de enunciados (en cambio la deri-
vación de una cierta fórmula en un sistema de deducción natural no es algo-
rítmica, puesto que si bien se procede según reglas en un tal sistema, el or-
den de aplicación de esas reglas no está especificado de antemano).
3
O.c., pp. 135,136.
4 Turing añade la suposición de que el número de estados internos
("states of mind") de la máquina que haya que tomar en consideración
es finito, por razones similares a las que aconsejan la finitud del número de
símbolos del alfabeto. Cf., o.C. 136.
5 Las exposiciones usuales de la teoría presentan a veces una versión
alternativa de la instrucción de máquina de Turing en la que intervienen
cinco en lugar de cuatro elementos.
6
O.c., pp. 127-8.
7 Sobre la idea de "descripción standar", aludida en el texto más arri-
ba citado, puede verse la página 126 del citado artículo de Turing.
8 S.C. Kleene, en el capítulo XIII de su Introducción a la metamate-
mática, y otros autores como Hermes, describen numéricamente las situa-
ciones de una máquina utilizando un procedimiento de godelización.
9 "A universal Turing machine with two internal states", incluido en
el volumen que compiló McCarthy, Automata Studies, pp. 157-65.
10 La "marca" obtenida en 1960 por Minsky de una máquina univer-
sal de 7 estados por 6 símbolos (producto 42) fue batida por Watanabe en
1961 con una máquina de 8 estados por 5 símbolos y otra de 6 estados por
5 símbolos. Posteriormente Minsky ha logrado un record de 28 (4 símbolos
por 7 estados).
11 "A variant to Turing's Theory of Calculating Machines". Reimpre-
so en la obra del mismo autor, A Survey o{ Mathematical Logic, 1964, pp.
127-59.

- - --- ---
Programación de'una máqui1lllunivenal de Turing 341

12 En rigor el d~eño de Hao Wang prescinde de la instrucción de ': I


parada. J
13 f .

Wang, Survey, p. 129.


14 "Logic, Computers, and Humanity", aparecido en Teaching Phi.
¡rt
losophy, Spring 1976, pp. 259-321. t

I
BIBLIOGRAFIA t

George S. BOOLOS y Richard C. lEFFREY, ComputabUity and Logic,


Cam bridge: Cam bridge University Press 1980.
A.W. BUR KS and I.M. COPI, "The Logical Design of an Idealized Gene.
ral.Purpose Computer", en Jour. Franklin Inst. 261 (1956), pp.
299-314,421-436.
J.N. CROSSLEY, ¿Qué es la lógica matemática?, Madrid: Tecnos 1983.
Martin DA VIS, Computability and UnsolvabUity, New York: McGraw.Hill
1958.
(Comp.), TlJe Undecidable. Basic papers on undecidable propoai-
tions, unsolvable problems and computable functions, Hewlett.
New York: Raven -Press 1965.
Klaus HEIDLER, H. HERMES, Friedrich K. MAHN, Rekuraive Funktio.
nen, Mannheim: Bibliographisches Institut 1977.
Hans HERMES, Aufziilbarkeit, Entscheidbarkeit, Berechenbarkeit, Berlín:
Springer 1971. .

Enumerability, Decidabüity, Computability, Berlín: Springer 1965.


Introducción a la teorra de la computabüidad, Madrid: Tecnos
1983.
St.C. KLEENE, Introducción a la Metamatemática, Madrid: Tecnos 1974.
Marvin MINSKY, Computation: finite and infinite machines, Englewoods
Cliffs, N. l.: Prentice.HallI967.
Edward F. MOORE, "A simplified Universal Turing Machine", en Procee.
ding of the Association for Computing Machin ery, Sep. 8,1952,1953.
(Comp.), Sequential Machines: Selected Paper~, Reading, Mass:
Add~on Wesley 1964.
C.E. SHANNON y 1. McCARTHY (comps.), Automata Studies, Princeton,
N. l.: Princeton University Press 1956.
Raymond SMULL YAN, The Lady or the Tiger? and Other Logic Puzzles,
New York: Alfred A. Knopf 1982.
Frederick SUPPE, "Logic, Computers and Humanity: A New Course", en
Teaching Philosophy, Spring 1976, pp. 259-321.

- - - -
----
342 Programación de una máquina universal de Turing

Alan M. TURING, "On Computable Numbers, with an Application to the


Entscheidungsproblem", en Proceedings o[ the London Mathema-
tical Society, ser. 2, vol. 42 (1936-7), pp. 230-265; Corrections,
Ibid, vol. 43 (1937) pp. 544-546. Reimpreso en Martin DA VIS
(comp.) The Undecidable, pp. 116-154.
¿Puede pensar una máquina?, Valencia: Cuadernos Teorema,
1974.
Hao WANG, "A Variant to Turing's Theory of Calculating Machines", en
Joumal o[ Association For Computing Machinery, 4 (1957), pp.
63-92. Reimpreso en A Survey o[ Mathematical Logic, cap. VI,
127-159. Science Press, Peking, North-Holland, Amsterdam 1964.
"Universal Turing Machines: An Exercise in Coding", en Zeit-
schri[t [ür mathematische Logik und Grundlagen der Mathematik
3 (1957), pp. 69-80. Reimpreso en A Survey o[ Mathematical
Logic, cap. VII, pp. 160-74.
Logic. Computen and Sets, New York: Chelsea 1970.

También podría gustarte