Estudiaremos el concepto de maquina de Turing, el cual fue introducido por Alam Turing para formalizar o modelizar matematicamente la idea de procedimiento efectivo. Una vez definidas las maquinas podremos dar una modelizacion matematica precisa del concepto de funcion -efectivamente computable. Llamaremos a estas funciones -Turing computables y seran aquellas que (en algun sentido que sera bien precisado matematicamente) pueden ser computadas por una maquina de Turing. Por supuesto, la fidedignidad de este concepto, es decir cuan buena es la modelizacion matematica dada por Turing, puede no ser clara al comienzo pero a medida que vayamos avanzando en nuestro estudio y conozcamos ademas los otros paradigmas y su relacion, quedara claro que el modelo de Turing es acertado.
Vivimos en un mundo plagado de maquinas (ascensores, celulares, relojes, taladros, etc). Una caracteristica comun a todas las maquinas es que tienen distintos estados posibles. Un estado es el conjunto de caracteristicas que determinan un momento concreto posible de la maquina cuando esta funcionando. Por ejemplo un estado posible de un ascensor seria:
- esta en el tercer piso, con la primer puerta abierta y la otra cerrada, esta apretado el boton de ir al sexto piso, etc
donde ponemos etc porque dependiendo del tipo de ascensor (si es con memoria, a que pisos puede ir, etc) habra mas datos que especificar para determinar un estado concreto.
Otra caracteristica comun de las maquinas es que interactuan de distintas formas con el usuario o mas generalmente su entorno. Dependiendo de que accion se ejecute sobre la maquina y en que estado este, la maquina realizara alguna tarea y ademas cambiara de estado. En general las maquinas son deterministicas en el sentido que siempre que esten en determinado estado y se les aplique determinada accion, realizaran la misma tarea y pasaran al mismo estado.
Son un modelo abstracto de maquina con una cantidad finita de estados la cual trabaja sobre una cinta de papel dividida en cuadros e interactua o recibe acciones externas por medio de una cabeza lectora que lee de a un cuadro de la cinta a la ves y ademas puede borrar el contenido del cuadro leido y escribir en el un simbolo. Tambien la cabeza lectora puede moverse un cuadro hacia la izquierda o hacia la derecha. La cinta tiene un primer cuadro hacia su izquierda pero hacia la derecha puede extenderse todo lo necesario. En un cuadro de la cinta podra haber un simbolo o un cuadro puede simplemente estar en blanco. Es decir que habra un alfabeto el cual consiste de todos los simbolos que pueden figurar en la cinta. Esto sera parte de los datos o caracteristicas de cada maquina, es decir, puede cambiar dependiendo de la maquina. La maquina, en funcion del estado en que se encuentre y de lo que vea su cabeza lectora en el cuadro escaneado, podra moverse a lo sumo un cuadro (izquierda, derecha o quedarse quieta), modificar lo que encuentre en dicho cuadro (borrando y escribiendo algun nuevo simbolo) y cambiar de estado (posiblemente al mismo que tenia). Para simplificar supondremos que hay en un simbolo el cual si aparece en un cuadro de la cinta, significara que dicho cuadro esta sin escribir o en blanco. Esto nos permitira describir mas facilmente el funcionamiento de la maquina. En gral llamaremos a tal simbolo. Tambien por lo general llamaremos al conjunto de estados de la maquina.
Tambien cada maquina tendra un estado especial el cual sera llamado su estado inicial, generalmente denotado con , el cual sera el estado en el que estara la maquina al comenzar a trabajar sobre la cinta. Hay otras caracteristicas que tendran las maquinas de Turing pero para dar un primer ejemplo ya nos basta. Describiremos una maquina de Turing que tendra y tendra dos estados, es decir . Obviamente sera su estado inicial y ademas el "comportamiento o personalidad" de estara dado por las siguientes clausulas:
- Estando en estado si ve ya sea o o , entonces se queda en estado y se mueve a la derecha
- Estando en estado si ve entonces reescribe , se mueve a la izquierda y cambia al estado
- Estando en estado si ve o o o entonces lo deja como esta, se mueve a la izquierda y queda en estado
Supongamos ahora que tomamos una palabra y la distribuimos en la cinta dejando el primer cuadro en blanco y luego poniendo los simbolos de en los siguientes cuadros. Supongamos ademas que ponemos la maquina en estado y con su cabeza lectora escaneando el primer cuadro de la cinta. Esto lo podemos representar graficamente de la siguiente manera donde son los sucesivos simbolos de . Supongamos ademas que ocurre an . Dejamos al lector ir aplicando las clausulas de para convencerse que luego de un rato de funcionar , la situacion sera donde es el resultado de reemplazar en la primer ocurrencia de por . Dejamos como ejercicio para el lector averiguar que sucede cuando no ocurre en
Una cosa que puede pasar es que para un determinado estado y un , la maquina no tenga contemplada ninguna accion posible. Por ejemplo sea la maquina de Turing dada por , y por la siguiente clausula:
- Estando en estado si ve ya sea o , entonces se queda en estado y se mueve a la derecha
Es facil ver que si partimos de una situacion donde , entonces si ningun es igual a , la maquina se movera indefinidamente hacia la derecha y en caso contrario se movera pasos a la derecha y se detendra, donde es el menor tal que .
Otro caso posible de detencion de una maquina de Turing es cuando esta escaneando el primer cuadro de la cinta y su unica accion posible implica moverse un cuadro a la izquierda. Tambien en estos casos diremos que la maquina se detiene ya que la cinta no es extensible hacia la izquierda.
Otra caracteristica de las maquinas de Turing es que poseen un alfabeto de entrada el cual esta contenido en el alfabeto y en el cual estan los simbolos que se usaran para formar la configuracion inicial de la cinta (exepto ). En general lo denotaremos con al alfabeto de entrada y los simbolos de son considerados auxiliares. Tambien habra un conjunto contenido en el conjunto de los estados de la maquina, cuyos elementos seran llamados estados finales.
Diremos que una palabra es aceptada por por alcance de estado final si partiendo de en algun momento de la computacion esta en un estado de . Llamaremos al conjunto formado por todas las palabras que son aceptadas por alcance de estado final
Diremos que una palabra es aceptada por por detencion si partiendo de en algun momento se detiene. Llamaremos al conjunto formado por todas las palabras que son aceptadas por detencion
Una maquina de Turing es una 7-upla donde
- es un conjunto finito cuyos elementos son llamados estados
- es un alfabeto que contiene a
- es un alfabeto llamado el alfabeto de entrada
- es un simbolo de llamado el blank symbol
-
- es un estado llamado el estado inicial de
- es un conjunto de estados llamados finales
Notese que la funcion da la "personalidad" de la maquina. Aqui los simbolos serviran para especificar que hace el cabezal. O sea:
- significara que la maquina estando en estado y leyendo el simbolo borrara y escribira en su lugar y luego se movera un cuadro a la izquierda (esto en caso que el cabezal no este en el cuadro de mas a la izquierda, en cuyo caso no podra realizar dicha tarea y se detendra).
- significara que la maquina estando en estado y leyendo el simbolo borrara y escribira en su lugar y luego el cabezal se quedara kieto
- significara que la maquina estando en estado y leyendo el simbolo borrara y escribira en su lugar y luego el cabezal se movera un cuadro a la derecha
Si bien en nuestra definicion de maquina de Turing no hay ninguna restriccion acerca de la naturaleza de los elementos de , para continuar nuestro analisis asumiremos siempre que es un alfabeto disjunto con . Esto nos permitira dar definiciones matematicas precisas que formalizaran el funcionamiento de las maquinas de Turing en el contexto de las funciones mixtas. Deberia quedar claro que el hecho que solo analicemos maquinas en las cuales es un alfabeto disjunto con , no afectara la profundidad y generalidad de nuestros resultados.
Una descripcion instantanea sera una palabra de la forma , donde , y . Notese que la condicion nos dice que o el ultimo simbolo de es distinto de . La descripcion instantanea , con , , representara la siguiente situacion Notese que aqui y pueden ser . Por ejemplo si tenemos que y representa la siguiente situacion Si tenemos que y representa la siguiente situacion Si ambos y son entonces tenemos que y representa la siguiente situacion La condicion de que en una descripcion instantanea deba suceder que es para que haya una correspondencia biuniboca entre descripciones instantaneas y situaciones de funcionamiento de la maquina. Dejamos al lector meditar sobre esto hasta convenserse de su veracidad.
Usaremos para denotar el conjunto de las descripciones instantaneas. Definamos la funcion , de la siguiente manera
Dado , definamos de la siguiente manera Es decir es el resultado de remover de el tramo final mas grande de la forma . Dada cualquier palabra definimos Dadas , escribiremos cuando existan , y tales que se cumple alguno de los siguientes casos
Caso 1.
Caso 2.
Caso 3. Escribiremos para expresar que no se da . Para y , escribiremos si existen tales que Notese que sii . Finalmente definamos
Dada , diremos que se detiene partiendo de si existe tal que
-
- , para cada
Deberia quedar claro que es posible que , para cada descripcion instantanea , y que sea no vacio.
Diremos que una palabra es aceptada por por alcance de estado final cuando El lenguage aceptado por por alcance de estado final se define de la siguiente manera
Diremos que una palabra es aceptada por por detencion cuando se detiene partiendo de . El lenguage aceptado por por detencion se define de la siguiente manera
Para poder computar funciones mixtas con una maquina de Turing necesitaremos un simbolo para representar numeros sobre la cinta. Llamaremos a este simbolo unit y lo denotaremos con . Mas formalmente una maquina de Turing con unit es una 8-upla tal que es una maquina de Turing y es un simbolo distingido perteneciente a .
Diremos que una funcion es -Turing computable si existe una maquina de Turing con unit, tal que:
(1) Si , entonces hay un tal que y , para cada
(2) Si , entonces no se detiene partiendo de
En forma similar, una funcion , es llamada -Turing computable si existe una maquina de Turing con unit, , tal que:
(1) Si , entonces hay un tal que y , para cada
(2) Si , entonces no se detiene partiendo de
Cuando y cumplan los items (1) y (2) de la definicion anterior, diremos que la funcion es computada por .
Por supuesto esta definicion no tendria sentido como modelo matematico del concepto de funcion -efectivamente computable si no sucediera que toda funcion -Turing computable fuera -efectivamente computable. Este hecho es intuitivamente claro y lo presentamos a continuacion en forma de proposicion. En algun sentido esto nos dice que el paradigma filosofico es mas amplio (o igual) al paradigma de Turing. Para darle un toque de humor expresaremos esto diciendo que Leibniz vence a Turing.
4.1 (Leibniz vence a Turing). Sean y . Si es computada por una maquina de Turing con unit , entonces es -efectivamente computable.
Proof. Haremos el caso . Sea el siguiente procedimiento efectivo.
- Conjunto de datos de entrada de igual a
- Conjunto de datos de salida de contenido en
- Funcionamiento: Hacer funcionar paso a paso la maquina partiendo de la descripcion instantanea . Si en alguna instancia termina, dar como salida el resultado de remover de la descripcion instantanea final los dos primeros simbolos.
Notese que este procedimiento termina solo en aquelos elementos tales que la maquina termina partiendo desde por lo cual termina solo en los elementos de ya que computa a . Ademas es claro que en caso de terminacion el procedimiento da como salida .
Sin envargo el modelo Turingniano podria a priori no ser del todo correcto ya que podria pasar que haya una funcion que sea computada por un procedimiento efectivo pero que no exista una maquina de Turing que la compute. En otras palabras el modelo podria ser incompleto. La completitud de este modelo puede no ser clara al comienzo pero a medida que vayamos avanzando en nuestro estudio y conozcamos ademas los otros paradigmas y su relacion, quedara claro que el modelo de Turing es acertado, es decir que tambien pasa que Turing vence a Leibniz.
Ya que la nocion de funcion -Turing computable es el modelo matematico de Turing del concepto de funcion -efectivamente computable, nos podriamos preguntar entonces cual es el modelo matematico de Turing del concepto de conjunto -efectivamente enumerable. Si prestamos atencion a la definicion de conjunto -efectivamente enumerable, notaremos que depende de la existencia de cierta funcion por lo cual la siguiente definicion cae de maduro:
Diremos que un conjunto sera llamado -Turing enumerable cuando sea vacio o haya una funcion tal que y sea -Turing computable, para cada .
Deberia quedar claro que si el concepto de funcion -Turing computable modeliza correctamente al concepto de funcion -efectivamente computable, entonces el concepto de conjunto -Turing enumerable recien definido modeliza correctamente al concepto de conjunto -efectivamente enumerable. Notese que segun la definicion que acabamos de escribir, un conjunto no vacio es -Turing enumerable si y solo si hay maquinas de Turing con unit tales que
- cada , con , computa una funcion
- cada , con , computa una funcion
-
Como puede notarse las maquinas puestas secuencialmente a funcionar desde la descripciones instantaneas producen en forma natural un procedimiento efectivo (con dato de entrada ) que enumera a . Por supuesto podemos decir que en tal caso las maquinas enumeran a . La siguiente proposicion muestra que tambien las cosas se pueden hacer con una sola maquina de Turing.
4.2. Sea un conjunto no vacio. Entonces es -Turing enumerable si y solo si hay una maquina de Turing con unit , tal que:
(1) Para cada , tenemos que se detiene partiendo de y llega a una descripcion instantanea de la forma , con .
(2) Para cada hay un tal que se detiene partiendo de y llega a una descripcion instantanea de la forma
Proof. Queda como ejercicio ver como construir la maquina utilizando las maquinas y reciprocamente ver como a partir de una maquina con las propiedades (1) y (2) se pueden construir las maquinas .
La version Turingniana del concepto de conjunto -efectivamente computable es facil de dar: un conjunto sera llamado -Turing computable cuando la funcion sea -Turing computable. O sea que es -Turing computable sii hay una maquina de Turing con unit la cual computa a , es decir:
- Si , entonces hay un tal que y , para cada
- Si , entonces hay un tal que y , para cada
Si es una maquina de Turing la cual computa a , diremos que decide la pertenecia a , con respecto al conjunto .