Escolar Documentos
Profissional Documentos
Cultura Documentos
Luego de batallar con tantas validaciones y problemas tomo una decisión que marcaría el
rumbo de la matemática y la computación hacia como la conocemos hoy en día, decidió hacer
una máquina que tomara el código de otra máquina y que revisara si esta podría cumplir el
propósito para el que fue diseñada. Pronto se encontró con lo que hoy conocemos con el límite
de la computación. Dicha máquina, no existe.
Turing logró demostrar que el problema normalmente radica en la decisión de esta máquina.
¿Qué sucedería si a una máquina le insertáramos su propio código para ver si cumple el
propósito para el que fue hecha? Esta es la repuesta dicha pregunta:
SI
P1 P1 HOLA,
MUNDO
P1, es una máquina que determina si una máquina imprimirá “Hola, Mundo” al revisar su
código. Si la máquina de entrada imprime “Hola, Mundo”, entonces P1 imprimirá SI, caso
contrario imprimirá “Hola, Mundo”.
Ahora viene la prueba: Le damos a P1 su propio código como entrada. Al revisar su propio
código, podría determinar que con certeza va a imprimir “Hola, Mundo”, por lo tanto la salida
de P1 es SI. ¿Cómo es posible de que P1 al revisar su código determine que va a imprimir
“Hola, Mundo”, pero al dar su respuesta no lo haga? Ahora bien, en el caso de que P1
determine que su código no imprimirá “Hola, Mundo”, entonces la salida de P1 debería ser
“Hola, Mundo”. Una vez más nos encontramos en una contradicción.
Una máquina como P1 no puede existir, ya que, como aclaramos antes, su problema radica en
la decisión de su salida. No importa qué salida tenga P1, esta siempre será una contradicción.
A este tipo de problemas se les llama Indecidibles.
Alan Turing marcó los límites de la computación al definir que un problema indecidible es
aquel que no puede ser representado por una Máquina de Turing (TM).
DIAGONALIZACIÓN
Georg Cantor establece una teoría para probar que los números reales nos son un conjunto
discreto (no contable). El propone el argumento que lleva su nombre, la Diagonalización de
Cantor. Esta prueba no fue la primera que probó que los número reales no son contables,
pero si fue la más sencilla. Básicamente la prueba consistía en demostrar que existen ciertos
conjuntos infinitos en los que no puede haber una correspondencia de uno a uno con el
conjunto de los números naturales. A medida pasó el tiempo, está prueba se utilizó en varias
áreas de la matemática, prueba de esto son la paradoja de Rusell, el teorema de la
incompletitud de Gödel y el tema que tratamos, incompletitud de Turing.
ݐଵ = , 0, 0, 0, 0, 0, 0, …
ݐଶ = 1, , 1, 1, 1, 1, 1, …
ݐଷ = 0, 1, , 1, 0, 1, 0 …
ݐସ = 1, 0, 1, , 1, 0, 1, …
ݐହ = 1, 1, 0, 1, , 1, 1, …
= ݐ0, 0, 1, 1, 0, , 1, …
= ݐ1, 0, 0, 0, 1, 0, , …
Si tuviéramos por ejemplo el número natural en nuestra tabla, entonces estaríamos abarcando
todos los números naturales extendiéndonos hacia el infinito, por lo que si tomamos la
diagonal principal de nuestra tabla y le sumamos uno a cada elemento, éste aparecerá en una
tupla de nuestra tabla con toda certeza. Ahora, si tomamos los elementos de la diagonal
principal (los que están en negrita en la tabla), tendríamos la tupla:
ݐ = 0100010 …
ݐ = 1011101 …
Ahora bien, se supone que esta n-esima tupla debería existir en nuestra tabla, pero ¿qué pasa
si tomamos el n-esimo elemento de la tupla? Para resolver esta pregunta, imaginemos que el
n-esimo elemento de ݐ es 0. También hay que tener en cuenta que éste elemento está en la
diagonal principal, esto quiere decir que al calcularle el complemento de la diagonal principal
este elemento debería tomar el valor de 1. ¿Cómo es posible que el n-esimo elemento de ݐ sea
0 y tenga que ser 1 al mismo tiempo? Esta es la pregunta que da base a todo el argumento.
En las matemáticas discretas, este tipo de lógica deductiva es llamada una reducción al
absurdo. La reducción al absurdo no es más que demostrar por medio de lógica y/o tablas de
verdad, que un argumento se contradice en algún punto y por lo tanto es falso. Por ejemplo:
ܲ ੦ ¬ܲ ⟹ ݏ݈ܽܨ
Lo que nos indica que esa no puede existir en la tabla. Por lo tanto podemos
decir que no existe una correspondencia de uno a uno con los números
naturales, ya que hay elementos existentes dentro del conjunto que no
pueden estar en nuestra tabla.
¿Cómo aplicamos esta prueba a las máquinas de Turing? La respuesta más sencilla a esto está
a simple vista: Las Computadoras. No es ajeno a los computólogos que las computadoras que
conocemos hoy en día solo entienden el lenguaje binario, o sea unos y ceros. También
explicamos al principio que las máquinas de Turing son una representación de las
computadoras, por lo tanto podemos afirmar que las máquinas de Turing pueden ser
representadas por cadenas binarias. De la misma forma podemos afirmar que las cadenas que
acepta o rechaza una máquina de Turing pueden representarse por un lenguaje binario (el
código ASCII binario es un buen ejemplo).
Donde ݉ es la n-esima máquina de Turing y ݓ es un bit que cuando es 1 quiere decir que la
i-esima cadena del conjunto de todas las cadenas que existen es aceptada por ݉ , caso
contrario (0) es rechazada por ݉ .
EJEMPLO #1: PROBLEMA DE HALTING
Suponemos que tenemos una máquina llamada HM, que recibe como entrada el código de una
máquina m y una cadena w. HM aceptara cuando m se detiene y acepta a w, caso contrario HM
rechaza. Para probar la reducción al absurdo, supondremos que HM es decidible.
Acepta
w
HM Ciclo
m Infinito
Ahora bien, supongamos que tenemos otra máquina llamada BM, esta máquina contiene a HM
y lo único que hace es aceptar si HM ha rechazado y entrar en un ciclo infinito cuando HM ha
aceptado. O sea que nuestra máquina BM solo negará la salida de HM. Diremos también que
HM es representada por la diagonal principal de la tabla donde hay una cantidad infinita de
máquinas de Turing.
Una vez hechas todas estas afirmaciones, proponemos darle a BM su propio código como
entrada. ¿Qué sucederá cuando HM revise el código? Pueden suceder dos cosas:
En el primer caso HM acepta, por lo tanto BM entra en un ciclo infinito. ¿Cómo pude ser
posible que BM entre en un ciclo infinito si HM determinó que se detendría? Para tener una
respuesta certera analicemos el segundo caso: HM determina que BM entra en un ciclo infinito
y rechaza, dado que HM ha rechazado, entonces BM no entra en un ciclo infinito y solo acepta.
Ahora si podemos afirmar que lo que tenemos frente a nosotros es una contradicción.
Ahora, sabemos que si logramos modelar de forma que se parezca a ݍ,
entonces podríamos deducir una implicación:
ݍ→
¬¬ ∴ ݍ
Retomaremos el problema que planteamos al inicio, una máquina que determina si otra
máquina imprimirá o no Hola, Mundo.
Ahora necesitamos modelar la máquina hipotética Hola, Mundo de manera que tenga las
mismas entradas que la máquina de Halting, podríamos modelarla así:
Si
w
P1
m No
Esta máquina tomara como entrada el código de una máquina m y una cadena w, con esto
determinará si m imprime “Hola, Mundo” al aceptar la cadena w. Como podemos ver la lógica
es la misma que la de la máquina de Halting. En resumen podemos afirmar que:
Ya que hemos hecho las afirmaciones y podemos tomarlas como validas, podemos continuar
con nuestra prueba lógica:
¬ݍ
¬¬ ∴ ݍ