4.1 El paradigma de Turing

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 \(\Sigma\)-efectivamente computable. Llamaremos a estas funciones \(\Sigma\)-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:

  1. adhocprefix-adhocsufix 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.

4.1.1 Descripcion informal de las maquinas de Turing

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 \(\Gamma\) 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, \(\Gamma\) 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 \(\Gamma\) 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 \(B\) a tal simbolo. Tambien por lo general llamaremos \(Q\) al conjunto de estados de la maquina.

Tambien cada maquina tendra un estado especial el cual sera llamado su estado inicial, generalmente denotado con \(q_{0}\), 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 \(M\) que tendra \(\Gamma=\{@,a,b,B\}\) y tendra dos estados, es decir \(Q=\{q_{0},q_{1}\}\). Obviamente \(q_{0}\) sera su estado inicial y ademas el "comportamiento o personalidad" de \(M\) estara dado por las siguientes clausulas:

  1. adhocprefix-adhocsufix Estando en estado \(q_{0}\) si ve ya sea \(b\) o \(B\) o \(@\), entonces se queda en estado \(q_{0}\) y se mueve a la derecha

  2. adhocprefix-adhocsufix Estando en estado \(q_{0}\) si ve \(a\) entonces reescribe \(@\), se mueve a la izquierda y cambia al estado \(q_{1}\)

  3. adhocprefix-adhocsufix Estando en estado \(q_{1}\) si ve \(a\) o \(b\) o \(B\) o \(@\) entonces lo deja como esta, se mueve a la izquierda y queda en estado \(q_{1}\)

Supongamos ahora que tomamos una palabra \(\alpha\in\Gamma^{\ast}\) y la distribuimos en la cinta dejando el primer cuadro en blanco y luego poniendo los simbolos de \(\alpha\) en los siguientes cuadros. Supongamos ademas que ponemos la maquina en estado \(q_{0}\) y con su cabeza lectora escaneando el primer cuadro de la cinta. Esto lo podemos representar graficamente de la siguiente manera \[\begin{array}{cccccccc} B & \alpha_{1} & ... & \alpha_{n} & B & B & B & ...\\ \uparrow\\ q_{0} \end{array}\] donde \(\alpha_{1},...,\alpha_{n}\) son los sucesivos simbolos de \(\alpha\). Supongamos ademas que \(a\) ocurre an \(\alpha\). Dejamos al lector ir aplicando las clausulas de \(M\) para convencerse que luego de un rato de funcionar \(M\), la situacion sera \[\begin{array}{cccccccc} B & \beta_{1} & ... & \beta_{n} & B & B & B & ...\\ \uparrow\\ q_{1} \end{array}\] donde \(\beta_{1}...\beta_{n}\) es el resultado de reemplazar en \(\alpha\) la primer ocurrencia de \(a\) por \(@\). Dejamos como ejercicio para el lector averiguar que sucede cuando \(a\) no ocurre en \(\alpha\)

Una cosa que puede pasar es que para un determinado estado \(p\) y un \(\sigma\in\Gamma\), la maquina no tenga contemplada ninguna accion posible. Por ejemplo sea \(M\) la maquina de Turing dada por \(Q=\{q_{0}\}\), \(\Gamma=\{@,\$,B\}\) y por la siguiente clausula:

  1. adhocprefix-adhocsufix Estando en estado \(q_{0}\) si ve ya sea \(@\) o \(B\), entonces se queda en estado \(q_{0}\) y se mueve a la derecha

Es facil ver que si partimos de una situacion \[\begin{array}{cccccccc} B & \alpha_{1} & ... & \alpha_{n} & B & B & B & ...\\ \uparrow\\ q_{0} \end{array}\] donde \(\alpha_{1},...,\alpha_{n}\in\Gamma\), entonces si ningun \(\alpha_{i}\) es igual a \(\$\), la maquina se movera indefinidamente hacia la derecha y en caso contrario se movera \(i\) pasos a la derecha y se detendra, donde \(i\) es el menor \(l\) tal que \(\alpha_{l}=\$\).

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 \(\Gamma\) y en el cual estan los simbolos que se usaran para formar la configuracion inicial de la cinta (exepto \(B\)). En general lo denotaremos con \(\Sigma\) al alfabeto de entrada y los simbolos de \(\Gamma-\Sigma\) son considerados auxiliares. Tambien habra un conjunto \(F\) contenido en el conjunto \(Q\) de los estados de la maquina, cuyos elementos seran llamados estados finales.

Diremos que una palabra \(\alpha=\alpha_{1}...\alpha_{n}\in\Sigma^{\ast}\) es aceptada por \(M\) por alcance de estado final si partiendo de \[\begin{array}{cccccccc} B & \alpha_{1} & ... & \alpha_{n} & B & B & B & ...\\ \uparrow\\ q_{0} \end{array}\] en algun momento de la computacion \(M\) esta en un estado de \(F\). Llamaremos \(L(M)\) al conjunto formado por todas las palabras que son aceptadas por alcance de estado final

Diremos que una palabra \(\alpha=\alpha_{1}...\alpha_{n}\in\Sigma^{\ast}\) es aceptada por \(M\) por detencion si partiendo de \[\begin{array}{cccccccc} B & \alpha_{1} & ... & \alpha_{n} & B & B & B & ...\\ \uparrow\\ q_{0} \end{array}\] en algun momento \(M\) se detiene. Llamaremos \(H(M)\) al conjunto formado por todas las palabras que son aceptadas por detencion

4.1.2 Definicion matematica de maquina de Turing

Una maquina de Turing es una 7-upla \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,F\right)\) donde

  1. adhocprefix-adhocsufix \(Q\) es un conjunto finito cuyos elementos son llamados estados

  2. adhocprefix-adhocsufix \(\Gamma\) es un alfabeto que contiene a \(\Sigma\)

  3. adhocprefix-adhocsufix \(\Sigma\) es un alfabeto llamado el alfabeto de entrada

  4. adhocprefix-adhocsufix \(B\in\Gamma-\Sigma\) es un simbolo de \(\Gamma\) llamado el blank symbol

  5. adhocprefix-adhocsufix \(\delta:D_{\delta}\subseteq Q\times\Gamma\rightarrow Q\times\Gamma\times\{L,R,K\}\)

  6. adhocprefix-adhocsufix \(q_{0}\) es un estado llamado el estado inicial de \(M\)

  7. adhocprefix-adhocsufix \(F\subseteq Q\) es un conjunto de estados llamados finales

Notese que la funcion \(\delta\) da la "personalidad" de la maquina. Aqui los simbolos \(L,R,K\) serviran para especificar que hace el cabezal. O sea:

  1. adhocprefix-adhocsufix \(\delta(p,\sigma)=(q,\gamma,L)\) significara que la maquina estando en estado \(p\) y leyendo el simbolo \(\sigma\) borrara \(\sigma\) y escribira \(\gamma\) 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).

  2. adhocprefix-adhocsufix \(\delta(p,\sigma)=(q,\gamma,K)\) significara que la maquina estando en estado \(p\) y leyendo el simbolo \(\sigma\) borrara \(\sigma\) y escribira \(\gamma\) en su lugar y luego el cabezal se quedara kieto

  3. adhocprefix-adhocsufix \(\delta(p,\sigma)=(q,\gamma,R)\) significara que la maquina estando en estado \(p\) y leyendo el simbolo \(\sigma\) borrara \(\sigma\) y escribira \(\gamma\) 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 \(Q\), para continuar nuestro analisis asumiremos siempre que \(Q\) es un alfabeto disjunto con \(\Gamma\). 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 \(Q\) es un alfabeto disjunto con \(\Gamma\), no afectara la profundidad y generalidad de nuestros resultados.

4.1.2.1 Descripciones instantaneas

Una descripcion instantanea sera una palabra de la forma \(\alpha q\beta\), donde \(\alpha,\beta\in\Gamma^{\ast}\), \(\left[\beta\right]_{\left\vert \beta\right\vert }\neq B\) y \(q\in Q\). Notese que la condicion \(\left[\beta\right]_{\left\vert \beta\right\vert }\neq B\) nos dice que \(\beta=\varepsilon\) o el ultimo simbolo de \(\beta\) es distinto de \(B\). La descripcion instantanea \(\alpha_{1}...\alpha_{n}q\beta_{1}...\beta_{m}\), con \(\alpha_{1},...,\alpha_{n}\), \(\beta_{1},...,\beta_{m}\in\Gamma\), \(n,m\geq0\) representara la siguiente situacion \[\begin{array}{cccccccccccc} \alpha_{1} & \alpha_{2} & ... & \alpha_{n} & \beta_{1} & \beta_{2} & ... & \beta_{m} & B & B & B & ...\\ & & & & \uparrow\\ & & & & q \end{array}\] Notese que aqui \(n\) y \(m\) pueden ser \(0\). Por ejemplo si \(n=0\) tenemos que \(\alpha_{1}...\alpha_{n}q\beta_{1}...\beta_{m}=q\beta_{1}...\beta_{m}\) y representa la siguiente situacion \[\begin{array}{cccccccccccc} \beta_{1} & \beta_{2} & ... & \beta_{m} & B & B & B & ...\\ \uparrow\\ q \end{array}\] Si \(m=0\) tenemos que \(\alpha_{1}...\alpha_{n}q\beta_{1}...\beta_{m}=\alpha_{1}...\alpha_{n}q\) y representa la siguiente situacion \[\begin{array}{cccccccccccc} \alpha_{1} & \alpha_{2} & ... & \alpha_{n} & B & B & ... & & & & ...\\ & & & & \uparrow\\ & & & & q \end{array}\] Si ambos \(n\) y \(m\) son \(0\) entonces tenemos que \(\alpha_{1}...\alpha_{n}q\beta_{1}...\beta_{m}=q\) y representa la siguiente situacion \[\begin{array}{cccccccccccc} B & B & B & ...\\ \uparrow\\ q \end{array}\] La condicion de que en una descripcion instantanea \(\alpha q\beta\) deba suceder que \(\left[\beta\right]_{\left\vert \beta\right\vert }\neq B\) 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 \(Des\) para denotar el conjunto de las descripciones instantaneas. Definamos la funcion \(St:Des\rightarrow Q\), de la siguiente manera \[St(d)=\text{unico simbolo de }Q\text{ que ocurre en }d\]

4.1.2.2 La relacion \(\vdash\)

Dado \(\alpha\in(Q\cup\Gamma)^{\ast}\), definamos \(\left\lfloor \alpha\right\rfloor\) de la siguiente manera \[\begin{aligned} \left\lfloor \varepsilon\right\rfloor & =\varepsilon\\ \left\lfloor \alpha\sigma\right\rfloor & =\alpha\sigma\text{, si }\sigma\neq B\\ \left\lfloor \alpha B\right\rfloor & =\left\lfloor \alpha\right\rfloor \end{aligned}\] Es decir \(\left\lfloor \alpha\right\rfloor\) es el resultado de remover de \(\alpha\) el tramo final mas grande de la forma \(B^{n}\). Dada cualquier palabra \(\alpha\) definimos \[^{\curvearrowright}\alpha=\left\{ \begin{array}{lll} \left[\alpha\right]_{2}...\left[\alpha\right]_{\left\vert \alpha\right\vert } & \text{si} & \left\vert \alpha\right\vert \geq2\\ \varepsilon & \text{si} & \left\vert \alpha\right\vert \leq1 \end{array}\right.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \alpha^{\curvearrowleft}=\left\{ \begin{array}{lll} \left[\alpha\right]_{1}...\left[\alpha\right]_{\left\vert \alpha\right\vert -1} & \text{si} & \left\vert \alpha\right\vert \geq2\\ \varepsilon & \text{si} & \left\vert \alpha\right\vert \leq1 \end{array}\right.\] Dadas \(d_{1},d_{2}\in Des\), escribiremos \(d_{1}\vdash d_{2}\) cuando existan \(\sigma\in\Gamma\), \(\alpha,\beta\in\Gamma^{\ast}\) y \(p,q\in Q\) tales que se cumple alguno de los siguientes casos

Caso 1. \[\begin{aligned} d_{1} & =\alpha p\beta\\ \delta\left(p,\left[\beta B\right]_{1}\right) & =(q,\sigma,R)\\ d_{2} & =\alpha\sigma q^{\curvearrowright}\beta \end{aligned}\]

Caso 2. \[\begin{aligned} d_{1} & =\alpha p\beta\\ \delta\left(p,\left[\beta B\right]_{1}\right) & =(q,\sigma,L)\text{ y }\alpha\neq\varepsilon\\ d_{2} & =\left\lfloor \alpha^{\curvearrowleft}q\left[\alpha\right]_{\left\vert \alpha\right\vert }\sigma^{\curvearrowright}\beta\right\rfloor \end{aligned}\]

Caso 3. \[\begin{aligned} d_{1} & =\alpha p\beta\\ \delta(p,\left[\beta B\right]_{1}) & =(q,\sigma,K)\\ d_{2} & =\left\lfloor \alpha q\sigma^{\curvearrowright}\beta\right\rfloor \end{aligned}\] Escribiremos \(d\nvdash d^{\prime}\) para expresar que no se da \(d\vdash d^{\prime}\). Para \(d,d^{\prime}\in Des\) y \(n\geq0\), escribiremos \(d\overset{n}{\vdash}d^{\prime}\) si existen \(d_{1},...,d_{n+1}\in Des\) tales que \[\begin{aligned} d & =d_{1}\\ d^{\prime} & =d_{n+1}\\ d_{i} & \vdash d_{i+1}\text{, para }i=1,...,n. \end{aligned}\] Notese que \(d\overset{0}{\vdash}d^{\prime}\) sii \(d=d^{\prime}\). Finalmente definamos \[d\overset{\ast}{\vdash}d^{\prime}\text{ sii }(\exists n\in\omega)\;d\overset{n}{\vdash}d^{\prime}\text{.}\]

4.1.2.3 Detencion

Dada \(d\in Des\), diremos que \(M\) se detiene partiendo de \(d\) si existe \(d^{\prime}\in Des\) tal que

  1. adhocprefix-adhocsufix \(d\overset{\ast}{\vdash}d^{\prime}\)

  2. adhocprefix-adhocsufix \(d^{\prime}\nvdash d^{\prime\prime}\), para cada \(d^{\prime\prime}\in Des\)

Deberia quedar claro que es posible que \(\alpha p\beta\nvdash d\), para cada descripcion instantanea \(d\), y que \(\delta(p,[\beta B]_{1})\) sea no vacio.

4.1.2.4 El lenguaje \(L(M)\)

Diremos que una palabra \(\alpha\in\Sigma^{\ast}\) es aceptada por \(M\) por alcance de estado final cuando \[\left\lfloor q_{0}B\alpha\right\rfloor \overset{\ast}{\vdash}d\text{, con }d\text{ tal que }St(d)\in F.\] El lenguage aceptado por \(M\) por alcance de estado final se define de la siguiente manera \[L(M)=\{\alpha\in\Sigma^{\ast}:\alpha\text{ es aceptada por }M\text{ por alcance de estado final}\}\text{.}\]

4.1.2.5 El lenguaje \(H(M)\)

Diremos que una palabra \(\alpha\in\Sigma^{\ast}\) es aceptada por \(M\) por detencion cuando \(M\) se detiene partiendo de \(\left\lfloor q_{0}B\alpha\right\rfloor\). El lenguage aceptado por \(M\) por detencion se define de la siguiente manera \[H(M)=\{\alpha\in\Sigma^{\ast}:\alpha\text{ es aceptada por }M\text{ por detencion}\}\]

4.1.3 Funciones \(\Sigma\)-Turing computables

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 \(\shortmid\). Mas formalmente una maquina de Turing con unit es una 8-upla \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\) tal que \(\left(Q,\Sigma,\Gamma,\delta,q_{0},B,F\right)\) es una maquina de Turing y \(\shortmid\) es un simbolo distingido perteneciente a \(\Gamma-(\{B\}\cup\Sigma)\).

Diremos que una funcion \(f:D_{f}\subseteq\omega^{n}\times\Sigma^{\ast m}\rightarrow\Sigma^{\ast}\) es \(\Sigma\)-Turing computable si existe una maquina de Turing con unit, \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\) tal que:

  1. adhocprefix(1)adhocsufix Si \((\vec{x},\vec{\alpha})\in D_{f}\), entonces hay un \(p\in Q\) tal que \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor \overset{\ast}{\vdash}\left\lfloor pBf(\vec{x},\vec{\alpha})\right\rfloor\] y \(\left\lfloor pBf(\vec{x},\vec{\alpha})\right\rfloor \nvdash d\), para cada \(d\in Des\)

  2. adhocprefix(2)adhocsufix Si \((\vec{x},\vec{\alpha})\in\omega^{n}\times\Sigma^{\ast m}-D_{f}\), entonces \(M\) no se detiene partiendo de \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor .\]

En forma similar, una funcion \(f:D_{f}\subseteq\omega^{n}\times\Sigma^{\ast}{}^{m}\rightarrow\omega\), es llamada \(\Sigma\)-Turing computable si existe una maquina de Turing con unit, \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\), tal que:

  1. adhocprefix(1)adhocsufix Si \((\vec{x},\vec{\alpha})\in D_{f}\), entonces hay un \(p\in Q\) tal que \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor \overset{\ast}{\vdash}\left\lfloor pB\shortmid^{f(\vec{x},\vec{\alpha})}\right\rfloor\] y \(\left\lfloor pB\shortmid^{f(\vec{x},\vec{\alpha})}\right\rfloor \nvdash d\), para cada \(d\in Des\)

  2. adhocprefix(2)adhocsufix Si \((\vec{x},\vec{\alpha})\in\omega^{n}\times\Sigma^{\ast m}-D_{f}\), entonces \(M\) no se detiene partiendo de \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor\]

Cuando \(M\) y \(f\) cumplan los items (1) y (2) de la definicion anterior, diremos que la funcion \(f\) es computada por \(M\).

Por supuesto esta definicion no tendria sentido como modelo matematico del concepto de funcion \(\Sigma\)-efectivamente computable si no sucediera que toda funcion \(\Sigma\)-Turing computable fuera \(\Sigma\)-efectivamente computable. Este hecho es intuitivamente claro y lo expresamos en forma de proposicion.

4.1. Sean \(n,m\in\omega\) y \(O\in\{\omega,\Sigma^{\ast}\}\). Si \(f:D_{f}\subseteq\omega^{n}\times\Sigma^{\ast}{}^{m}\rightarrow O\) es computada por una maquina de Turing con unit \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\), entonces \(f\) es \(\Sigma\)-efectivamente computable.

Proof. Haremos el caso \(O=\Sigma^{\ast}\). Sea \(\mathbb{P}\) el siguiente procedimiento efectivo.

- Conjunto de datos de entrada de \(\mathbb{P}\) igual a \(\omega^{n}\times\Sigma^{\ast}{}^{m}\)

- Conjunto de datos de salida de \(\mathbb{P}\) contenido en \(O\)

- Funcionamiento: Hacer funcionar paso a paso la maquina \(M\) partiendo de la descripcion instantanea \(\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor\). Si en alguna instancia \(M\) 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 \((\vec{x},\vec{\sigma})\in\omega^{n}\times\Sigma^{\ast}{}^{m}\) tales que la maquina \(M\) termina partiendo desde \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor\] por lo cual termina solo en los elementos de \(D_{f}\) ya que \(M\) computa a \(f\). Ademas es claro que en caso de terminacion el procedimiento da como salida \(f(\vec{x},\vec{\sigma})\).  


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.

4.1.4 Conjuntos \(\Sigma\)-Turing enumerables

Ya que la nocion de funcion \(\Sigma\)-Turing computable es el modelo matematico de Turing del concepto de funcion \(\Sigma\)-efectivamente computable, nos podriamos preguntar entonces cual es el modelo matematico de Turing del concepto de conjunto \(\Sigma\)-efectivamente enumerable. Si prestamos atencion a la definicion de conjunto \(\Sigma\)-efectivamente enumerable, notaremos que depende de la existencia de cierta funcion \(F\) por lo cual la siguiente definicion cae de maduro:

Diremos que un conjunto \(S\subseteq\omega^{n}\times\Sigma^{\ast m}\) sera llamado \(\Sigma\)-Turing enumerable cuando sea vacio o haya una funcion \(F:\omega\rightarrow\omega^{n}\times\Sigma^{\ast m}\) tal que \(I_{F}=S\) y \(F_{(i)}\) sea \(\Sigma\)-Turing computable, para cada \(i\in\{1,...,n+m\}\).

Deberia quedar claro que si el concepto de funcion \(\Sigma\)-Turing computable modeliza correctamente al concepto de funcion \(\Sigma\)-efectivamente computable, entonces el concepto de conjunto \(\Sigma\)-Turing enumerable recien definido modeliza correctamente al concepto de conjunto \(\Sigma\)-efectivamente enumerable. Notese que segun la definicion que acabamos de escribir, un conjunto no vacio \(S\subseteq\omega^{n}\times\Sigma^{\ast m}\) es \(\Sigma\)-Turing enumerable si y solo si hay maquinas de Turing con unit \[\begin{aligned} M_{1} & =\left(Q_{1},\Sigma,\Gamma_{1},\delta_{1},q_{01},B,\shortmid,F_{1}\right)\\ M_{2} & =\left(Q_{2},\Sigma,\Gamma_{2},\delta_{2},q_{02},B,\shortmid,F_{2}\right)\\ & \vdots\\ M_{n+m} & =\left(Q_{n+m},\Sigma,\Gamma_{n+m},\delta_{n+m},q_{0n+m},B,\shortmid,F_{n+m}\right) \end{aligned}\] tales que

  1. adhocprefix-adhocsufix cada \(M_{i}\), con \(i=1,...,n\), computa una funcion \(F_{i}:\omega\rightarrow\omega\)

  2. adhocprefix-adhocsufix cada \(M_{i}\), con \(i=n+1,...,n+m\), computa una funcion \(F_{i}:\omega\rightarrow\Sigma^{\ast}\)

  3. adhocprefix-adhocsufix \(S=\operatorname{Im}[F_{1},...,F_{n+m}]\)

Como puede notarse las maquinas \(M_{1},...,M_{n+m}\) puestas secuencialmente a funcionar desde la descripciones instantaneas \[\begin{aligned} & \left\lfloor q_{01}B\shortmid^{x}\right\rfloor \\ & \left\lfloor q_{02}B\shortmid^{x}\right\rfloor \\ & \ \ \ \ \ \ \ \ \ \vdots\\ & \left\lfloor q_{0n+m}B\shortmid^{x}\right\rfloor \end{aligned}\] producen en forma natural un procedimiento efectivo (con dato de entrada \(x\in\omega\)) que enumera a \(S\). Por supuesto podemos decir que en tal caso las maquinas \(M_{1},...,M_{n+m}\) enumeran a \(S\). La siguiente proposicion muestra que tambien las cosas se pueden hacer con una sola maquina de Turing.

4.2. Sea \(S\subseteq\omega^{n}\times\Sigma^{\ast m}\) un conjunto no vacio. Entonces \(S\) es \(\Sigma\)-Turing enumerable si y solo si hay una maquina de Turing con unit \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\), tal que:

  1. adhocprefix(1)adhocsufix Para cada \(x\in\omega\), tenemos que \(M\) se detiene partiendo de \(\left\lfloor q_{0}B\shortmid^{x}\right\rfloor\) y llega a una descripcion instantanea de la forma \(\left\lfloor qB\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor\), con \((\vec{x},\vec{\alpha})\in S\).

  2. adhocprefix(2)adhocsufix Para cada \((\vec{x},\vec{\alpha})\in S\) hay un \(x\in\omega\) tal que \(M\) se detiene partiendo de \(\left\lfloor q_{0}B\shortmid^{x}\right\rfloor\) y llega a una descripcion instantanea de la forma \(\left\lfloor qB\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor\)

Proof. Queda como ejercicio ver como construir la maquina \(M\) utilizando las maquinas \(M_{1},...,M_{n+m}\) y reciprocamente ver como a partir de una maquina \(M\) con las propiedades (1) y (2) se pueden construir las maquinas \(M_{1},...,M_{n+m}\).  


4.1.5 Conjuntos \(\Sigma\)-Turing computables

La version Turingniana del concepto de conjunto \(\Sigma\)-efectivamente computable es facil de dar: un conjunto \(S\subseteq\omega^{n}\times\Sigma^{\ast m}\) sera llamado \(\Sigma\)-Turing computable cuando la funcion \(\chi_{S}^{\omega^{n}\times\Sigma^{\ast m}}\) sea \(\Sigma\)-Turing computable. O sea que \(S\subseteq\omega^{n}\times\Sigma^{\ast m}\) es \(\Sigma\)-Turing computable sii hay una maquina de Turing con unit \(M=\left(Q,\Sigma,\Gamma,\delta,q_{0},B,\shortmid,F\right)\) la cual computa a \(\chi_{S}^{\omega^{n}\times\Sigma^{\ast m}}\), es decir:

  1. adhocprefix-adhocsufix Si \((\vec{x},\vec{\alpha})\in S\), entonces hay un \(p\in Q\) tal que \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor \overset{\ast}{\vdash}\left\lfloor pB\shortmid\right\rfloor\] y \(\left\lfloor pB\shortmid\right\rfloor \nvdash d\), para cada \(d\in Des\)

  2. adhocprefix-adhocsufix Si \((\vec{x},\vec{\alpha})\in(\omega^{n}\times\Sigma^{\ast m})-S\), entonces hay un \(p\in Q\) tal que \[\left\lfloor q_{0}B\shortmid^{x_{1}}B...B\shortmid^{x_{n}}B\alpha_{1}B...B\alpha_{m}\right\rfloor \overset{\ast}{\vdash}\left\lfloor pB\right\rfloor\] y \(\left\lfloor pB\right\rfloor \nvdash d\), para cada \(d\in Des\)

Si \(M\) es una maquina de Turing la cual computa a \(\chi_{S}^{\omega^{n}\times\Sigma^{\ast m}}\), diremos que \(M\) decide la pertenecia a \(S\), con respecto al conjunto \(\omega^{n}\times\Sigma^{\ast m}\).