You are on page 1of 8

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 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 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.

Cantor demostró su argumento utilizando números binarios puestos en forma matricial,


similar a la siguiente tabla:

‫ݐ‬ଵ = ૙, 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 …

Ahora debemos calcular el complemento de la tupla que obtuvimos:

‫ݐ‬௡ = 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:

ܲ = ‫ݐݏ݁ ݈ܽ݌ݑݐ ܽܮ‬á ݁݊ ݈ܽ ‫݈ܾܽܽݐ‬.

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 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).

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 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

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 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 contradicción.

De esta manera hemos probado que HM en realidad es indecidible.


REDUCCIÓN

Para ciertos problemas es bastante difícil comprobar su indecidibilidad, por lo 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
P1
m 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.