Está en la página 1de 14

Problemas indecidibles o irresolubles

Dada una propiedad P referente a máquinas de Turing, un problema de


decisión para P consiste en buscar un algoritmo A, aplicable a toda MT
M (es decir, a toda codificación binaria), que responda SI o NO a la
pregunta:
¿satisface M la propiedad P?
Si existe un algoritmo de decisión, se dice que el problema P es
decidible o resoluble; en caso contrario, el problema P es indecidible o
irresoluble.
Problemas indecidibles o irresolubles
Un algoritmo de decisión debe ser aplicable uniformemente a todas las
entradas (¡hay infinitas entradas!) y terminar con una de las conclusiones
'SI' o 'NO':

Según la tesis de Church-Turing, identificamos algoritmos con máquinas de


Turing y por lo tanto, decir que el problema P es indecidible equivale a
afirmar que el lenguaje
L = {M : M es el código de una MT que satisface P}
no es recursivo.
Técnica de reducción de problemas
Conociendo que ciertos problemas son indecidibles, se puede concluir
que otros problemas de decisión también lo son si se razona por
contradicción.
Para ser más precisos, supóngase que ya se sabe que un cierto
problema P1 es indecidible (como el problema universal, por
ejemplo). Podríamos concluir que un problema dado P2 es indecidible
razonando así:
Si P2 fuera decidible también lo sería P1. Esta contradicción mostrará
que el problema P2 no puede ser decidible.
Cuando se emplea este razonamiento, se dice que el problema P1 se
reduce al problema P2 .
El problema de la parada
Dada una Máquina de Turing con un dato en la cinta de entrada, no existe
ningún algoritmo que permita conocer a priori si la máquina se detendrá o
no. Este problema es por ese motivo, indecidible.

Lema: Si un lenguaje L es decidible, entonces Lc es decidible.

Lema: Si un lenguaje L es decidible, entonces es aceptable.

El lema anterior es bastante evidente: si podemos responder sí o no frente a una cadena


del lenguaje, claramente podemos detenernos si la cadena está en el lenguaje y no
detenernos en caso contrario.
Tal como hemos visto que los complementos de lenguajes decidibles
son decidibles, podríamos preguntarnos si los complementos de
lenguajes aceptables son aceptables. El siguiente lema nos dice algo
al respecto.

Lema: Si L es aceptable y Lc es aceptable, entonces L es decidible.

Definición El problema de la detención (o halting problem) es el de,


dada una MT y una cadena w, determinar si M se detendrá frente a w
La paradoja del barbero de Russell
Erase un pueblo con un cierto número de barberos. Estos afeitaban a los que no eran
barberos. Pero ¿quién los afeitaría a ellos? Algunos querían afeitarse ellos mismos, otros
preferían que los afeitara otro barbero. Después de discutir varios días, decidieron nombrar
a uno sólo de ellos como el barbero de todos los barberos.

Este barbero, entonces, estaría a cargo de afeitar exactamente a todos los barberos que no
se afeitaran a sí mismos. El barbero designado quedó muy contento con su nombramiento,
hasta que a la mañana siguiente se preguntó quién lo afeitaría a él.

Si se afeitaba él mismo, entonces estaba afeitando a alguien que se afeitaba a sí mismo,


incumpliendo su designación. Pero si no se afeitaba él mismo, entonces no estaría afeitando
a alguien que no se afeitaba a sí mismo, también incumpliendo su designación.

El barbero renunció y nunca lograron encontrar un reemplazante.

La paradoja muestra que no es posible tener un barbero que afeite exactamente a los
barberos que no se afeitan a sí mismos.
Si cambiamos “barbero” por “MT” y “afeitar” por “aceptar” habremos comprendido la
esencia.
Funciones calculables
Definición (Función parcialmente calculable)
Se dice que una función f : D ⊂ 𝑁r → 𝑁 es parcialmente calculable si
existe una Máquina de Turing tal que para cada tupla t∈D, la máquina
calcula f(t).

Definición (Función calculable)


Se dice que una función es calculable si es parcialmente calculable y está
definida sobre todo 𝑁r, es decir D= 𝑁r
Ejemplos Funciones calculables y parcialmente calculables

1. f1(n1,n2) = n1+n2 es calculable


2. f2(n1,n2) = n1-n2 si n1≥n2 es parcialmente calculable

n1-n2 si n1≥n2
3. f3(n1,n2) = es calculable
0 si n1<n2
Complejidad y Máquinas de Turing
Hasta este momento hemos analizado si los problemas son
solubles o insolubles, es decir, si pueden o no ser resueltos
mediante una máquina de Turing (un algoritmo).
Sin embargo, en la vida real los recursos de computo disponibles
son limitados y por tanto podemos encontrarnos con problemas
que son solubles, pero que podemos considerer intratables debido
a la gran cantidad de tiempo y memoria que son necesarios para
resolverlos.
En esta sección introduciremos una terminología que nos
permitirá analizar preguntas como ¿cuánto tiempo tardaremos en
resolver un problema?
Apriori, establecer un criterio universal para poder saber cuán
eficiente es un algoritmo no es sencillo por que un mismo
problema puede resolverse sobre diferentes tipos de máquinas,
con diferentes grados de eficiencia.
La eficiencia de un algoritmo está en función del tiempo y de la
cantidad de memoria que se necesite para ejecutar el programa, y
esto a su vez depende del hardware utilizado.
Medidas de complejidad algorítmica
La complejidad de una computación se mide por la cantidad
de espacio y de tiempo que consume. Las computacion es
eficientes tienen unas exigencies de recursos pequeñas (este
calificativo debe ser considerado de una manera relativa).
Los recursos que necesita una computación que acepta
cadenas de algún lenguaje, suelen depender del tamaño
(longitud) de la cadena de entrada.
Definición (Complejidad espacial)

La máquina M con k pistas tiene una complejidad especial


S(n), si para cualquier entrada de longitude n, consulta
como máximo S(n) casillas.
También podemos decir que M es una Máquina de Turing
espacialmente acotada por S(n), o que L(M) es un
lenguaje con complejidad especial S(n).
Se cumple siempre que S(n) ≥ 1
Definición (Complejidad temporal)

Supongamos que M es una máquina de Turing que realiza


como máximo T(n) movimientos sobre una cadena de
longitud n, entonces se dice que M tiene una complejidad
temporal T(n) o que es una máquina con una cota
temporal T(n).
También se dice que L(M) es un lenguaje temporalmente
acotado por T(n).