Sie sind auf Seite 1von 20

ndice general

Teora de la complejidad computacional

1.1

Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Problemas, algoritmos y complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Problema computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Problemas de decisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.3

Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.4

Algoritmos de tiempo polinmico y problemas intratables . . . . . . . . . . . . . . . . . .

1.3

Clases de complejidad

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1

Deniendo clases de complejidad

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.2

Mquinas de Turing deterministas y la clase P . . . . . . . . . . . . . . . . . . . . . . . .

1.3.3

Computacin no determinista y la clase NP . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.4

Clases de complejidad importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4

La pregunta P=NP

1.5

NP-Completitud

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.1

Reduccin polinomial

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.2

Problemas NP-completos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.3

Importancia de la NP-Completitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.6

Haciendo frente a problemas NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7

Vase tambin

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.8

Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.8.1

Artculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.8.2

Libros de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

NP-completo

2.1

Denicin de NP-completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3

Ejemplos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Soluciones aproximadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5

Completitud bajo diferentes tipos de reduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.6

Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.7

Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Problema de decisin

10
i

ii

NDICE GENERAL
3.1

Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

3.2

Vase tambin

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

3.3

Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

Optimizacin (cmputo)

11

Problema de la mochila

12

5.1

Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

5.2

Denicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

5.3

Simplicaciones y generalizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.3.1

Problema de la mochila simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.3.2

Problema de la mochila de mltiple eleccin . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.3.3

Problema de la mochila mltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.4

5.5
6

Mtodos de resolucin

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.4.1

Algoritmos voraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

5.4.2

Algoritmos genticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

Problema de la mochila simple

15

6.1

Denicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

6.2

Resolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

6.3

Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

6.3.1

Clave simtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

6.3.2

Clave asimtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

6.4

Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

6.5

Texto e imgenes de origen, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . . .

17

6.5.1

Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

6.5.2

Imgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

6.5.3

Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

Captulo 1

Teora de la complejidad computacional


La Teora de la Complejidad Computacional es una
rama de la teora de la computacin que se centra en la
clasicacin de los problemas computacionales de acuerdo a su dicultad inherente, y en la relacin entre dichas
clases de complejidad.

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 cuanticar 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 60s por Hartmanis and Stearns, y as, naci la teora
de la complejidad computacional.

Un problema se cataloga como inherentemente difcil


si su solucin requiere de una cantidad signicativa de recursos computacionales, sin importar el algoritmo utilizado. La teora de la complejidad computacional formaliza dicha aseveracin, introduciendo modelos de cmputo matemticos para el estudio de estos problemas y la En los inicios, los investigadores trataban de entender las
cuanticacin de la cantidad de recursos necesarios para nuevas medidas de complejidad, y cmo se relacionaban
resolverlos, como tiempo y memoria.
unas con otras. En 1965, Edmonds deni un buen alUno de los nes de la teora de la complejidad compu- goritmo como uno con un tiempo de ejecucin acotado
tacional es determinar los lmites prcticos de qu es por un polinomio, es decir, con un tiempo de ejecucin
lo que se puede hacer en una computadora y qu no. polinmico.[1] Esto condujo al surgimiento de uno de los
Otros campos relacionados con la teora de la compleji- conceptos ms importantes de la teora de la complejidad
dad computacional son el anlisis de algoritmos y la teora computacional: la NP-completitud y su pregunta fundade la computabilidad. Una diferencia signicativa entre mental, si P=NP.
el anlisis de algoritmos y la teora de la complejidad
El campo comenz a orecer cuando el investigador
computacional, es que el primero se dedica a determinar norteamericano Stephen Cook, trabajando de manela cantidad de recursos requeridos por un algoritmo en
ra independiente al investigador sovitico Leonid Leparticular para resolver un problema, mientras que la se- vin, probaron que existen problemas relevantes que son
gunda, analiza todos los posibles algoritmos que pudieran
NP-completos. En 1972, Richard Karp llev esta idea
ser usados para resolver el mismo problema.
un paso ms adelante, demostrando que 21 probleLa teora de la complejidad computacional trata de clasicar los problemas que pueden, o no pueden ser resueltos con una cantidad determinada de recursos. A su vez,
la imposicin de restricciones sobre estos recursos, es lo
que la distingue de la teora de la computabilidad, la cual
se preocupa por qu tipo de problemas pueden ser resueltos de manera algortmica.

mas combinatorios y de teora de grafos, caracterizados por ser computacionalmente intratables, eran NPcompletos.[2] Tambin en los 70s, 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 80s, se produjo un auge de los modelos nitos,


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 te1.1 Historia
nan sus limitaciones separando las clases de complejidad, esta aproximacin introdujo tcnicas combinatorias
Antes de que se realizaran investigaciones en torno a la
que permitieron un mejor entendimiento de los lmites
complejidad de los algoritmos, se crearon los cimientos
de estos modelos.
de esta teora por varios investigadores. Uno de los aportes ms inuyentes fue la denicin de las Mquinas de Ya en los 90s, se estudiaron nuevos modelos de cmputo
Turing en 1936, las cuales resultaron ser una nocin de como las computadoras cunticas, donde una misma tacomputadora muy exible y robusta. A medida que las rea puede tener diferente complejidad en la computacin
computadoras se desarrollaban en los 40s y los 50s, la clsica y en la computacin cuntica. Sin embargo, exis1

CAPTULO 1. TEORA DE LA COMPLEJIDAD COMPUTACIONAL

ten varias limitantes, entre ellas, la de desarrollar un hard- 1.2.3 Algoritmos


ware para este modelo, y que se requieren grandes cantidades de espacio para realizar los clculos.
Podemos decir informalmente, que los algoritmos son
procedimientos paso-a-paso para resolver problemas.
Se puede pensar en ellos como simples programas
1.2 Problemas, algoritmos y com- de computadora, escritos en un lenguaje articial
especco.[3]

plejidad

Se dice que un algoritmo resuelve un problema A, si dicho


algoritmo se puede aplicar a cualquier instancia I de A, y
Para poder referirnos a problemas como inherentemense garantiza que siempre produce una solucin para dicha
te intratables y problemas de dicultad equivalente, es
instancia. De manera general, nos interesa encontrar el alnecesario comprender algunos trminos ms bsicos.
goritmo ms eciente para resolver cierto problema. En
su sentido ms amplio, la nocin de eciencia involucra
a todos los recursos computacionales necesarios para la
1.2.1 Problema computacional
ejecucin de un algoritmo.
Un problema computacional constituye una pregunta a ser Por algoritmo ms eciente usualmente nos referimos al
respondida, teniendo generalmente varios parmetros, o ms rpido. Debido a que los requerimientos de tiempo
variables libres, cuyos valores no se han especicado. Un son usualmente un factor dominante cuando se trata de
problema se describe mediante:
determinar si un algoritmo es lo sucientemente eciente
para ser til en la prctica, nos concentraremos en este
1. Una descripcin general de todos sus parmetros recurso.
(pueden ser de entrada o de salida).
2. Una sentencia que describa las propiedades que la
respuesta, o la solucin, debe cumplir.
Una instancia de un problema se obtiene cuando se especican 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.

1.2.4 Algoritmos de tiempo polinmico y


problemas intratables
Los cientcos de la computacin realizan la distincin
entre algoritmos de Tiempo polinmico y algoritmos de
tiempo exponencial cuando se trata de caracterizar a los
algoritmos como sucientemente eciente y muy ineciente respectivamente.

Un algoritmo de tiempo polinomial se dene como aquel


con funcin de complejidad temporal en O(p(n)) para alguna funcin polinmica p, donde n denota el tamao de
la entrada. Cualquier algoritmo cuya funcin de comple1.2.2 Problemas de decisin
jidad temporal no pueda ser acotada de esta manera, se
Un problema de decisin es un tipo especial de problema denomina algoritmo de tiempo exponencial.
computacional cuya respuesta es solamente s" o no (o, La mayora de los algoritmos de tiempo exponencial son
de manera ms formal, 1 o 0).
simples variaciones de una bsqueda exhaustiva, mienUn problema de decisin pudiera verse como un lenguaje tras que los algoritmos de tiempo polinomial, usualmenformal, donde los elementos que pertenecen al lenguaje te se obtienen mediante un anlisis ms profundo de la
son las instancias del problema cuya respuesta es s", los estructura del problema. En la teora de la complejidad
que no pertenecen al lenguaje son aquellas instancias cuya computacional, existe el consenso de que un problema no
respuesta es no. El objetivo es decidir, con la ayuda de est bien resuelto hasta que se conozca un algoritmo de
un algoritmo, si una determinada entrada es un elemento tiempo polinomial que lo resuelva. Por tanto, nos refedel lenguaje formal considerado. Si el algoritmo devuelve riremos a un problema como intratable, si es tan difcil
como respuesta s", se dice que el algoritmo acepta la que no existe algoritmo de tiempo polinomial capaz de
resolverlo.[4]
entrada, de lo contrario se dice que la rechaza.
Los problemas de decisin constituyen uno de los principales objetos de estudio de la teora de la complejidad
computacional, pues la NP-completitud se aplica directa1.3 Clases de complejidad
mente a estos tipos de problemas en vez de a problemas
de optimizacin. Estos problemas tienen gran importancia porque casi todo problema puede transformarse en un Una clase de complejidad es un conjunto de problemas
que poseen la misma complejidad computacional.
problema de decisin.

1.4. LA PREGUNTA P=NP

1.3.1

Deniendo clases de complejidad

1.3.2

Mquinas de Turing deterministas y paradas. Dada una instancia del problema I, la primera
etapa simplemente adivina un candidato a solucin S.
la clase P

podido lograrse, es decir, no se conocen algoritmos que


los resuelvan en tiempo polinmico. Quizs estos probleLas clases de complejidad ms sencillas se denen te- mas tengan algoritmos en tiempo polinomial que se basan
niendo en cuenta factores como:
en principios por ahora desconocidos, o quizs estos problemas no pueden ser resueltos en tiempo polinmico,
El tipo de problema computacional: Los problemas debido a que son inherentemente difciles.
ms comnmente utilizados son los problemas de La clase de complejidad NP consta de los problemas vedecisin, pero las clases de complejidad se pueden ricables en tiempo polinmico. Por vericable se endenir para otros tipos de problemas.
tiende a un problema tal que dado un certicado de solucin (candidato a solucin), se puede vericar que di El modelo de cmputo: El modelo de cmputo ms
cho certicado es correcto en un tiempo polinmico en
comn es la Mquina de Turing determinista, pero
el tamao de la entrada. A los problemas en la clase NP
muchas clases de complejidad se basan en Mquiusualmente se les llama problemas NP.[6]
nas de Turing no deterministas, Mquinas de Turing
El trmino NP proviene de no determinista en tiempo pocunticas, etc.
linmico y se deriva de un caracterizacin alternativa de
El recurso (o recursos) que est(n) siendo acotado(s) esta clase, donde se utilizan Mquinas de Turing no dey la(s) cota(s): Estas dos propiedades usualmente se terministas. Informalmente, se puede denir la clase NP
utilizan juntas, por ejemplo, tiempo polinomial, en trminos de un algoritmo no determinista (recordar la
espacio logartmico, profundidad constante, etc. equivalencia entre algoritmo y Mquina de Turing).
El algoritmo mencionado est compuesto por 2 etapas se-

Entonces, la etapa de vericacin recibe como entrada a


I y a S, y procede a realizar el cmputo de una manera deLa clase P contiene a aquellos problemas que son soluterminista, nalmente detenindose con la respuesta s",
bles en tiempo polinmico por una mquina de Turing
o con la respuesta no, o sigue computando sin detenerdeterminista.[5]
se.
Para la denicin anterior se ha jado el modelo de
Al igual que la clase P, la clase NP es insensible a la eleccmputo: la Mquina de Turing determinista. Existen
cin del modelo de cmputo no determinista, debido a
distintas variantes de la Mquina de Turing y es conocique dichos modelos son equivalentes polinmicamente.
do 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 1.3.4 Clases de complejidad importantes
Mquina de Turing tambin poda simularlos a lo sumo
adicionando tambin un tiempo polinmico. Por tanto, la Muchas clases de complejidad importantes pueden ser
clase anloga a P para dichos modelos no es mayor que denidas acotando el tiempo o el espacio utilizado por
la clase P para el modelo de cmputo de la mquina de el algoritmo. Algunas de estas clases de problemas de decisin son:
Turing.
La clase P juega un papel importante en la teora de la
complejidad computacional debido a que:

1.4 La pregunta P=NP

1. P es invariante para todos los modelos de cmputo


que son polinmicamente equivalentes a la Mquina La relacin entre las clases P y NP es fundamental para
la teora de la NP-completitud. Intuitivamente, creemos
de Turing determinista.
que P es un subconjunto de NP. Y efectivamente, cada
2. A grandes rasgos, P corresponde a la clase de pro- problema de decisin resuelto por un algoritmo de tiemblemas que, de manera realista, son solubles en una po polinomial determinista, tambin puede ser resuelto
computadora.
por un algoritmo de tiempo polinomial no determinista.
Simplemente se necesita observar que cualquier algoritmo determinista puede ser utilizado en la etapa de ve1.3.3 Computacin no determinista y la ricacin de un algoritmo no determinista. Si B es un
problema de P, y A es un algoritmo de tiempo polinoclase NP
mial para B, entonces se puede construir un algoritmo de
Muchas veces podemos evitar utilizar la fuerza bruta en tiempo polinomial no determinista para B, simplemente
los problemas para obtener soluciones en tiempo polin- utilizando A en la etapa de vericacin e ignorando la etamico. Sin embargo, para algunos problemas esto no ha pa de adivinacin. Por tanto, si B pertenece a P, entonces

CAPTULO 1. TEORA DE LA COMPLEJIDAD COMPUTACIONAL

B tambin pertenece a NP.


La pregunta P=NP es una de las ms importantes en el
campo de las ciencias de la computacin, debido a las
grandes repercusiones que habran, en caso de encontrarse una solucin. Si P=NP, cualquier problema polinmicamente vericable fuera polinmicamente decidible. La
mayora de los investigadores creen que estas clases no
son iguales, porque se han realizado bastantes esfuerzos
para encontrar algoritmos de tiempo polinomial para varios problemas en NP, sin xito. Los investigadores tambin han tratado de probar que las clases son distintas,
pero eso conllevara a mostrar que no existe un algoritmo eciente para reemplazar a la bsqueda por fuerza
bruta.

1.5 NP-Completitud
1.5.1

Reduccin polinomial

Una reduccin es una transformacin de un problema en


otro problema. Intuitivamente, un problema Q puede ser
reducido a otro problema Q', si cualquier instancia del
problema Q puede ser fcilmente expresada como una
instancia del problema Q', y cuya solucin proporcione
una solucin para la instancia de Q.[7]

1.5.3 Importancia de la NP-Completitud


Quizs la razn de mayor peso por la cual los cientcos 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 NPcompletitud 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.

Existen muchos tipos de reducciones: basadas en el mtodo de reduccin, como las reducciones de Cook, las reducciones de Karp y las reducciones de Levin, y las basadas en la cota de la complejidad, como la reduccin en 1.6 Haciendo frente a problemas
tiempo polinomial o la reduccin de espacio logartmiNP
ca. Una de las reducciones ms utilizadas es la reduccin
en tiempo polinomial, lo cual signica que el proceso de
reduccin toma un tiempo polinomial.
Teniendo en cuenta la denicin de problema intratable,
si no se cumple que P=NP, entonces los problemas NPcompletos son intratables.

1.5.2

Problemas NP-completos

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 denir 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 signicara que P=NP.

Muchos problemas de la prctica son NP-completos, y


son muy importantes como para desistir simplemente
porque no sabemos cmo encontrar una solucin ptima en tiempo polinomial. An si un problema es NPcompleto, pueden haber esperanzas. Existen tres estrategias fundamentales para lidiar con un problema NPcompleto:
Si la entrada es pequea, un algoritmo con tiempo
de ejecucin exponencial pudiera ser perfectamente
aceptable.
Se pudieran aislar algunos casos especiales que se
pudieran resolver en tiempo polinomial.
Podramos utilizar aproximaciones para encontrar
soluciones lo sucientemente cercanas al ptimo en
tiempo polinomial. En la prctica, obtener soluciones cercanas al ptimo es bastante aceptable. A estos

1.8. REFERENCIAS

algoritmos se les denomina algoritmos de aproxima- 1.8.2 Libros de texto


cin, y en muchos casos se apoyan en heursticas y
Arora,
Sanjeev;
Barak,
Boaz
(2009),
metaheursticas.
Computational Complexity: A Modern Approach, Cambridge, ISBN 978-0-521-42426-4,
http://www.cs.princeton.edu/theory/complexity/
1.7 Vase tambin
Reduccin (complejidad)
Teorema de Cook-Levin
Lista de 21 problemas NP-completos de Karp
Clases de complejidad P y NP
Teorema de la jerarqua temporal
Computacin cuntica

1.8 Referencias
[1] Richard M. Karp, Combinatorics, Complexity, and Randomness, 1985 Turing Award Lecture.
[2] Richard M. Karp (1972), Reducibility Among Combinatorial Problems, en R. E. Miller and J. W. Thatcher (editors), Complexity of Computer Computations, New York:
Plenum, pp. 85103.
[3] Garey, Michael R., Johnson David S., (1979), Computers
and Intractability: A Guide to the Theory of NPCompleteness, W. H. Freeman, (page 4).
[4] Garey, Michael R., Johnson David S., (1979), Computers
and Intractability: A Guide to the Theory of NPCompleteness, W. H. Freeman, (page 8).
[5] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Cliord, (2010), Introduction to Algorithms, 3. edicin, MIT Press and McGraw-Hill, (page
1049).
[6] Garey, Michael R., Johnson David S., (1979), Computers
and Intractability: A Guide to the Theory of NPCompleteness, W. H. Freeman, (page 28).
[7] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Cliord, (2010), Introduction to Algorithms, 3. edicin, MIT Press and McGraw-Hill, (page
1067).

1.8.1

Artculos

Cook, Stephen (1983), An overview of computational complexity, Commun. ACM (ACM) 26


(6): 400408, ISSN 0001-0782
Fortnow, Lance; Homer, Steven (2002), A Short
History of Computational Complexity, Bulletin of
the EATCS 80: 95133, http://people.cs.uchicago.
edu/~{}fortnow/papers/history.pdf

Sipser, Michael (2006), Introduction to the Theory


of Computation (2da edicin), USA: Thomson
Course Technology, ISBN 0-534-95097-3
Garey, Michael R.; Johnson, David S., (1979),
Computers and Intractability: A Guide to the Theory
of NP-Completeness, W. H. Freeman, ISBN 0-71671045-5.
Cormen, Thomas H.; Leiserson, Charles E.; Rivest,
Ronald L. & Stein, Cliord (2010), Introduction
to Algorithms (3ra edicin), Cambridge, MA: MIT
Press and McGraw-Hill, ISBN 0-262-03384-4.

Captulo 2

NP-completo
En teora de la complejidad computacional, la clase
de complejidad NP-completo es el subconjunto de los
problemas de decisin en NP tal que todo problema en
NP se puede reducir en cada uno de los problemas de
NP-completo. Se puede decir que los problemas de NPcompleto son los problemas ms difciles de NP y muy
probablemente no formen parte de la clase de complejidad P. La razn es que de tenerse una solucin polinmica para un problema NP-completo, todos los problemas
de NP tendran tambin una solucin en tiempo polinmico. Si se demostrase que un problema NP-completo,
llammoslo A, no se pudiese resolver en tiempo polinmico, el resto de los problemas NP-completos tampoco
se podran resolver en tiempo polinmico. Esto se debe
a que si uno de los problemas NP-completos distintos de
A, digamos X, se pudiese resolver en tiempo polinmico,
entonces A se podra resolver en tiempo polinmico, por
denicin de NP-completo. Ahora, pueden existir problemas en NP y que no sean NP-completos para los cuales exista solucin polinmica, aun no existiendo solucin
para A.

Una transformacin polinmica de L en C es un algoritmo determinista que transforma instancias de l L en


instancias de c C, tales que la respuesta a c es positiva
si y slo si la respuesta a l lo es.
Como consecuencia de esta denicin, de tenerse un algoritmo en P para C, se tendra una solucin en P para
todos los problemas de NP.
Esta denicin fue propuesta por Stephen Cook en 1971.
Al principio pareca sorprendente que existieran problemas NP-completos, pero Cook demostr (teorema de
Cook) que el problema de satisfacibilidad booleana es
NP-completo. Desde entonces se ha demostrado que miles de otros problemas pertenecen a esta clase, casi siempre por reduccin a partir de otros problemas para los que
ya se haba demostrado su pertenencia a NP-completo;
muchos de esos problemas aparecen en el libro de Garey and Johnsons de 1979 Computers and Intractability:
A Guide to NP-completeness.

Un problema que satisface la segunda condicin pertenece a la clase NP-hard independientemente de que satisfaga
la primera.
Como ejemplo de un problema NP-completo encontramos el problema de la suma de subconjuntos que se puede enunciar como sigue: dado un conjunto S de enteros,
existe un subconjunto no vaco de S cuyos elementos 2.2 Historia
sumen cero? Es fcil vericar si una respuesta es correcta, pero no se conoce mejor solucin que explorar todos El concepto de NP-completo fue introducido por
los 2n 1 subconjuntos posibles hasta encontrar uno que Stephen Cook en un artculo titulado 'The complexity
cumpla con la condicin.
of theorem-proving procedures en las pginas 151-158
de Proceedings of the 3rd Annual ACM Symposium on
Theory of Computing en 1971, aunque el trmino NPcompleto como tal no aparece en el documento. En la
2.1 Denicin de NP-completo
conferencia de ciencias de la computacin hubo un intenso debate entre los cientcos de la computacin soUn problema de decisin C es NP-completo si:
bre si los problemas NP-completos podan ser resueltos
en tiempo polinmico o en una mquina de Turing deter1. C es un problema NP, y
minista. John Hopcroft llev a todos los asistentes de la
conferencia a consenso concluyendo que el estudio sobre
2. Todo problema de NP se puede transformar polin- si los problemas NP-completos son resolubles en tiempo
micamente en C.
polinmico debiera ser pospuesto ya que nadie haba conseguido probar formalmente sus hiptesis ni en un sentiSe puede demostrar que C es NP demostrando que un do ni en otro. Esto se conoce como el problema P=NP?.
candidato a solucin de C puede ser vericado en tiempo Nadie ha sido capaz an de dar una respuesta nal a este
polinmico.
problema, hacindolo uno de los grandes problemas no
6

2.4. SOLUCIONES APROXIMADAS


resueltos de la matemtica. El Clay Mathematics Institute
est ofreciendo una recompensa de un milln de dlares a
quien logre dar una demostracin de que P=NP o PNP.
El Teorema de Cook demuestra que el problema de satisfacibilidad booleana es un problema NP-completo. En
1972, Richard Karp demostr que otros problemas eran
tambin NP-completos (ver Lista de 21 problemas NPcompletos de Karp). A partir de los resultados originales del Teorema de Cook, cientos de problemas se han
descubierto que pertenecen tambin a NP-completo por
reducciones desde otros problemas que previamente se
haban demostrado NP-completos, muchos de estos problemas han sido recogidos en libro de 1979 de Garey and
Johnsons Computers and Intractability: A Guide to NPCompleteness.

2.3 Ejemplos

Circuit - SAT

SAT

3-CNF SAT
Clique Problem

Subset Problem

Vertex Cover Problem


Hamiltonian Cycle

Travelling Salesman

Un problema interesante en teora de grafos es el de Algunos problemas NP-completos, indicando las reducciones
isomorsmo de grafos: Dos grafos son isomorfos si se usadas tpicamente de completitud NP
puede transformar uno en el otro simplemente renombrando los vrtices. De los dos problemas siguientes:
completitud NP. En este diagrama, una echa de un problema a otro indica la direccin de la reduccin. Ntese
Isomorsmo de grafos: Es el grafo G1 isomorque este diagrama puede resultar engaoso al llevarnos a
fo al grafo G2 ?
pensar que muestra una descripcin de la relacin mateIsomorsmo de subgrafos: Es el grafo G1 isomtica entre esos problemas, ya que existe una relacin
morfo a un subgrafo del grafo G2 ?
de reduccin de tiempo polinmico entre dos problemas
NP-completos cualesquiera; pero esto indica que demosSe sospecha que el problema de isomorsmo de grafos trar estas reducciones de tiempo polinmicas ha sido ms
no est ni en P ni en NP-completo, aunque est en NP. fcil.
Se trata de un problema difcil, pero no tanto como para
A menudo hay solo una pequea diferencia entre un proestar en NP-completo.
blema P y uno NP-completo. Por ejemplo, el probleLa forma ms sencilla de demostrar que un nuevo pro- ma 3SAT, una restriccin del problema de satisfacibiliblema es NP-completo es primero demostrar que est en dad, sigue siendo NP-completo, mientras que el probleNP y luego transformar en tiempo polinmico un proble- ma 2SAT -ligeramente ms estricto- est en P (especma que ya est en NP-completo a ste. Para ello resulta camente, NL-completo), y el problema MAX 2SAT til conocer algunos de los problemas para los que exis- ligeramente ms general- es, de nuevo, NP-completo. Dete prueba de pertenencia a NP-completo. Algunos de los terminar si un grafo puede ser coloreado con 2 colores,
ms famosos son:
est en P, pero con tres colores es NP-completo, incluso cuando se restringe a los grafos planos. Determinar
Problema de satisfacibilidad booleana (SAT)
si un grafo es ciclo o es bipartito es muy fcil (en L,
pero encontrar un subgrafo mximo bipartito o ciclo es
Problema de la mochila (knapsack)
NP-completo. Una solucin del problema de la mochila
(knapsack)dentro de de cualquier porcentaje jo de la so Problema del ciclo hamiltoniano
lucin ptima puede ser computado en tiempo polinmi Problema del vendedor viajero
co, pero encontrar la solucin ptima es NP-completo.
Problema de la clique
Vase tambin:
Categora:Problemas NP-completos

2.4 Soluciones aproximadas

Actualmente, todos los algoritmos conocidos para problemas NP-completos utilizan tiempo exponencial con resA la derecha, un diagrama de algunos de los problemas pecto al tamao de la entrada. Se desconoce si hay algority sus reducciones tpicamente usadas para demostrar su mos ms rpidos, por lo cual, para resolver un problema

CAPTULO 2. NP-COMPLETO

NP-completo de tamao arbitrario, se utiliza uno de los que este tiene la restriccin de que el programa solamente
siguientes enfoques:
puede llamar una vez al subalgoritmo y el valor retornado
por este debe ser el valor de retorno del programa.
Aproximacin: Un algoritmo que rpidamente encuentra una solucin no necesariamente ptima, pero dentro de un cierto rango de error. En algunos casos, encontrar una buena aproximacin es suciente
para resolver el problema, pero no todos los problemas NP-completos tienen algoritmos de aproximacin.
Probabilstico: Un algoritmo probabilstico utiliza
aleatoriedad para obtener en promedio una buena
solucin al problema planteado con una pequea
probabilidad de fallar, para una distribucin de los
datos de entrada dada.
Restricciones: Restringiendo la estructura de las
entradas se pueden encontrar algoritmos ms rpidos.
Casos particulares: Puede ocurrir que se reconozcan casos particulares del problema para los cuales
existen soluciones rpidas.
Algoritmo gentico: Algoritmos que mejoran las
posibles soluciones hasta encontrar una que posiblemente est cerca del ptimo. Tampoco existe forma
de garantizar la calidad de la respuesta.
Heursticas: Un algoritmo que trabaja razonablemente bien en muchos casos. En general son rpidos, pero no existe medida de la calidad de la respuesta. Las aproximaciones metaheursticas suelen
ser empleadas.
Un ejemplo de algoritmo heurstico de complejidad O(n
log n) es el algoritmo voraz utilizado para la coloracin de
vrtices en algunos compiladores. Gracias a que la mayora de mquinas RISC tienen un gran nmero de registros
de propsito general, incluso una aproximacin heurstica es efectiva para esta aplicacin.

2.5 Completitud bajo diferentes tipos de reduccin


En la denicin de NP-completo dada anteriormente, el
trmino reduccin fue utilizado en el sentido transformar las instancias de un problema en instancias de otro
(reducciones many-one).
Otro tipo de reduccin consiste en la reduccin en tiempo polinmico de Turing. Un problema X es reducible
en tiempo polinmico de Turing Y si dada una funcin
que resuelve Y en tiempo polinmico, podra escribirse un programa que llamando a la subrutina anterior resuelva X en tiempo polinmico. Esto contrasta con el uso
del trmino reduccin del que hablbamos al principio ya

Si se denen el anlogo a NP-completo con reducciones


de Turing en lugar de reducciones many-one, el conjunto
de problemas resultante no sera menor de NP-completo,
de hecho se cuestiona si seran ms grandes. Si los dos
conceptos fuesen lo mismo, se seguira que NO = CoNP. Esto se mantiene porque por denicin las clases de
los problemas NP-completos y co-NP-completos bajo las
reducciones de Turing son las mismas gracias a que las
clases denidas con reducciones many-one son subclases
de estas mismas. Por lo tanto si ambas deniciones de
la NP-completitud son iguales hay un problema co-NPcompleto (bajo ambas deniciones) como por ejemplo el
complementario del problema de la satisfacibilidad booleana que es tambin NP-completo (bajo ambas deniciones). Esto implica que NP = co-NP como se muestra
como prueba en el artculo sobre co-NP. Aunque la cuestin de si NP = co-NP es una pregunta abierta se considera muy poco probable porque tambin es muy poco
probable que las dos deniciones de NP-completitud sean
equivalentes.
Otro tipo de reduccin es empleado frecuentemente para denir NP-completitud es la de reduccin de espacio
logartmico many-one que puede ser computerizada empleando nicamente una cantidad logartmica de espacio.
Ya que cada computacin que puede ser realizada en espacio logartmico tambin puede ser realizada en tiempo
polinomial se razona que si hay una reduccin de espacio logartmico many-one tambin hay una reduccin de
tiempo polinmico many-one. Este tipo de reduccin es
ms renada que la ms usual reduccin de tiempo polinmico many-one y permite distinguir ms clases como
la P-completa. Ya sea en virtud de estos tipos de reducciones los cambios en la denicin de NP-completo son
todava un problema abierto.

2.6 Vase tambin


P (clase de complejidad)
NP (clase de complejidad)
NP-complejo

2.7 Referencias
Garey, M. and D. Johnson, Computers and Intractability; A Guide to the Theory of NP-Completeness,
1979. ISBN 0-7167-1045-5 (Este es un libro clsico que desarrolla la teora y clasica muchos de los
problemas NP-completos)
S. A. Cook, The complexity of theorem proving
procedures, Proceedings, Third Annual ACM Sym-

2.7. REFERENCIAS
posium on the Theory of Computing, ACM, New
York, 1971, 151-158
Complejidad computacional de juegos y rompecabezas
Tetris es difcil, aun para aproximarlo
Buscaminas es NP-completo!
Lista de problemas NP-completo

Captulo 3

Problema de decisin
En teora de la computacin, un problema es un conjun Las frases que describen una mquina de Turing y
to de frases de longitud nita que tienen asociadas frases
una cinta de entrada para esta mquina tal que la
resultantes tambin de longitud nita. Un problema de
mquina se para en un tiempo nito al procesar esa
decisin es un problema en donde las respuestas posibles
entrada.
son s o no. Un ejemplo tpico de problema de decisin es la pregunta: Es un nmero entero dado primo? Los problemas de decisin son interesantes dado que toUna instancia de este problema sera: Es 17 primo?
dos los problemas formales (que incluye tanto lgicos coUn problema de decisin tambin se puede formalizar co- mo matemticos) pueden ser redactados para que tomen
mo el problema de decidir si una cierta frase pertenece a la forma de un problema de decisin. Las soluciones al
un conjunto dado de frases, tambin llamado lenguaje for- problema de decisin y al problema original se diferenmal. El conjunto contiene exactamente las frases para las cian a lo sumo por un factor lineal.
cuales la respuesta a la pregunta es positiva. La pregunta
anterior sobre los nmeros primos se puede ver tambin
como el lenguaje de todas las frases en el alfabeto {0, 3.2 Vase tambin
1,..., 9} tales que el entero correspondiente es primo.
Si existe un algoritmo que pueda decidir para cada posible frase de entrada si esa frase pertenece al lenguaje, entonces se dice que el problema es decidible, de otra forma
se dice que es un problema indecidible. Cuando existe un
algoritmo que puede responder positivamente cuando la
frase est en el lenguaje, pero que corre indenidamente cuando la frase no pertenece al lenguaje se dice que
el problema es parcialmente decidible. En Teora de la
computabilidad, se estudia qu lenguajes son decidibles
con diferentes tipos de mquinas. En teora de la complejidad computacional se estudia cuntos recursos necesita
un algoritmo decidible para ejecutar (recursos de tiempo,
espacio, nmero de procesadores, tipo de mquina, etc.).

Entscheidungsproblem

3.3 Referencias

3.1 Ejemplos
Esos son algunos ejemplos de problemas de decisin expresados como lenguajes:
Las frases sobre el alfabeto {a, b} que contienen alternadas las letras a y b.
Las frases sobre el alfabeto {a, b, c} que contienen
igual nmero de letras a y b.
Las frases que describen un grafo con aristas etiquetadas con nmeros naturales que indican su longitud,
dos vrtices del grafo y un camino en el grafo que es
el camino ms corto entre esos dos vrtices.
10

Weisstein, Eric W. (DecisionProblem) Denicin. En Weisstein, Eric W. MathWorld (en ingls).


Wolfram Research.

Captulo 4

Optimizacin (cmputo)
En cmputo, la optimizacin es el proceso de modicar un sistema para mejorar su eciencia y el uso de los
recursos disponibles (rendimiento).
La optimizacin se puede llevar a cabo bsicamente en
tres niveles diferentes:
optimizacin de hardware
optimizacin de redes
optimizacin de software

11

Captulo 5

Problema de la mochila
$4

12

kg

15 kg
$2

mao. Sin embargo, la estructura nica del problema, y el


hecho de que se presente como un subproblema de otros
problemas ms generales, lo convierten en un problema
frecuente en la investigacin.
$2

g
2k

5.2 Denicin

g
1k

$1

$10

g
1k

A continuacin se dene formalmente el problema.[3] Supongamos que tenemos n distintos tipos de tems, que
van del 1 al n. De cada tipo de tem se tienen qi tems
disponibles, donde qi es un entero positivo que cumple
1 qi .

g
4k

Cada tipo de tem i tiene un benecio asociado dado por


vi y un peso (o volumen) wi. Usualmente se asume que
el benecio y el peso no son negativos. Para simplicar
la representacin, se suele asumir que los tems estn listados en orden creciente segn el peso (o volumen).

Ejemplo del problema de la mochila: dada una mochila con una


capacidad de 15 kg que puedo llenar con cajas de distinto peso
y valor, qu cajas elijo de modo de maximizar mis ganancias y
no exceder los 15 kg de peso permitidos?

En algoritmia, el problema de la mochila, comnmente abreviado por KP (del ingls Knapsack problem) es
un problema de optimizacin combinatoria, es decir, que
busca la mejor solucin entre un conjunto de posibles soluciones a un problema. Modela una situacin anloga al
llenar una mochila, incapaz de soportar ms de un peso
determinado, con todo o parte de un conjunto de objetos,
cada uno con un peso y valor especcos. Los objetos colocados en la mochila deben maximizar el valor total sin
exceder el peso mximo.

Por otro lado se tiene una mochila, donde se pueden introducir los tems, que soporta un peso mximo (o volumen
mximo) W.
El problema consiste en meter en la mochila tems de tal
forma que se maximice el valor de los tems que contiene y siempre que no se supere el peso mximo que
puede soportar la misma. La solucin al problema vendr dado por la secuencia de variables x1 , x2 , ..., xn donde
el valor de xi indica cuantas copias se metern en la mochila del tipo de tem i.
El problema se puede expresar matemticamente por medio del siguiente programa lineal:

5.1 Historia

n
maximizar i=1 vi xi
n
que tal
i=1 wi xi W
y 1 qi .

El problema de la mochila es uno de los21 problemas NP-completos de Richard Karp, establecidos por el
informtico terico en un famoso artculo de 1972.[1] Ha
sido intensamente estudiado desde mediados del siglo XX Si q = 1 para i=1,2,...,n se dice que se trata del proi
y se hace referencia a l en el ao 1897, en un artculo de blema de la mochilla 0-1. Si uno o ms q es innito
i
George Mathews Ballard.[2]
entonces se dice que se trata del problema de la moSi bien la formulacin del problema es sencilla, su reso- chila no acotado tambin llamado a veces problema de
lucin es ms compleja. Algunos algoritmos existentes la mochila entera. En otro caso se dice que se trata del
pueden resolverlo en la prctica para casos de un gran ta- problema de la mochila acotado
12

5.4. MTODOS DE RESOLUCIN

13

5.3 Simplicaciones y generaliza- 5.4 Mtodos de resolucin


ciones
5.3.1

Problema de la mochila simple

Este problema se ha resuelto tradicionalmente mediante


programacin lineal entera.

El hecho de que se trate de programacin lineal hace reObservar que en un problema de la mochilla 0-1, si para ferencia a que la funcin a optimizar y las inecuaciones
cada tipo de tem el benecio y los pesos son idnticos que constituyen las restricciones han de ser lineales, es de(v=w), entonces el problema quedara formulado de la cir, han de ser funciones cuyas incgnitas estn elevadas
exclusivamente a la unidad.
siguiente forma
Existe otra forma de resolver este tipo de problema, a travs de los denominados algoritmos voraces. Una aproxin
maximizar i=1 wi xi
macin voraz consiste en que cada elemento a considerar
n
que tal
se evala una nica vez, siendo descartado o seleccionai=1 wi xi W
y xi {0, 1}.
do, de tal forma que si es seleccionado forma parte de
n
la solucin, y si es descartado, no forma parte de la soPor tanto si existe un vector x tal que i=1 wi xi = W
lucin ni volver a ser considerado para la misma. Con
, entonces esa ser una solucin al problema. Si existe
este mtodo no siempre es posible dar una solucin a un
una solucin x de este tipo, resolver el problema de la
problema.
mochila realmente es resolver el problema de la suma de
subconjuntos. Adems si el conjunto de los pesos de los Otro sistema para resolver el problema de la mochila es
elementos es una secuencia supercreciente, es decir, se mediante algoritmos genticos que son mtodos de optimizacin que tratan de hallar (xi,...,xn) tales que sea mverica que:
ximo.

wi >

i1

wj

5.4.1 Algoritmos voraces

j=1

a) Aplicacin del mtodo:


Entonces se dice que se trata de un problema de la mochila simple o tambin problema de la mochila tram- Partimos de la formulacin del problema de la mochila
posa. Este tipo de problemas tiene importantes aplicacio- aportada anteriormente:
nes en el mundo de la criptografa.
n
Maximizar
i=1 bi xi
a
sujeto
n
5.3.2 Problema de la mochila de mltiple
i=1 ci xi P
eleccin
xi {0, 1} con i = 1, . . . , n
Si en un problema de la mochila 0-1 los tems estn subdivididos en k clases, denotadas por N, y exactamente un
tem tienen que ser tomado de cada clase, entonces hablamos del problema de la mochila de mltiple eleccin.

La utilizacin de un algoritmo voraz consiste en introducir en la mochila segn orden decreciente de utilidad
(benecio) los diversos objetos. En una primera etapa,
se adicionarn unidades enteras hasta que, por motivo de
capacidad, no sea posible seguir introduciendo enteros y
haya que aadir la porcin que quepa del siguiente objeto.

k
maximizar
vij xij
b) Concepto de solucin ptima:
ki=1 jNi
que tal
wij xij W,
i=1
jN
i

Teorema: si se ordenan los objetos de forma de decrejNi xij = 1 todo para 1 i k


ciente en cuanto a su relacin (utilidad/ponderacin =
y xij {0, 1} todo para 1 i k y j Ni . bi/ci) y se introducen en la mochila enteros en este or-

5.3.3

Problema de la mochila mltiple

den mientras quepan y cuando no quede capacidad para


uno entero se aade la porcin que an tenga cabida el
resultado al que se llega es una solucin ptima.

Si en un problema de la mochila 0-1 tenemos n items y


m mochilas con capacidades Wi entonces tenemos el pro5.4.2
blema de la mochila mltiple
Un caso especial del problema de la mochila mltiple
es cuando los benecios son iguales a los pesos y todas las
mochilas tienen la misma capacidad. Entonces se le llama
problema de la mltiple suma de subconjuntos.

Algoritmos genticos

Consisten en mtodos adaptativos de optimizacin que


tratan de hallar (xi,...,xn) tales que [Sumatoria (bi*xi)
desde i= 1 hasta n] sea mximo. Pueden usarse para resolver problemas de bsqueda y optimizacin. Se basan en el

14

CAPTULO 5. PROBLEMA DE LA MOCHILA

proceso gentico de los organismos vivos, por imitacin


de este proceso, los Algoritmos Genticos son capaces
de ir creando soluciones para problemas del mundo real.
La evolucin de dichas soluciones hacia valores ptimos
del problema depende en buena medida de una adecuada codicacin de las mismas. Para utilizar un algoritmo
gentico hacen falta tres elementos:
Descripcin de la poblacin de individuos:
cada individuo representa una solucin factible a un problema dado. A cada individuo se le
asigna un valor puntuacin, relacionado con
la bondad de dicha solucin.
Funcin de evaluacin (llamada funcin de
ajuste): encontrar una expresin matemtica
que punte a cada individuo de forma que
nuestro ideal sea un mximo o un mnimo.
Seleccin o Mecanismos de reproduccin: la
funcin de seleccin de padres ms utilizada,
es la denominada funcin de seleccin proporcional a la funcin objetivo, en la cual cada individuo tiene una probabilidad de ser seleccionado como padre que es proporcional al valor
de su funcin objetivo, es decir, indica que cada objeto de la mochila tendr una probabilidad de ser seleccionado que depender de la
relacin que exista entre benecios y el peso
que ocupa.

5.5 Referencias
[1] Richard M. Karp (1972). Reducibility Among Combinatorial Problems. En R. E. Miller y J. W. Thatcher (editores). Complexity of Computer Computations. Nueva York:
Plenum. pp. 85103.
[2] G.B. Mathews, On the partition of numbers, Proceedings
of the London Mathematical Society, 28:486-490, 1897.
[3] Eric Gossett,"Discrete Mathematics with Proof. Segunda
edicin. John Willey 2009.

Captulo 6

Problema de la mochila simple


El problema de la mochila simple, tambin llamado
suma y por tanto en la posicin correspondienproblema de la mochila supercreciente, es un tipo de
te del vector solucin xi habr un 0. En caso
problema de la mochila (problema NP-completo) al que
contrario tendr un 1 y se continuar la resolule aplican una serie de condiciones que hacen que pueda
cin con los restantes elementos de la mochila
ser planteado como un problema de la suma de subconpara el problema T-S
juntos (problema NP-completo) que, si tiene solucin, esta ser nica.
Para este tipo de problemas, en el caso de que exista la
Este tipo de problemas tiene importantes aplicaciones en solucin, esta ser nica.
el mundo de la criptografa

6.3 Aplicaciones

6.1 Denicin

6.3.1 Clave simtrica


Dados:
Un conjunto de m nmeros enteros positivos S={S1 ,
S2 , ..., S }, ordenados de menor a mayor, donde la
secuencia de los elementos cumplen la condicin de
que el elemento i-simo es mayor que la suma de
los anteriores elementos (es una secuencia supercreciente). Matemticamente

wi >

i1

wj

Un problema de la mochila simple puede usarse como


clave secreta de una algoritmo de cifrado simtrico. Para
ello lo que hay que hacer es representar la informacin
que se quiera cifrar en binario y se pasa cada bit por la
mochila por la secuencia de nmeros del conjunto S. Si
un bit es 1 entonces se incluye en la suma el elemento que
le corresponde. Si es un 0 entonces no se incluye.
Por ejemplo sea S = {2, 4, 10, 19, 40}. Por tanto m = 5.
Supongamos que quiero cifrar el mensaje M = ADIOS.
Pasando el mensaje a ASCII/ANSI( A = 01000001, D =
01000100, I = 01001001, O = 01001111, S = 01010011)
tenemos el mensaje (agrupo de 5 en 5 ya que m=5)

j=1

Un valor T que es el resultado de alguna de las posibles sumas de esos elementos,

M = 01000 00101 00010 00100 10010 10011


11010 10011

Se debe encontrar S'={S, S , ..., S }, siendo S' el subcon- Haciendo las sumas de cada quinteto obtengo
junto de S cuya suma sea igual al valor T.
C = (4), (10+40), (19), (10), (2+19),
(2+19+40), (2+4+19), (2+19+40)= 4, 50, 19,
10, 21, 61, 25, 61
6.2 Resolucin
La solucin a este tipo de mochila es muy fcil debido a Que ser el mensaje cifrado.
que la secuencia S es una secuencia supercreciente:
Para descifrar es receptor, que conoce S, recibe el mensaje C y opera de forma contraria resolviendo el problema
de la mochila simple para cada uno de los valores de C.
Se recorren los elementos de la mochila de mayor a menor comprobando si dicho valor es menor que T. Si es mayor, ese valor no estar en la

Para obtener como suma un 4 la solucin es 01000


15

16

CAPTULO 6. PROBLEMA DE LA MOCHILA SIMPLE

50 -> 00101
19 -> 00010
10 -> 00100
21 -> 10010
61 -> 10011
25 -> 11010
61 -> 10011
Si uno todos los bits y agrupo en grupos de 8 bits (ANSI/ASCII) obtengo el mensaje original.
Esta forma de cifrar no es segura ya que es evidente
que teniendo un sucientes pares, de mensaje originale y
mensaje cifrado asociado, ser muy fcil obtener la clave S con la que se est cifrando. Sin embargo esta forma
de cifrar es muy rpida y puede ser aprovechada en las
aplicaciones de cifrado con clave asimtrica.

6.3.2

Clave asimtrica

La idea bsica para usar una mochila simple en un sistema


de criptografa asimtrica es conseguir una transformacin secreta que transforme la mochila simple en una mochila general cuya resolucin tenga un coste computacional alto. A esta mochila la llamaremos mochila tramposa. La clave pblica ser la mochila tramposa y con ella
el emisor cifrar el mensaje de la misma forma que se
haca antes. La clave privada estar formada por los parmetros que permiten convertir el mensaje cifrado con la
mochila tramposa en un mensaje cifrado con la mochila
simple. Una vez obtenido esto el receptor puede descifrar
el mensaje fcilmente usando la mochila simple.
En resumen, el esquema se basa en cifrar con una funcin
unidireccional basada en un problema NP-completo (el
problema de la mochila) que tienen una puerta trampa
que aprovecha el receptor para descifrar el mensaje. Si no
se dispone de esa puerta trampa, el proceso de descifrado,
al ser un problema NP-completo, tericamente tendra un
coste computacional muy alto.
En esta idea se basa por ejemplo El criptosistema de
Merkle-Hellman. Este algoritmo para hacer la transformcin halla:
n
Un valor u tal que
u >
i=1 Si donde
S1 , ..., Sn son los elementos de la mochila simple.
Un valor w entero tal que
mcd(u, w) =
1
(aseguramos la existencia de w1 en el
grupo de los enteros de mdulo u
La mochila tramposa se halla usando la expresin
Si = wSi (mod u) . Hay que vericar que la mochila

tramposa as obtenida no sea una mochila fcil de resolver (no siempre es as).
Para descifrar el criptograma hay que aplicar
w1 C (mod u) para cada una de las sumas C obtenidas al cifrar. A continuacin cada valor suma
transformado hay que descifrarlo de la forma habitual
con la mochila simple original, lo cual es trivial.

6.4 Bibliografa
Jorge Rami Aguirre,"Aplicaciones criptogrcas:
libro gua de la asignatura seguridad informtica.
Universidad Politcnica, Escuela Universitaria de
Informtica. Enero 1998.

6.5. TEXTO E IMGENES DE ORIGEN, COLABORADORES Y LICENCIAS

17

6.5 Texto e imgenes de origen, colaboradores y licencias


6.5.1

Texto

Teora de la complejidad computacional Fuente: https://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_complejidad_computacional?


oldid=81462101 Colaboradores: Moriel, Robbot, Surscrd, Ascnder, Sms, Tano4595, Barcex, Ivan.Romero, Zild, AlfonsoERomero, Cesarsorm, Focojoaco, Chlewbot, Fer31416, Jstitch, BOTpolicia, CEM-bot, -jem-, Alexav8, Nicolasdiaz, Davius, Clecio Diehl, Pablohe,
Bot que revierte, RoyFocker, JAnDbot, Maxidigital, TXiKiBoT, Bot-Schafter, Rei-bot, Uruk, AchedDamiman, AlnoktaBOT, Technopat,
Elabra sanchez, SieBot, PaintBot, Loveless, Macarrones, Macarse, Naki~eswiki, Gato ocioso, DragonBot, Farisori, Estirabot, Azevedo
bandeira, Alexbot, Juan Mayordomo, SilvonenBot, AVBOT, MastiBot, MarcoAurelio, LuqueII, SpBot, Argentumm, Nallimbot, Ptbotgourou, Martin78B, Xqbot, TobeBot, Halfdrag, RedBot, EmausBot, Grillitus, Ruben.mg, MerlIwBot, MetroBot, Allan Aguilar, JYBot,
V.mendiola, Addbot, Miguelcldn y Annimos: 51
NP-completo Fuente: https://es.wikipedia.org/wiki/NP-completo?oldid=83017201 Colaboradores: Sabbut, Pablo.cl, Lourdes Cardenal,
Riviera, Dodo, Ascnder, Sms, AlfonsoERomero, Rembiapo pohyiete (bot), Genba, RobotQuistnix, Chobot, BOT-Superzerocool, Cesarsorm, YurikBot, KnightRider, Tessier, CEM-bot, Chuo, Davius, Thijs!bot, RoyFocker, Botones, JAnDbot, TXiKiBoT, Kevinkuja,
Elopio, Rei-bot, Plux, AlnoktaBOT, Cinevoro, YonaBot, SieBot, PaintBot, Macarse, Gato ocioso, Farisori, Estirabot, LordT, Alexbot,
Ravave, AVBOT, Adelpine, Ginosbot, Diegusjaimes, CarsracBot, Adaumaholding, Macro.masek, Luckas-bot, MystBot, Nallimbot, ArthurBot, Jose.antonio.sa, SamuraiBot~eswiki, Rubpe19, Latacita, Addbot y Annimos: 19
Problema de decisin Fuente: https://es.wikipedia.org/wiki/Problema_de_decisi%C3%B3n?oldid=75013768 Colaboradores: Julie,
Cek~eswiki, Ascnder, Trylks, Guille.hoardings, Chobot, GermanX, Tomatejc, Marsa, Botones, Netito777, Muro Bot, PaintBot, Farisori,
Eduardosalg, Botito777, Lluvia, Mariana de El Mondongo, MerlIwBot, KLBot2, Acratta, Ineditable y Annimos: 5
Optimizacin (cmputo) Fuente: https://es.wikipedia.org/wiki/Optimizaci%C3%B3n_(c%C3%B3mputo)?oldid=81478548 Colaboradores: Cinabrium, Toxickore, Maleiva, Lobillo, Tab3r, Dhidalgo, Elabra sanchez, Muro Bot, PaintBot, Correogsk, Hoenheim, Waeswaes y
Legobot
Problema de la mochila Fuente: https://es.wikipedia.org/wiki/Problema_de_la_mochila?oldid=79640481 Colaboradores: Jynus, Airunp,
Chobot, GermanX, Fercufer, 333, Rosarinagazo, Dgilperez, Gsrdzl, AlleborgoBot, Muro Bot, SieBot, Loveless, BOTarate, Lauraamm,
OboeCrack, Farisori, Botito777, AVBOT, Madalberta, Amirobot, Nallimbot, ArthurBot, Xqbot, SassoBot, PatruBOT, Dinamik-bot, Nachosan, Miss Manzana, HaaRoa, Tuc negre, Grillitus, KLBot2, MetroBot y Annimos: 24
Problema de la mochila simple Fuente: https://es.wikipedia.org/wiki/Problema_de_la_mochila_simple?oldid=71190039 Colaboradores:
Fercufer y Turing92

6.5.2

Imgenes

Archivo:Commons-emblem-disambig-notice.svg
Fuente:
Commons-emblem-disambig-notice.svg Licencia: GPL Colaboradores:

https://upload.wikimedia.org/wikipedia/commons/5/58/

Commons-emblem-notice.svg Artista original: GNOME icon artists, Fitoschido


Archivo:Commons-emblem-question_book_yellow.svg
Fuente:
https://upload.wikimedia.org/wikipedia/commons/d/dd/
Commons-emblem-question_book_yellow.svg Licencia: CC BY-SA 3.0 Colaboradores: <a href='//commons.wikimedia.org/wiki/File:
Commons-emblem-query.svg' class='image'><img alt='Commons-emblem-query.svg' src='https://upload.wikimedia.org/wikipedia/
commons/thumb/c/c5/Commons-emblem-query.svg/25px-Commons-emblem-query.svg.png' width='25' height='25' srcset='https:
//upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Commons-emblem-query.svg/38px-Commons-emblem-query.svg.png 1.5x,
https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Commons-emblem-query.svg/50px-Commons-emblem-query.svg.png
2x' data-le-width='48' data-le-height='48' /></a> + <a href='//commons.wikimedia.org/wiki/File:Question_book.svg'
class='image'><img alt='Question book.svg' src='https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.
svg/25px-Question_book.svg.png' width='25' height='20' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/
Question_book.svg/38px-Question_book.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.
svg/50px-Question_book.svg.png 2x' data-le-width='252' data-le-height='199' /></a> Artista original: GNOME icon artists, Linfocito
B
Archivo:Knapsack.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/f/fd/Knapsack.svg Licencia: CC BY-SA 2.5 Colaboradores: ? Artista original: ?
Archivo:Relative_NPC_chart.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/8/89/Relative_NPC_chart.svg Licencia:
Public domain Colaboradores: Trabajo propio Artista original: Gian Luca RuggeroActam
Archivo:Spanish_Language_Wiki.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/2/2a/Spanish_Language_Wiki.svg
Licencia: CC BY-SA 3.0 Colaboradores: Derived from Wiki puzzle.svg by user:Kimbar Artista original: James.mcd.nz

6.5.3

Licencia de contenido

Creative Commons Attribution-Share Alike 3.0

Das könnte Ihnen auch gefallen