Professional Documents
Culture Documents
1 Historia
2.3 Algoritmos
3 Clases de complejidad
o
4 La pregunta P=NP
5 NP-Completitud
o
7 Vase tambin
8 Referencias
o
8.1 Artculos
Historia[editar]
Antes de que se realizaran investigaciones en torno a la complejidad de los algoritmos, se
crearon los cimientos de esta teora por varios investigadores. Uno de los aportes ms
influyentes fue la definicin de las Mquinas de Turing en 1936, las cuales resultaron ser una
nocin de computadora muy flexible y robusta. A medida que las computadoras se
desarrollaban en los 40's y los 50's, la Mquina de Turing demostr ser el modelo terico
correcto de cmputo.
Sin embargo, rpidamente se descubri que el modelo bsico de la Mquina de Turing fallaba
al cuantificar el tiempo y la memoria requerida por una computadora, un problema crtico hoy
en da, y an ms en aquellos tiempos. La idea de medir el tiempo y espacio como una
funcin de la longitud de la entrada, se origin a principios de los 60's por Hartmanis and
Stearns, y as, naci la teora de la complejidad computacional.
En los inicios, los investigadores trataban de entender las nuevas medidas de complejidad, y
cmo se relacionaban unas con otras. En 1965, Edmonds defini un "buen" algoritmo como
uno con un tiempo de ejecucin acotado por un polinomio, es decir, con un tiempo de
ejecucin polinmico.1 Esto condujo al surgimiento de uno de los conceptos ms importantes
de la teora de la complejidad computacional: la NP-completitud y su pregunta fundamental,
siP=NP.
El campo comenz a florecer cuando el investigador norteamericano Stephen Cook,
trabajando de manera independiente al investigador sovitico Leonid Levin, probaron que
existen problemas relevantes que son NP-completos. En 1972, Richard Karp llev esta idea
un paso ms adelante, demostrando que 21 problemas combinatorios y de teora de grafos,
caracterizados por ser computacionalmente intratables, eran NP-completos. 2 Tambin en los
70's, se produjo un crecimiento de las clases de complejidad a medida que los investigadores
trataban de comprender los distintos modelos de cmputo existentes.
En los 80's, se produjo un auge de los modelos finitos, que analizaban el proceso de cmputo
de una manera inherentemente distinta. Surgi un nuevo acercamiento a problemas como
P=NP, y an cuando estos modelos tenan sus limitaciones separando las clases de
complejidad, esta aproximacin introdujo tcnicas combinatorias que permitieron un mejor
entendimiento de los lmites de estos modelos.
Ya en los 90's, se estudiaron nuevos modelos de cmputo como las computadoras cunticas,
donde una misma tarea puede tener diferente complejidad en la computacin clsica y en la
computacin cuntica. Sin embargo, existen varias limitantes, entre ellas, la de desarrollar un
hardware para este modelo, y que se requieren grandes cantidades de espacio para realizar
los clculos.
Problema computacional[editar]
Artculo principal: Problema computacional
2. Una sentencia que describa las propiedades que la respuesta, o la solucin, debe
cumplir.
Una instancia de un problema se obtiene cuando se especifican valores particulares para
todos los parmetros del problema. Por ejemplo, consideremos el problema del test de
primalidad. La instancia es un nmero (e.g. 15) y la solucin es "s" si el nmero es primo, y
"no" en caso contrario. Visto de otra manera, la instancia es una entrada particular del
problema, y la solucin es la salida correspondiente para la entrada dada.
Problemas de decisin[editar]
Artculo principal: Problema de decisin
Algoritmos[editar]
Artculo principal: Algoritmo
Podemos decir informalmente, que los algoritmos son procedimientos paso-a-paso para
resolver problemas. Se puede pensar en ellos como simples programas de computadora,
escritos en un lenguaje artificial especfico.3
Se dice que un algoritmo resuelve un problema A, si dicho algoritmo se puede aplicar a
cualquier instancia I de A, y se garantiza que siempre produce una solucin para dicha
instancia. De manera general, nos interesa encontrar el algoritmo ms "eficiente" para resolver
cierto problema. En su sentido ms amplio, la nocin de eficiencia involucra a todos los
recursos computacionales necesarios para la ejecucin de un algoritmo.
Por algoritmo "ms eficiente" usualmente nos referimos al ms rpido. Debido a que los
requerimientos de tiempo son usualmente un factor dominante cuando se trata de determinar
si un algoritmo es lo suficientemente eficiente para ser til en la prctica, nos concentraremos
en este recurso.
Clases de complejidad[editar]
Artculo principal: Clase de complejidad
El recurso (o recursos) que est(n) siendo acotado(s) y la(s) cota(s): Estas dos
propiedades usualmente se utilizan juntas, por ejemplo, "tiempo polinomial", "espacio
logartmico", "profundidad constante", etc.
La clase P contiene a aquellos problemas que son solubles en tiempo polinmico por una
mquina de Turing determinista.5
Para la definicin anterior se ha fijado el modelo de cmputo: la Mquina de Turing
determinista. Existen distintas variantes de la Mquina de Turing y es conocido que la ms
dbil de ellas puede simular a la ms fuerte, adicionando a lo sumo un tiempo polinmico. En
las dcadas posteriores a la Tesis de Church-Turing surgieron otros modelos de cmputo, y se
pudo mostrar que la Mquina de Turing tambin poda simularlos a lo sumo adicionando
tambin un tiempo polinmico. Por tanto, la clase anloga a P para dichos modelos no es
mayor que la clase P para el modelo de cmputo de la mquina de Turing.
La clase P juega un papel importante en la teora de la complejidad computacional debido a
que:
1. P es invariante para todos los modelos de cmputo que son polinmicamente
equivalentes a la Mquina de Turing determinista.
2. A grandes rasgos, P corresponde a la clase de problemas que, de manera realista, son
solubles en una computadora.
Muchas veces podemos evitar utilizar la fuerza bruta en los problemas para obtener
soluciones en tiempo polinmico. Sin embargo, para algunos problemas esto no ha podido
lograrse, es decir, no se conocen algoritmos que los resuelvan en tiempo polinmico. Quizs
estos problemas tengan algoritmos en tiempo polinomial que se basan en principios por ahora
desconocidos, o quizs estos problemas no pueden ser resueltos en tiempo polinmico,
debido a que son "inherentemente difciles".
La clase de complejidad NP consta de los problemas "verificables" en tiempo polinmico. Por
verificable se entiende a un problema tal que dado un certificado de solucin (candidato a
solucin), se puede verificar que dicho certificado es correcto en un tiempo polinmico en el
tamao de la entrada. A los problemas en la clase NP usualmente se les llama problemas NP.6
El trmino NP proviene de no determinista en tiempo polinmico y se deriva de un
caracterizacin alternativa de esta clase, donde se utilizan Mquinas de Turing no
deterministas. Informalmente, se puede definir la clase NP en trminos de un algoritmo no
determinista (recordar la equivalencia entre algoritmo y Mquina de Turing).
El algoritmo mencionado est compuesto por 2 etapas separadas. Dada una instancia del
problema I, la primera etapa simplemente "adivina" un candidato a solucin S. Entonces, la
etapa de verificacin recibe como entrada a I y a S, y procede a realizar el cmputo de una
manera determinista, finalmente detenindose con la respuesta "s", o con la respuesta "no", o
sigue computando sin detenerse.
Clase de
complejidad
Modelo de cmputo
Restriccin de
recurso
DTIME(f(n))
Tiempo f(n)
Tiempo poly(n)
EXPTIME
Tiempo 2poly(n)
NTIME(f(n))
NP
NEXPTIME
DSPACE(f(n))
Espacio f(n)
Espacio O(log n)
PSPACE
Espacio poly(n)
EXPSPACE
Espacio 2poly(n)
NSPACE(f(n))
NL
NPSPACE
NEXPSPACE
La pregunta P=NP[editar]
Artculo principal: Clases de complejidad P y NP
NP-Completitud[editar]
Reduccin polinomial[editar]
Artculo principal: Transformacin polinmica
Problemas NP-completos[editar]
Artculo principal: NP-completo
Las reducciones en tiempo polinomial nos dotan de elementos para probar, de una manera
formal, que un problema es al menos tan difcil que otro, con una diferencia de un factor
polinomial. Estas son esenciales para definir a los problemas NP-completos, adems de
ayudar a comprender los mismos.
La clase de los problemas NP-completos contiene a los problemas ms difciles en NP, en el
sentido de que son los que estn ms lejos de estar en P. Debido a que el problema P=NP no
ha sido resuelto, el hecho de reducir un problema B, a otro problema A, indicara que no se
conoce solucin en tiempo polinomial para A. Esto es debido a que una solucin en tiempo
polinomial para A, tendra como consecuencia la existencia de una solucin polinomial para B.
De manera similar, debido a que todos los problemas NP pueden ser reducidos a este
conjunto, encontrar un problema NP-completo que pueda ser resuelto en un tiempo polinomial
significara que P=NP.
Importancia de la NP-Completitud[editar]
Quizs la razn de mayor peso por la cual los cientficos de la computacin creen que P es
distinto de NP, es la existencia de la clase de problemas "NP-completos". Esta clase tiene la
curiosa propiedad de que si algn problema NP-completo puede ser resuelto en tiempo
polinomial, entonces todo problema en NP tiene una solucin en tiempo polinomial, es decir,
P=NP. A pesar de aos de estudio, ningn algoritmo de tiempo polinomial se ha descubierto
para ningn problema NP-completo.
Desde el punto de vista terico, un investigador intentando mostrar que la clase P es distinta
de la clase NP, pudiera enfocarse en un problema NP-completo. Si algn problema en NP
requiere ms que un tiempo polinomial, entonces uno NP-completo tambin. Adems, un
investigador intentando demostrar que P=NP, solo necesita encontrar un algoritmo de tiempo
polinomial para un problema NP-completo para lograrlo.
Desde el punto de vista prctico, el fenmeno de la NP-completitud puede prevenir la prdida
de tiempo cuando se busca un algoritmo de tiempo polinomial no existente para resolver un
problema determinado. An cuando no se posean los elementos matemticos para demostrar
que cierto problema no se puede resolver en tiempo polinomial, creemos que P no es igual a
NP, as que demostrar que el problema es NP-completo, es una fuerte evidencia de su no
"polinomialidad".
Vase tambin[editar]
Reduccin (complejidad)
Teorema de Cook-Levin
Clases de complejidad P y NP
Computacin cuntica
Referencias[editar]
1.
2.
3.
Volver arriba Garey, Michael R., Johnson David S., (1979), Computers and
Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 4).
4.
Volver arriba Garey, Michael R., Johnson David S., (1979), Computers and
Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 8).
5.
Volver arriba Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein,
Clifford, (2010),Introduction to Algorithms, 3. edicin, MIT Press and McGraw-Hill, (page 1049).
6.
Volver arriba Garey, Michael R., Johnson David S., (1979), Computers and
Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 28).
7.
Volver arriba Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein,
Clifford, (2010),Introduction to Algorithms, 3. edicin, MIT Press and McGraw-Hill, (page 1067).