Sei sulla pagina 1di 28

Complejidad

Computacional

Andrés Abeliuk
Estudiante de Ciencias de la computación
U. de Chile
Números infinitos por cantor
Es una de las creaciones matemáticas más sorprendentes y
atrevidas de toda la historia: los números transfinitos. Antes
que él, el infinito, por mucha que fuese su peculiaridad, era
más un objeto de reflexión filosófica que matemática. Al
mostrar que existen diferentes tipos de infinito y que es
posible clasificarlos
mediante nuevos números,
Cantor lo convirtió en
protagonista de una
rama muy activa
de las matemáticas.
crisis de los fundamentos de las
matemáticas.
Se ven afectado pilares tan esenciales de la ciencia como son los
conceptos de verdad y de demostración
Los matemáticos se percataron de la excesiva confianza concedida a
la intuición hasta ahora y que las evidencias sobre las que se habían
descansado, no debían ser consideradas más criterios inobjetables
de verdad.
Esta crisis lleva a revisar el sistema aceptado de intuiciones
consideradas como elementales.
Escuela Formalista

David Hilbert plantea en ese momento reemplazar los razonamientos


intuitivos habituales por formulas y reglas (axiomas), las cuales
deben ser traducidas a formalismos,
de tal manera que toda teoría matemática comprendidas sus
demostraciones, razonamientos y las construcciones conceptuales,
queden integrados en el edificio de la matemática como
constituyentes formales, según el modelo del cálculo lógico.
Establece como requisitos y problemas fundamentales de un sistema
formal matemático la consistencia y la completitud.
Los 23 Problemas de Hilbert

En el Congreso Internacional de Matemáticos celebrado en París


en 1900
Propuso 23 problemas que, marcaron las direcciones futuras de
los progresos matemáticos.
Se reconoce de forma general que ésta es la recopilación de
problemas abiertos más exitosa y de profunda consideración
producida nunca por un único matemático.
Teorema de incompletitud de
Gödel
En lógica matemática, teorema más famoso y probablemente
importante demostrado por Kurt Gödel en 1930.
Resultado devastador para el programa de Hilbert
Definiciones:
Un sistema lógico está constituido por
proposiciones a las cuales se les asigna dos
valores posibles, verdadero o falso
Consistencia
Si está libre de contradicciones, es decir, si no
hay en él ninguna proposición P tal que tanto P
como su negación sean demostrables
verdaderos a partir de los axiomas.
Completitud
Toda proposición P o su negación son
Teorema de incompletitud de
Gödel

Primer teorema:
“En cualquier formalización consistente de las
matemáticas que sea lo bastante fuerte para
definir el concepto de números naturales, se
puede construir una afirmación que ni se
puede demostrar ni se puede refutar dentro de
ese sistema.”

Segundo teorema:
“Ningún sistema consistente se puede usar
para demostrarse a sí mismo.”
Teorema de incompletitud de
Gödel

Paradoja del mentiroso:


“Lo que estoy diciendo ahora es falso”

Paradoja ya que de ser verdad luego es falsa y si es
falsa luego es verdad

Proposición no demostrable:
“No soy demostrable”

Resulta ser no demostrable, por lo que vendría
siendo verdad, pero no demostrable
El Entscheidungsproblem
(problema de decisión)
El décimo problema de Hilbert planteaba la siguiente
pregunta:
¿es posible diseñar un algoritmo que, dada una ecuación
diofántica cualquiera, indique si admite o no alguna solución?
Podemos transforma la pregunta en un problema más general:
dada una teoría matemática no trivial ¿es posible diseñar un
algoritmo que, dada una proposición cualquiera de esa teoría,
nos indique si la misma es verdadera o falsa?
Enunciado en términos más dramáticos, el
Entscheidungsproblem nos pregunta ¿es posible, aunque sea
en teoría, diseñar una computadora que reemplace a un
matemático?
Definición de Algoritmo
La palabra clave es algoritmo. ¿Qué es un algoritmo?
Intuitivamente, un algoritmo es una receta, una serie de
instrucciones que nos dice cómo trabajar mecánicamente con
cierto conjunto de datos.

Un algoritmo recibe entonces una entrada (input), procesa


esos datos y, tras un tiempo finito, entrega como respuesta un
resultado (output).
Para tratar con el Entscheidungsproblem esta noción intuitiva
no es suficiente.
Necesitamos una definición matemáticamente precisa del
concepto de algoritmo.
La máquina de
Turing

En 1936, fuertemente influenciado por el teorema de Godel,


Alan Turing crea una definición matemática del concepto de
algoritmo.

El concepto de algoritmo puede asimilarse al de una máquina


abstracta, una computadora teórica hoy conocida como máquina
de Turing. Esta máquina consta en primer lugar de una cinta, en
la cual se anotará la entrada y la salida del algoritmo y que
servirá a la vez de memoria de trabajo del dispositivo.
La máquina de Turing

La cinta está dividida en celdas o casillas, cada una de las


cuales puede contener un único símbolo o bien puede estar
vacía.
La cinta, es potencialmente infinita, esto significa que tanto
hacia la derecha como hacia la izquierda podemos agregar
todas las celdas que sean necesarias (memoria infinita).
La máquina de Turing

La máquina consta también de un cabezal o cursor que puede


ver el contenido de una casilla a la vez.
El cabezal también puede borrar o escribir cualquier símbolo
del lenguaje en la casilla
Por otra parte, el cursor puede moverse a razón de una casilla
por vez, tanto hacia la derecha como hacia la izquierda.
Debido a la infinitud de la cinta, el cursor nunca encontrará
límites para su movimiento.
La Tesis de Turing

“Todo algoritmo o procedimiento efectivo es Turing-


computable”
Codificadas adecuadamente las entradas y las salidas, todo
algoritmo puede representarse mediante una máquina de Turing

Aceptada la Tesis de Turing como un axioma, concluimos que si


pudiéramos demostrar que cierto problema matemático es
irresoluble por cualquier máquina de Turing, entonces habremos
demostrado que es irresoluble por cualquier programa
informático, presente o futuro.
La Tesis de Turing

Es interesante observar que en su razonamiento Turing analiza los


pasos que sigue una persona (no un artefacto) al realizar un
cálculo. Por lo tanto, al definir su máquina, Turing estaba intentando
dar un modelo matemático del funcionamiento del cerebro humano.

¿Es el cerebro humano una computadora


(extraordinariamente compleja, pero computadora al fin) o,
por el contrario, existe una diferencia esencial entre
“computadora” y “cerebro”?
No existe por el momento (y tal vez nunca exista) un acuerdo
unánime acerca del cuál es la respuesta a esta pregunta.
Indecidibilidad
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
Indecidibilidad

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

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

Una máquina como P1 no puede existir, ya que 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).
Problemas indecidibles
Puede probarse con no demasiada dificultad que el conjunto
de todas las máquinas de Turing es numerable,
Mientras que el conjunto de todas las funciones del conjunto
de los números naturales en sí mismo es no numerable.
Por lo tanto deben existir necesariamente funciones no
calculables por máquina de Turing alguna.
Es decir, existen funciones que no pueden ser calculadas
algorítmicamente (no pueden ser “comprendidas” por un
programa de computadora).
Teoría de la Complejidad
Computacional
Parte de la teoría de la computación que estudia los recursos
requeridos durante el cálculo para resolver un problema”.
Los recursos comúnmente estudiados son el
tiempo (número de pasos de ejecución de un algoritmo para
resolver un problema)
espacio (cantidad de memoria utilizada para resolver un
problema).
Clase de problemas Polinomiales (P)
Cuando el tiempo de ejecución de un algoritmo es menor que
un cierto valor calculado a partir del largo de la variable de
entrada (N) usando una fórmula polinómica, se dice que dicho
problema se puede resolver en un tiempo polinómico.
Por ejemplo, la busqueda de una palabra en un texto con N
palabras necesita menos de 50N2+N iteraciones, entonces el
problema es resoluble en un "tiempo polinómico".
De esa manera, tiempos de 2n2+5n, o 4n6+7n4-2n2 son
polinómicos; pero 2n no lo es.
Problemas NP (Polynomial
non-deterministic)
El problema del
vendedor viajero

El objetivo es encontrar
una ruta que,
comenzando y
terminando en una
ciudad concreta, pase
una sola vez por cada
una de las ciudades y
minimice la distancia
recorrida por el viajante
NP-completo
Dentro de la clases NP se definieron los problemas “difíciles”
como NP-completos
Definiciones:
NP:
Se dice que un problema es NP si existe una maquina de turing
a tiempo polinomial que verifique la solución.
NP-completo:
Si el problema es NP y todo otro problema NP es reducible a
este, es decir basta resolver el problema en cuestión para
resolver cualquier otro.

Los tiempos de ejecución de los problemas NP-completos son


exponenciales en el largo de la entrada n. es decir en el orden
de magnitud de 2n
¿Cuán grande es esa magnitud?
¿P=NP?
Pregunta abierta y
se le considera
el problema más importante en este campo.
El Clay Mathematics Institute ha ofrecido un premio de $1
millón de dolares norteamericanos para quién desarrolle la
primera demostración correcta.

Se conjetura que P es distinto de NP.


Si P=NP las implicancias serian inmensas, los computadores
capturarían esa esencia creativa e intuitiva del no
determinismo.
El mundo seria una utopía computacional, la IA seria un hecho
y los matemáticos seria reemplazados por programas
computacionales
Computación cuántica
Mediante la física cuántica que habla de superposición de
estados, es posible estar en muchos estados
simultáneamente.
Pero el problema practico es que la física nos dice que no es
posible medir estos valores, ya que al accesar a información
solo se entregara un posible valor, perdiendo todos los demás,
es decir todos los estados "colapsan" a uno solo.
Aún así todos concuerden que es mas poderoso que un
computador clásico destruyendo la tesis de turing.
Computación cuántica y NP
Ya existe un algoritmo cuántico para factorizar números en sus
factores primos.
Problema milenario que viene desde Aristóteles y que no se ha
encontrado una solución clásica.

Factorizar es uno de los pocos problemas que no están en la


clase P y tampoco se ha podido demostrar que fuese NP-
Completo

Por lo tanto se cree que los computadores cuánticos no


pueden resolver problemas NP-completos.