INDECIDIBILIDAD Investigación Por: Fernando David Irías Escher
CONTENTS ¿Qué es Indecidibilidad? ......................................................................... ........................................................................................................ ............................................................. .................................... ...... 3 Diagonalización ............................................................ ........................................................................................... ............................................................ ............................................................ ..................................... ...... 4 Ejemplo #1: Problema de Halting ....................................................... ...................................................................................... ............................................................ ................................. 6 Reducción......................................................... ....................................................................................... ............................................................ ............................................................. .................................................... .....................7 Ejemplo #2: Reducción Hola, Mundo........................................................... .......................................................................................... .................................................... .....................8
¿QUÉ ES INDECIDIBILIDAD? Alan Turing, considerado el padre de la computación, logro diseñar máquinas que representan completamente completamente a las computadoras que conocemos hoy en día. Turing desarrollo un papel importante durante la segunda guerra mundial, ayudo a descifrar la codificación de la ENIGMA. Esta era una máquina que utilizaban los alemanes para encriptar mensajes y comunicarse entre líneas enemigas. Bajo este menester fue que Turing, valiéndose de la máquina que hoy en día lleva su nombre (máquina de Turing), encontró que algunas máquinas no estaban del todo validadas para ciertos problemas. ¿Qué pasaría si una máquina con un alfabeto definido tuviera como entrada caracteres que no reconoce? Preguntas como está fueron las que se planteaba a medida exploraba las posibilidades de su invención. Luego descubrió que al resolver el problema de la entrada de caracteres no aceptados aparecían nuevos problemas que podrían hacer que una máquina fallara. A medida que resolvía varios de estos problemas encontraba más y más problemas de complejidad aún mayor. 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
ILUSTRACIÓN 1: MÁQUINA 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 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. c ontradicció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 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. Cantor demostró su argumento utilizando números binarios puestos en forma matricial, similar a la siguiente tabla: = , 0 , 0 , 0, 0, 0 , 0, 0, 0, … = 1, , 1, 1, 1 , 1, 1, 1 , 1, 1, … = 0, 1 , , , 1, 0 , 1, 1, 0 … = 1, 0, 1, , 1,0,1,… = 1, 1 , 0, 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: = 0100 010001 010 0…
Ahora debemos calcular el complemento de la tupla que obtuvimos: = 1011 101110 101 1…
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: = á á . .
Como ya vimos que la tupla debería estar en la tabla, pero en realidad no debería estar tenemos que: ¬ ⟹
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 l as 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). Teniendo estás consideraciones podemos tener tuplas de la forma: = , , , , , …
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 d etiene y acepta a w, caso contrario HM rechaza. Para probar la reducción al absurdo, supondremos que HM es decidible. Acepta
w m
HM
Ciclo Infinito
ILUSTRACIÓN 2: MÁQUINA DE HALTING
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 Diremos también que HM es representada por la diagonal principal de la tabla donde hay una cantidad infinita de máquinas de Turing. La diagonalización radica en que HM es la diagonal de nuestra tabla y aseguramos que en nuestra tabla existe la negación de HM, o sea que hay una máquina que contiene los valores de la negación de HM. En esta tupla hay un valor que concuerda con la diagonal principal, este elemento representa la aceptación o rechazo del código de BM. 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: 1. HM determina que BM se detendrá, por lo tanto acepta. 2. HM determina que BM entrará en un ciclo infinito, por lo tanto rechaza. 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 co ntradicción. De esta manera hemos probado que HM en realidad es indecidible.
REDUCCIÓN Para ciertos problemas es bastante difícil comprobar comprobar su indecidibilidad, indecidibilidad, por lo tanto tanto debemos buscar una manera alterna para demostrar que lo son utilizando lo que ya hemos aprendido. De esta dificultad se deriva la reducción. La reducción de los problemas radica en demostrar por medio de un problema ya probado indecidible, que éste otro es indecidible. Si tenemos un problema ya indecidible, debemos tomar el otro problema y encontrar la manera de modelarlo de la misma forma que el ya comprobado, de esta manera podremos utilizar una lógica implicativa de la siguiente manera: = . . = . .
Ahora, sabemos que si logramos modelar de forma que se parezca a , entonces podríamos deducir una implicación: →
Pero como hemos probado que el primer problema no es decidible, entonces por las leyes de la lógica: ¬ ∴ ¬
Por lo tanto el segundo problema también es indecidible.
EJEMPLO #2: REDUCCIÓN HOLA, MUNDO Retomaremos el problema que planteamos al inicio, una máquina que determina si otra máquina imprimirá o no Hola, Mundo. Viéndolo desde un enfoque de lógica podríamos tener: = , . . = ..
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 m
P1
No
ILUSTRACIÓN 3: MÁQUINA HIPOTÉTICA HOLA, MUNDO
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: 1. P1 tiene las mismas entradas que HM. 2. Determinar si una máquina imprime o no “Hola, Mundo” es lo mismo que decir que una máquina se detendrá o entrará en un ciclo infinito. 3. El Si en P1, es lo mismo que aceptar en HM. 4. El No en p1, es lo mismo que rechazar en HM. Ya que hemos hecho las afirmaciones y podemos tomarlas como validas, podemos continuar con nuestra prueba lógica: Ya sabemos que la máquina de Halting es indecidible, o sea que: ¬
Aplicando la deducción lógica implicativa: ¬ ∴ ¬
Por lo tanto sabemos que la máquina hipotética que determina si un programa imprime o no “Hola, Mundo” es también indecidible.