problema de suma de subconjuntos

20

Upload: yosolo

Post on 17-Aug-2015

223 views

Category:

Documents


2 download

DESCRIPTION

Suma de Subconjuntos,P,NP

TRANSCRIPT

ndice general1 Teora de la complejidad computacional 11.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Problemas, algoritmos y complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.1 Problema computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2 Problemas de decisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.3 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2.4 Algoritmos de tiempo polinmico y problemas intratables . . . . . . . . . . . . . . . . . . 21.3 Clases de complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.1 Deniendo clases de complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3.2 Mquinas de Turing deterministas y la clase P . . . . . . . . . . . . . . . . . . . . . . . . 31.3.3 Computacin no determinista y la clase NP . . . . . . . . . . . . . . . . . . . . . . . . . 31.3.4 Clases de complejidad importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 La pregunta P=NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 NP-Completitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5.1 Reduccin polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5.2 Problemas NP-completos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5.3 Importancia de la NP-Completitud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6 Haciendo frente a problemas NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.7 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.8 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.8.1 Artculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.8.2 Libros de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 NP-completo 62.1 Denicin de NP-completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Soluciones aproximadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5 Completitud bajo diferentes tipos de reduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.6 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Problema de decisin 10iii NDICE GENERAL3.1 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2 Vase tambin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Optimizacin (cmputo) 115 Problema de la mochila 125.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.2 Denicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.3 Simplicaciones y generalizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.3.1 Problema de la mochila simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.3.2 Problema de la mochila de mltiple eleccin . . . . . . . . . . . . . . . . . . . . . . . . . 135.3.3 Problema de la mochila mltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.4 Mtodos de resolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.4.1 Algoritmos voraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.4.2 Algoritmos genticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.5 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Problema de la mochila simple 156.1 Denicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.2 Resolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.3 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.3.1 Clave simtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.3.2 Clave asimtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.4 Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.5 Texto e imgenes de origen, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . . . 176.5.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.5.2 Imgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.5.3 Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Captulo 1Teora de la complejidad computacionalLaTeorade laComplejidad Computacional es unarama de la teora de la computacin que se centra en laclasicacin de los problemas computacionales de acuer-do a su dicultad inherente, y en la relacin entre dichasclases de complejidad.Un problema se cataloga como inherentemente difcilsi su solucin requiere de una cantidad signicativa de re-cursos computacionales, sin importar el algoritmo utiliza-do. La teora de la complejidad computacional formali-za dicha aseveracin, introduciendo modelos de cmpu-to matemticos para el estudio de estos problemas y lacuanticacin de la cantidad de recursos necesarios pararesolverlos, como tiempo y memoria.Uno de los nes de la teora de la complejidad compu-tacional es determinar los lmites prcticos de qu eslo que se puede hacer en una computadora y qu no.Otros campos relacionados con la teora de la compleji-dad computacional son el anlisis de algoritmos y la teorade la computabilidad. Una diferencia signicativa entreel anlisis de algoritmos y la teora de la complejidadcomputacional, es que el primero se dedica a determinarla cantidad de recursos requeridos por un algoritmo enparticular para resolver un problema, mientras que la se-gunda, analiza todos los posibles algoritmos que pudieranser usados para resolver el mismo problema.La teora de la complejidad computacional trata de cla-sicar los problemas que pueden, o no pueden ser resuel-tos con una cantidad determinada de recursos. A su vez,la imposicin de restricciones sobre estos recursos, es loque la distingue de la teora de la computabilidad, la cualse preocupa por qu tipo de problemas pueden ser resuel-tos de manera algortmica.1.1 HistoriaAntes de que se realizaran investigaciones en torno a lacomplejidad de los algoritmos, se crearon los cimientosde esta teora por varios investigadores. Uno de los apor-tes ms inuyentes fue la denicin de las Mquinas deTuring en 1936, las cuales resultaron ser una nocin decomputadora muy exible y robusta. A medida que lascomputadoras se desarrollaban en los 40s y los 50s, laMquina de Turing demostr ser el modelo terico co-rrecto de cmputo.Sin embargo, rpidamente se descubri que el modelobsico de la Mquina de Turing fallaba al cuanticar eltiempo y la memoria requerida por una computadora, unproblema crtico hoy en da, y an ms en aquellos tiem-pos. La idea de medir el tiempo y espacio como una fun-cin de la longitud de la entrada, se origin a principios delos 60s por Hartmanis and Stearns, y as, naci la teorade la complejidad computacional.En los inicios, los investigadores trataban de entender lasnuevas medidas de complejidad, y cmo se relacionabanunas con otras. En 1965, Edmonds deni un buen al-goritmo como uno con un tiempo de ejecucin acotadopor un polinomio, es decir, con un tiempo de ejecucinpolinmico.[1] Esto condujo al surgimiento de uno de losconceptos ms importantes de la teora de la complejidadcomputacional: la NP-completitud y su pregunta funda-mental, si P=NP.El campocomenzaorecer cuandoel investigadornorteamericano Stephen Cook, trabajando de mane-raindependienteal investigadorsoviticoLeonidLe-vin, probaron que existen problemas relevantes que sonNP-completos. En 1972, Richard Karp llev esta ideaunpasoms adelante, demostrandoque 21proble-mas combinatorios y de teora de grafos,caracteriza-dos por ser computacionalmente intratables, eran NP-completos.[2] Tambin en los 70s, se produjo un creci-miento de las clases de complejidad a medida que los in-vestigadores trataban de comprender los distintos mode-los de cmputo existentes.En los 80s, se produjo un auge de los modelos nitos,que analizaban el proceso de cmputo de una manera in-herentemente distinta. Surgi un nuevo acercamiento aproblemas como P=NP, y an cuando estos modelos te-nan sus limitaciones separando las clases de compleji-dad, esta aproximacin introdujo tcnicas combinatoriasque permitieron un mejor entendimiento de los lmitesde estos modelos.Ya en los 90s, se estudiaron nuevos modelos de cmputocomo las computadoras cunticas, donde una misma ta-rea puede tener diferente complejidad en la computacinclsica y en la computacin cuntica. Sin embargo, exis-12 CAPTULO 1. TEORA DE LA COMPLEJIDAD COMPUTACIONALten varias limitantes, entre ellas, la de desarrollar un hard-ware para este modelo, y que se requieren grandes canti-dades de espacio para realizar los clculos.1.2 Problemas, algoritmosycom-plejidadPara poder referirnos a problemas como inherentemen-te intratables y problemas de dicultad equivalente, esnecesario comprender algunos trminos ms bsicos.1.2.1 Problema computacionalUn problema computacional constituye una pregunta a serrespondida, teniendo generalmente varios parmetros, ovariables libres, cuyos valores no se han especicado. Unproblema se describe mediante:1. Una descripcin general de todos sus parmetros(pueden ser de entrada o de salida).2. Una sentencia que describa las propiedades que larespuesta, o la solucin, debe cumplir.Una instancia de un problema se obtiene cuando se es-pecican valores particulares para todos los parmetrosdel problema. Por ejemplo, consideremos el problema deltest de primalidad. La instancia es un nmero (e.g. 15) yla solucin es s" si el nmero es primo, y no en casocontrario. Visto de otra manera, la instancia es una en-trada particular del problema, y la solucin es la salidacorrespondiente para la entrada dada.1.2.2 Problemas de decisinUn problema de decisin es un tipo especial de problemacomputacional cuya respuesta es solamente s" o no (o,de manera ms formal, 1 o 0).Un problema de decisin pudiera verse como un lenguajeformal, donde los elementos que pertenecen al lenguajeson las instancias del problema cuya respuesta es s", losque no pertenecen al lenguaje son aquellas instancias cuyarespuesta es no. El objetivo es decidir, con la ayuda deun algoritmo, si una determinada entrada es un elementodel lenguaje formal considerado. Si el algoritmo devuelvecomo respuesta s", se dice que el algoritmo acepta laentrada, de lo contrario se dice que la rechaza.Los problemas de decisin constituyen uno de los prin-cipales objetos de estudio de la teora de la complejidadcomputacional, pues la NP-completitud se aplica directa-mente a estos tipos de problemas en vez de a problemasde optimizacin. Estos problemas tienen gran importan-cia porque casi todo problema puede transformarse en unproblema de decisin.1.2.3 AlgoritmosPodemos decir informalmente, que los algoritmos sonprocedimientos paso-a-pasopara resolver problemas.Se puede pensar en ellos como simples programasde computadora, escritos en un lenguaje articialespecco.[3]Se dice que un algoritmo resuelve un problema A, si dichoalgoritmo se puede aplicar a cualquier instancia I de A, yse garantiza que siempre produce una solucin para dichainstancia. De manera general, nos interesa encontrar el al-goritmo ms eciente para resolver cierto problema. Ensu sentido ms amplio, la nocin de eciencia involucraa todos los recursos computacionales necesarios para laejecucin de un algoritmo.Por algoritmo ms eciente usualmente nos referimos alms rpido. Debido a que los requerimientos de tiemposon usualmente un factor dominante cuando se trata dedeterminar si un algoritmo es lo sucientemente ecientepara ser til en la prctica, nos concentraremos en esterecurso.1.2.4 Algoritmosdetiempopolinmicoyproblemas intratablesLos cientcos de la computacin realizan la distincinentre algoritmos de Tiempo polinmico y algoritmos detiempo exponencial cuando se trata de caracterizar a losalgoritmos como sucientemente eciente y muy in-eciente respectivamente.Un algoritmo de tiempo polinomial se dene como aquelcon funcin de complejidad temporal en O(p(n)) para al-guna funcin polinmica p, donde n denota el tamao dela entrada. Cualquier algoritmo cuya funcin de comple-jidad temporal no pueda ser acotada de esta manera, sedenomina algoritmo de tiempo exponencial.La mayora de los algoritmos de tiempo exponencial sonsimples variaciones de una bsqueda exhaustiva, mien-tras que los algoritmos de tiempo polinomial, usualmen-te se obtienen mediante un anlisis ms profundo de laestructura del problema. En la teora de la complejidadcomputacional, existe el consenso de que un problema noest bien resuelto hasta que se conozca un algoritmo detiempo polinomial que lo resuelva. Por tanto, nos refe-riremos a un problema como intratable, si es tan difcilque no existe algoritmo de tiempo polinomial capaz deresolverlo.[4]1.3 Clases de complejidadUna clase de complejidad es un conjunto de problemasque poseen la misma complejidad computacional.1.4. LA PREGUNTA P=NP 31.3.1 Deniendo clases de complejidadLas clases de complejidad ms sencillas se denen te-niendo en cuenta factores como:El tipo de problema computacional: Los problemasms comnmente utilizados son los problemas dedecisin, pero las clases de complejidad se puedendenir para otros tipos de problemas.El modelo de cmputo: El modelo de cmputo mscomn es la Mquina de Turing determinista, peromuchas clases de complejidad se basan en Mqui-nas de Turing no deterministas, Mquinas de Turingcunticas, etc.El recurso (o recursos) que est(n) siendo acotado(s)y la(s) cota(s): Estas dos propiedades usualmente seutilizan juntas, por ejemplo, tiempo polinomial,espacio logartmico, profundidad constante, etc.1.3.2 Mquinas de Turing deterministas yla clase PLa clase P contiene a aquellos problemas que son solu-bles en tiempo polinmico por una mquina de Turingdeterminista.[5]Paraladenicinanteriorsehajadoel modelodecmputo:la Mquina de Turing determinista.Existendistintas variantes de la Mquina de Turing y es conoci-do que la ms dbil de ellas puede simular a la ms fuer-te, adicionando a lo sumo un tiempo polinmico. En lasdcadas posteriores a la Tesis de Church-Turing surgie-ron otros modelos de cmputo, y se pudo mostrar que laMquina de Turing tambin poda simularlos a lo sumoadicionando tambin un tiempo polinmico. Por tanto, laclase anloga a P para dichos modelos no es mayor quela clase P para el modelo de cmputo de la mquina deTuring.La clase P juega un papel importante en la teora de lacomplejidad computacional debido a que:1. P es invariante para todos los modelos de cmputoque son polinmicamente equivalentes a la Mquinade Turing determinista.2. A grandes rasgos, P corresponde a la clase de pro-blemas que, de manera realista, son solubles en unacomputadora.1.3.3 Computacinno determinista y laclase NPMuchas veces podemos evitar utilizar la fuerza bruta enlos problemas para obtener soluciones en tiempo polin-mico. Sin embargo, para algunos problemas esto no hapodido lograrse, es decir, no se conocen algoritmos quelos resuelvan en tiempo polinmico. Quizs estos proble-mas tengan algoritmos en tiempo polinomial que se basanen principios por ahora desconocidos, o quizs estos pro-blemasno pueden ser resueltos en tiempo polinmico,debido a que son inherentemente difciles.La clase de complejidad NP consta de los problemas ve-ricables en tiempo polinmico. Por vericable se en-tiende a un problema tal que dado un certicado de so-lucin (candidato a solucin), se puede vericar que di-cho certicado es correcto en un tiempo polinmico enel tamao de la entrada. A los problemas en la clase NPusualmente se les llama problemas NP.[6]El trmino NP proviene de no determinista en tiempo po-linmico y se deriva de un caracterizacin alternativa deesta clase, donde se utilizan Mquinas de Turing no de-terministas. Informalmente, se puede denir la clase NPen trminos de un algoritmo no determinista (recordar laequivalencia entre algoritmo y Mquina de Turing).El algoritmo mencionado est compuesto por 2 etapas se-paradas. Dada una instancia del problema I, la primeraetapa simplemente adivina un candidato a solucin S.Entonces, la etapa de vericacin recibe como entrada aI y a S, y procede a realizar el cmputo de una manera de-terminista, nalmente detenindose con la respuesta s",o con la respuesta no, o sigue computando sin detener-se.Al igual que la clase P, la clase NP es insensible a la elec-cin del modelo de cmputo no determinista, debido aque dichos modelos son equivalentes polinmicamente.1.3.4 Clases de complejidad importantesMuchas clases de complejidad importantes pueden serdenidas acotando el tiempo o el espacio utilizado porel algoritmo. Algunas de estas clases de problemas de de-cisin son:1.4 La pregunta P=NPLa relacin entre las clases P y NP es fundamental parala teora de la NP-completitud. Intuitivamente, creemosque P es un subconjunto de NP. Y efectivamente, cadaproblema de decisin resuelto por un algoritmo de tiem-po polinomial determinista, tambin puede ser resueltopor un algoritmo de tiempo polinomial no determinista.Simplemente se necesita observar que cualquier algorit-mo determinista puede ser utilizado en la etapa de ve-ricacin de un algoritmo no determinista. Si B es unproblema de P, y A es un algoritmo de tiempo polino-mial para B, entonces se puede construir un algoritmo detiempo polinomial no determinista para B, simplementeutilizando Aen la etapa de vericacin e ignorando la eta-pa de adivinacin. Por tanto, si B pertenece a P, entonces4 CAPTULO 1. TEORA DE LA COMPLEJIDAD COMPUTACIONALB tambin pertenece a NP.La pregunta P=NP es una de las ms importantes en elcampo de las ciencias de la computacin, debido a lasgrandes repercusiones que habran, en caso de encontrar-se una solucin. Si P=NP, cualquier problema polinmi-camente vericable fuera polinmicamente decidible. Lamayora de los investigadores creen que estas clases noson iguales, porque se han realizado bastantes esfuerzospara encontrar algoritmos de tiempo polinomial para va-rios problemas en NP, sin xito. Los investigadores tam-bin han tratado de probar que las clases son distintas,pero eso conllevara a mostrar que no existe un algorit-mo eciente para reemplazar a la bsqueda por fuerzabruta.1.5 NP-Completitud1.5.1 Reduccin polinomialUna reduccin es una transformacin de un problema enotro problema. Intuitivamente, un problema Q puede serreducido a otro problema Q', si cualquier instancia delproblema Q puede ser fcilmente expresada como unainstancia del problema Q', y cuya solucin proporcioneuna solucin para la instancia de Q.[7]Existen muchos tipos de reducciones: basadas en el m-todo de reduccin, como las reducciones de Cook, las re-ducciones de Karp y las reducciones de Levin, y las ba-sadas en la cota de la complejidad, como la reduccin entiempo polinomial o la reduccin de espacio logartmi-ca. Una de las reducciones ms utilizadas es la reduccinen tiempo polinomial, lo cual signica que el proceso dereduccin toma un tiempo polinomial.1.5.2 Problemas NP-completosLas reducciones en tiempo polinomial nos dotan de ele-mentos para probar, de una manera formal, que un pro-blema es al menos tan difcil que otro, con una diferenciade un factor polinomial. Estas son esenciales para de-nir a los problemas NP-completos, adems de ayudar acomprender los mismos.La clase de los problemas NP-completos contiene a losproblemas ms difciles en NP, en el sentido de que sonlos que estn ms lejos de estar en P. Debido a que el pro-blema P=NP no ha sido resuelto, el hecho de reducir unproblema B, a otro problema A, indicara que no se cono-ce solucin en tiempo polinomial para A. Esto es debidoa que una solucin en tiempo polinomial para A, tendracomo consecuencia la existencia de una solucin polino-mial para B. De manera similar, debido a que todos losproblemas NP pueden ser reducidos a este conjunto, en-contrar un problema NP-completo que pueda ser resueltoen un tiempo polinomial signicara que P=NP.1.5.3 Importancia de la NP-CompletitudQuizs la razn de mayor peso por la cual los cient-cos de la computacin creen que P es distinto de NP, esla existencia de la clase de problemas NP-completos.Esta clase tiene la curiosa propiedad de que si algn pro-blema NP-completo puede ser resuelto en tiempo polino-mial, entonces todo problema en NP tiene una solucinen tiempo polinomial, es decir, P=NP. A pesar de aosde estudio, ningn algoritmo de tiempo polinomial se hadescubierto para ningn problema NP-completo.Desde el punto de vista terico, un investigador inten-tando mostrar que la clase P es distinta de la clase NP,pudiera enfocarse en un problema NP-completo. Si al-gn problema en NP requiere ms que un tiempo polino-mial, entonces uno NP-completo tambin. Adems, uninvestigador intentando demostrar que P=NP, solo nece-sita encontrar un algoritmo de tiempo polinomial para unproblema NP-completo para lograrlo.Desde el punto de vista prctico, el fenmeno de la NP-completitud puede prevenir la prdida de tiempo cuandose busca un algoritmo de tiempo polinomial no existentepara resolver un problema determinado. An cuando nose posean los elementos matemticos para demostrar quecierto problema no se puede resolver en tiempo polino-mial, creemos que P no es igual a NP, as que demostrarque el problema es NP-completo, es una fuerte evidenciade su no polinomialidad.1.6 Haciendo frente a problemasNPTeniendo en cuenta la denicin de problema intratable,si no se cumple que P=NP, entonces los problemas NP-completos son intratables.Muchos problemas de la prctica son NP-completos, yson muy importantes como para desistir simplementeporque no sabemos cmo encontrar una solucin pti-ma en tiempo polinomial. An si un problema es NP-completo, pueden haber esperanzas. Existen tres estra-tegias fundamentales para lidiar con un problema NP-completo:Si la entrada es pequea, un algoritmo con tiempode ejecucin exponencial pudiera ser perfectamenteaceptable.Se pudieran aislar algunos casos especiales que sepudieran resolver en tiempo polinomial.Podramos utilizar aproximaciones para encontrarsoluciones lo sucientemente cercanas al ptimo entiempo polinomial. En la prctica, obtener solucio-nes cercanas al ptimo es bastante aceptable. Aestos1.8. REFERENCIAS 5algoritmos se les denomina algoritmos de aproxima-cin, y en muchos casos se apoyan en heursticas ymetaheursticas.1.7 Vase tambinReduccin (complejidad)Teorema de Cook-LevinLista de 21 problemas NP-completos de KarpClases de complejidad P y NPTeorema de la jerarqua temporalComputacin cuntica1.8 Referencias[1] Richard M. Karp, Combinatorics, Complexity, and Ran-domness, 1985 Turing Award Lecture.[2] Richard M. Karp (1972), Reducibility Among Combina-torial Problems, en R. E. Miller and J. W. Thatcher (edi-tors), Complexity of Computer Computations, New York:Plenum, pp. 85103.[3] Garey, Michael R., Johnson David S., (1979), Computersand Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 4).[4] Garey, Michael R., Johnson David S., (1979), Computersand Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 8).[5] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ro-nald L. & Stein, Cliord, (2010), IntroductiontoAlgo-rithms, 3. edicin, MIT Press and McGraw-Hill, (page1049).[6] Garey, Michael R., Johnson David S., (1979), Computersand Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, (page 28).[7] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ro-nald L. & Stein, Cliord, (2010), IntroductiontoAlgo-rithms, 3. edicin, MIT Press and McGraw-Hill, (page1067).1.8.1 ArtculosCook, Stephen (1983), An overview of compu-tational complexity, Commun. ACM(ACM) 26(6): 400408, ISSN 0001-0782Fortnow, Lance; Homer, Steven (2002), A ShortHistory of Computational Complexity, Bulletin oftheEATCS80: 95133, http://people.cs.uchicago.edu/~{}fortnow/papers/history.pdf1.8.2 Libros de textoArora, Sanjeev; Barak, Boaz (2009),Computational Complexity: A Modern Ap-proach, Cambridge, ISBN 978-0-521-42426-4,http://www.cs.princeton.edu/theory/complexity/Sipser, Michael (2006), Introduction to the Theoryof Computation (2da edicin), USA: ThomsonCourse Technology, ISBN 0-534-95097-3Garey, Michael R.; Johnson, DavidS., (1979),Computers and Intractability: A Guide to the Theoryof NP-Completeness, W. H. Freeman, ISBN0-7167-1045-5.Cormen, Thomas H.; Leiserson, Charles E.; Rivest,Ronald L. & Stein, Cliord (2010), Introductionto Algorithms (3ra edicin), Cambridge, MA: MITPress and McGraw-Hill, ISBN 0-262-03384-4.Captulo 2NP-completoEnteoradelacomplejidadcomputacional, laclasede complejidadNP-completo es el subconjunto de losproblemas de decisin en NP tal que todo problema enNP se puede reducir en cada uno de los problemas deNP-completo. Se puede decir que los problemas de NP-completo son los problemas ms difciles de NP y muyprobablemente no formen parte de la clase de compleji-dad P. La razn es que de tenerse una solucin polinmi-ca para un problema NP-completo, todos los problemasde NP tendran tambin una solucin en tiempo polin-mico. Si se demostrase que un problema NP-completo,llammoslo A, no se pudiese resolver en tiempo polin-mico, el resto de los problemas NP-completos tampocose podran resolver en tiempo polinmico. Esto se debea que si uno de los problemas NP-completos distintos deA, digamos X, se pudiese resolver en tiempo polinmico,entonces A se podra resolver en tiempo polinmico, pordenicin de NP-completo. Ahora, pueden existir pro-blemas en NP y que no sean NP-completos para los cua-les exista solucin polinmica, aun no existiendo solucinpara A.Como ejemplo de un problema NP-completo encontra-mos el problema de la suma de subconjuntos que se pue-de enunciar como sigue: dado un conjunto S de enteros,existe un subconjunto no vaco deS cuyos elementossumen cero? Es fcil vericar si una respuesta es correc-ta, pero no se conoce mejor solucin que explorar todoslos 2n1 subconjuntos posibles hasta encontrar uno quecumpla con la condicin.2.1 Denicin de NP-completoUn problema de decisin C es NP-completo si:1. C es un problema NP, y2. Todo problema de NP se puede transformar polin-micamente en C.Se puede demostrar que C es NP demostrando que uncandidato a solucin de C puede ser vericado en tiempopolinmico.Una transformacin polinmica de L en C es un algorit-mo determinista que transforma instancias de l L eninstancias de c C, tales que la respuesta a c es positivasi y slo si la respuesta a l lo es.Como consecuencia de esta denicin, de tenerse un al-goritmo en P para C, se tendra una solucin en P paratodos los problemas de NP.Esta denicin fue propuesta por Stephen Cook en 1971.Al principio pareca sorprendente que existieran proble-mas NP-completos,pero Cook demostr (teorema deCook) que el problema de satisfacibilidad booleana esNP-completo. Desde entonces se ha demostrado que mi-les de otros problemas pertenecen a esta clase, casi siem-pre por reduccin a partir de otros problemas para los queya se haba demostrado su pertenencia a NP-completo;muchos de esos problemas aparecen en el libro de Ga-rey and Johnsons de 1979 Computers and Intractability:A Guide to NP-completeness.Un problema que satisface la segunda condicin pertene-ce a la clase NP-hard independientemente de que satisfa-ga la primera.2.2 HistoriaEl concepto de NP-completo fue introducido porStephen Cook en un artculo titulado 'The complexityof theorem-proving procedures en las pginas 151-158de Proceedings of the 3rd Annual ACM Symposium onTheory of Computing en 1971, aunque el trmino NP-completo como tal no aparece en el documento. En laconferencia de ciencias de la computacin hubo un in-tenso debate entre los cientcos de la computacin so-bre si los problemas NP-completos podan ser resueltosen tiempo polinmico o en una mquina de Turing deter-minista. John Hopcroft llev a todos los asistentes de laconferencia a consenso concluyendo que el estudio sobresi los problemas NP-completos son resolubles en tiempopolinmico debiera ser pospuesto ya que nadie haba con-seguido probar formalmente sus hiptesis ni en un senti-do ni en otro. Esto se conoce como el problema P=NP?.Nadie ha sido capaz an de dar una respuesta nal a esteproblema, hacindolo uno de los grandes problemas no62.4. SOLUCIONES APROXIMADAS 7resueltos de la matemtica. El Clay Mathematics Instituteest ofreciendo una recompensa de un milln de dlares aquien logre dar una demostracin de que P=NP o PNP.El Teorema de Cook demuestra que el problema de sa-tisfacibilidad booleana es un problema NP-completo. En1972, Richard Karp demostr que otros problemas erantambin NP-completos (ver Lista de 21 problemas NP-completos de Karp). A partir de los resultados origina-les del Teorema de Cook, cientos de problemas se handescubierto que pertenecen tambin a NP-completo porreducciones desde otros problemas que previamente sehaban demostrado NP-completos, muchos de estos pro-blemas han sido recogidos en libro de 1979 de Garey andJohnsons Computers and Intractability: A Guide to NP-Completeness.2.3 EjemplosUn problema interesante en teora de grafos es eldeisomorsmo de grafos: Dos grafos son isomorfos si sepuede transformar uno en el otro simplemente renom-brando los vrtices. De los dos problemas siguientes:Isomorsmo de grafos: Es el grafo G1 isomor-fo al grafo G2?Isomorsmo de subgrafos: Es el grafo G1 iso-morfo a un subgrafo del grafo G2?Se sospecha que el problema de isomorsmo de grafosno est ni en P ni en NP-completo, aunque est en NP.Se trata de un problema difcil, pero no tanto como paraestar en NP-completo.La forma ms sencilla de demostrar que un nuevo pro-blema es NP-completo es primero demostrar que est enNP y luego transformar en tiempo polinmico un proble-ma que ya est en NP-completo a ste. Para ello resultatil conocer algunos de los problemas para los que exis-te prueba de pertenencia a NP-completo. Algunos de losms famosos son:Problema de satisfacibilidad booleana (SAT)Problema de la mochila (knapsack)Problema del ciclo hamiltonianoProblema del vendedor viajeroProblema de la cliqueVase tambin:Categora:Problemas NP-completosA la derecha, un diagrama de algunos de los problemasy sus reducciones tpicamente usadas para demostrar suCircuit - SAT3-CNF SATHamiltonian CycleTravelling SalesmanVertex Cover ProblemSubset Problem Clique ProblemSATAlgunos problemas NP-completos, indicandolas reduccionesusadas tpicamente de completitud NPcompletitud NP. En este diagrama, una echa de un pro-blema a otro indica la direccin de la reduccin. Nteseque este diagrama puede resultar engaoso al llevarnos apensar que muestra una descripcin de la relacin mate-mtica entre esos problemas, ya que existe una relacinde reduccin de tiempo polinmico entre dos problemasNP-completos cualesquiera; pero esto indica que demos-trar estas reducciones de tiempo polinmicas ha sido msfcil.A menudo hay solo una pequea diferencia entre un pro-blema P y uno NP-completo. Por ejemplo, el proble-ma 3SAT, una restriccin del problema de satisfacibili-dad, sigue siendo NP-completo, mientras que el proble-ma 2SAT -ligeramente ms estricto- est en P (espec-camente, NL-completo), y el problema MAX 2SAT -ligeramente ms general- es, de nuevo, NP-completo. De-terminar si un grafo puede ser coloreado con 2 colores,est en P, pero con tres colores es NP-completo, inclu-so cuando se restringe a los grafos planos. Determinarsi un grafo es ciclo o es bipartito es muy fcil (en L,pero encontrar un subgrafo mximo bipartito o ciclo esNP-completo. Una solucin del problema de la mochila(knapsack)dentro de de cualquier porcentaje jo de la so-lucin ptima puede ser computado en tiempo polinmi-co, pero encontrar la solucin ptima es NP-completo.2.4 Soluciones aproximadasActualmente, todos los algoritmos conocidos para proble-mas NP-completos utilizan tiempo exponencial con res-pecto al tamao de la entrada. Se desconoce si hay algorit-mos ms rpidos, por lo cual, para resolver un problema8 CAPTULO 2. NP-COMPLETONP-completo de tamao arbitrario, se utiliza uno de lossiguientes enfoques:Aproximacin: Un algoritmo que rpidamente en-cuentra una solucin no necesariamente ptima, pe-ro dentro de un cierto rango de error. En algunos ca-sos, encontrar una buena aproximacin es sucientepara resolver el problema, pero no todos los proble-mas NP-completos tienen algoritmos de aproxima-cin.Probabilstico: Un algoritmo probabilstico utilizaaleatoriedad para obtener en promedio una buenasolucin al problema planteado con una pequeaprobabilidad de fallar, para una distribucin de losdatos de entrada dada.Restricciones:Restringiendo la estructura de lasentradas se pueden encontrar algoritmos ms rpi-dos.Casos particulares: Puede ocurrir que se reconoz-can casos particulares del problema para los cualesexisten soluciones rpidas.Algoritmogentico: Algoritmos que mejoran lasposibles soluciones hasta encontrar una que posible-mente est cerca del ptimo. Tampoco existe formade garantizar la calidad de la respuesta.Heursticas: Un algoritmo que trabaja razonable-mente bien en muchos casos. En general son rpi-dos, pero no existe medida de la calidad de la res-puesta. Las aproximaciones metaheursticas suelenser empleadas.Un ejemplo de algoritmo heurstico de complejidad O(nlog n) es el algoritmo voraz utilizado para la coloracin devrtices en algunos compiladores. Gracias a que la mayo-ra de mquinas RISC tienen un gran nmero de registrosde propsito general, incluso una aproximacin heursti-ca es efectiva para esta aplicacin.2.5 Completitud bajo diferentes ti-pos de reduccinEn la denicin de NP-completo dada anteriormente, eltrmino reduccin fue utilizado en el sentido transfor-mar las instancias de un problema en instancias de otro(reducciones many-one).Otro tipo de reduccin consiste en la reduccin en tiem-po polinmico de Turing. Un problema X es reducibleen tiempo polinmico de Turing Y si dada una funcinque resuelve Y en tiempo polinmico, podra escribir-se un programa que llamando a la subrutina anterior re-suelva X en tiempo polinmico. Esto contrasta con el usodel trmino reduccin del que hablbamos al principio yaque este tiene la restriccin de que el programa solamentepuede llamar una vez al subalgoritmo y el valor retornadopor este debe ser el valor de retorno del programa.Si se denen el anlogo a NP-completo con reduccionesde Turing en lugar de reducciones many-one, el conjuntode problemas resultante no sera menor de NP-completo,de hecho se cuestiona si seran ms grandes. Si los dosconceptos fuesen lo mismo, se seguira que NO = Co-NP. Esto se mantiene porque por denicin las clases delos problemas NP-completos y co-NP-completos bajo lasreducciones de Turing son las mismas gracias a que lasclases denidas con reducciones many-one son subclasesde estas mismas. Por lo tanto si ambas deniciones dela NP-completitud son iguales hay un problema co-NP-completo (bajo ambas deniciones) como por ejemplo elcomplementario del problema de la satisfacibilidad boo-leana que es tambin NP-completo (bajo ambas deni-ciones). Esto implica que NP = co-NP como se muestracomo prueba en el artculo sobre co-NP. Aunque la cues-tin de si NP = co-NP es una pregunta abierta se con-sidera muy poco probable porque tambin es muy pocoprobable que las dos deniciones de NP-completitud seanequivalentes.Otro tipo de reduccin es empleado frecuentemente pa-ra denir NP-completitud es la de reduccin de espaciologartmico many-one que puede ser computerizada em-pleando nicamente una cantidad logartmica de espacio.Ya que cada computacin que puede ser realizada en es-pacio logartmico tambin puede ser realizada en tiempopolinomial se razona que si hay una reduccin de espa-cio logartmico many-one tambin hay una reduccin detiempo polinmico many-one. Este tipo de reduccin esms renada que la ms usual reduccin de tiempo poli-nmico many-one y permite distinguir ms clases comola P-completa. Ya sea en virtud de estos tipos de reduc-ciones los cambios en la denicin de NP-completo sontodava un problema abierto.2.6 Vase tambinP (clase de complejidad)NP (clase de complejidad)NP-complejo2.7 ReferenciasGarey, M. and D. Johnson, Computers and Intrac-tability; A Guide to the Theory of NP-Completeness,1979. ISBN 0-7167-1045-5 (Este es un libro clsi-co que desarrolla la teora y clasica muchos de losproblemas NP-completos)S. A. Cook, The complexity of theorem provingprocedures, Proceedings, Third Annual ACM Sym-2.7. REFERENCIAS 9posium on the Theory of Computing, ACM, NewYork, 1971, 151-158Complejidadcomputacional dejuegosyrompe-cabezasTetris es difcil, aun para aproximarloBuscaminas es NP-completo!Lista de problemas NP-completoCaptulo 3Problema de decisinEn teora de la computacin, un problema es un conjun-to de frases de longitud nita que tienen asociadas frasesresultantes tambin de longitud nita. Un problema dedecisin es un problema en donde las respuestas posiblesson s o no. Un ejemplo tpico de problema de de-cisin es la pregunta: Es un nmero entero dado primo?Una instancia de este problema sera: Es 17 primo?Un problema de decisin tambin se puede formalizar co-mo el problema de decidir si una cierta frase pertenece aun conjunto dado de frases, tambin llamado lenguaje for-mal. El conjunto contiene exactamente las frases para lascuales la respuesta a la pregunta es positiva. La preguntaanterior sobre los nmeros primos se puede ver tambincomo el lenguaje de todas las frases en el alfabeto {0,1,..., 9} tales que el entero correspondiente es primo.Si existe un algoritmo que pueda decidir para cada posi-ble frase de entrada si esa frase pertenece al lenguaje, en-tonces se dice que el problema es decidible, de otra formase dice que es un problema indecidible. Cuando existe unalgoritmo que puede responder positivamente cuando lafrase est en el lenguaje, pero que corre indenidamen-te cuando la frase no pertenece al lenguaje se dice queel problema esparcialmentedecidible. En Teora de lacomputabilidad, se estudia qu lenguajes son decidiblescon diferentes tipos de mquinas. En teora de la comple-jidad computacional se estudia cuntos recursos necesitaun algoritmo decidible para ejecutar (recursos de tiempo,espacio, nmero de procesadores, tipo de mquina, etc.).3.1 EjemplosEsos son algunos ejemplos de problemas de decisin ex-presados como lenguajes:Las frases sobre el alfabeto {a, b} que contienen al-ternadas las letras a y b.Las frases sobre el alfabeto {a, b, c} que contienenigual nmero de letras a y b.Las frases que describen un grafo con aristas etique-tadas con nmeros naturales que indican su longitud,dos vrtices del grafo y un camino en el grafo que esel camino ms corto entre esos dos vrtices.Las frases que describen una mquina de Turing yuna cinta de entrada para esta mquina tal que lamquina se para en un tiempo nito al procesar esaentrada.Los problemas de decisin son interesantes dado que to-dos los problemas formales (que incluye tanto lgicos co-mo matemticos) pueden ser redactados para que tomenla forma de un problema de decisin. Las soluciones alproblema de decisin y al problema original se diferen-cian a lo sumo por un factor lineal.3.2 Vase tambinEntscheidungsproblem3.3 ReferenciasWeisstein, Eric W. (DecisionProblem) Deni-cin. En Weisstein, Eric W. MathWorld (en ingls).Wolfram Research.10Captulo 4Optimizacin (cmputo)En cmputo, laoptimizacin es el proceso de modi-car un sistema para mejorar su eciencia y el uso de losrecursos disponibles (rendimiento).La optimizacin se puede llevar a cabo bsicamente entres niveles diferentes:optimizacin de hardwareoptimizacin de redesoptimizacin de software11Captulo 5Problema de la mochila$412 kg$22 kg$11 kg$21 kg$104 kg?15 kgEjemplo del problema de la mochila: dada una mochila con unacapacidad de 15 kg que puedo llenar con cajas de distinto pesoy valor, qu cajas elijo de modo de maximizar mis ganancias yno exceder los 15 kg de peso permitidos?En algoritmia, el problema de la mochila, comnmen-te abreviado porKP (del inglsKnapsackproblem) esun problema de optimizacin combinatoria, es decir, quebusca la mejor solucin entre un conjunto de posibles so-luciones a un problema. Modela una situacin anloga alllenar una mochila, incapaz de soportar ms de un pesodeterminado, con todo o parte de un conjunto de objetos,cada uno con un peso y valor especcos. Los objetos co-locados en la mochila deben maximizar el valor total sinexceder el peso mximo.5.1 HistoriaEl problemadelamochilaes unodelos21proble-mas NP-completos de Richard Karp, establecidos por elinformtico terico en un famoso artculo de 1972.[1] Hasido intensamente estudiado desde mediados del siglo XXy se hace referencia a l en el ao 1897, en un artculo deGeorge Mathews Ballard.[2]Si bien la formulacin del problema es sencilla, su reso-lucin es ms compleja. Algunos algoritmos existentespueden resolverlo en la prctica para casos de un gran ta-mao. Sin embargo, la estructura nica del problema, y elhecho de que se presente como un subproblema de otrosproblemas ms generales, lo convierten en un problemafrecuente en la investigacin.5.2 DenicinA continuacin se dene formalmente el problema.[3] Su-pongamos que tenemosn distintos tipos de tems, quevan del 1 al n. De cada tipo de tem se tienen qi temsdisponibles, donde qi es un entero positivo que cumple1 qi .Cada tipo de tem i tiene un benecio asociado dado porvi y un peso (o volumen) wi. Usualmente se asume queel benecio y el peso no son negativos. Para simplicarla representacin, se suele asumir que los tems estn lis-tados en orden creciente segn el peso (o volumen).Por otro lado se tiene una mochila, donde se pueden intro-ducir los tems, que soporta un peso mximo (o volumenmximo) W.El problema consiste en meter en la mochila tems de talforma que se maximice el valor de los tems que con-tiene y siempre que no se supere el peso mximo quepuede soportar la misma. La solucin al problema ven-dr dado por la secuencia de variables x1, x2, ..., xn dondeel valor de xi indica cuantas copias se metern en la mo-chila del tipo de tem i.El problema se puede expresar matemticamente por me-dio del siguiente programa lineal:maximizar ni=1vixique tal ni=1wixi Wy 1 qi .Siqi=1 para i=1,2,...,n se dice que se trata del pro-blemadelamochilla0-1. Si uno o msqi es innitoentonces se dice que se trata del problemadelamo-chila no acotado tambin llamado a veces problema dela mochila entera. En otro caso se dice que se trata delproblema de la mochila acotado125.4. MTODOS DE RESOLUCIN 135.3 Simplicaciones y generaliza-ciones5.3.1 Problema de la mochila simpleObservar que en un problema de la mochilla 0-1, si paracada tipo de tem el benecio y los pesos son idnticos(v=w), entonces el problema quedara formulado de lasiguiente formamaximizar ni=1wixique tal ni=1wixi Wy xi {0, 1}.Por tanto si existe un vector x tal queni=1wixi=W, entonces esa ser una solucin al problema. Si existeuna solucin x de este tipo, resolver el problema de lamochila realmente es resolver el problema de la suma desubconjuntos. Adems si el conjunto de los pesos de loselementos es una secuencia supercreciente, es decir, severica que:wi>i1j=1wjiEntonces se dice que se trata de un problema de la mo-chila simple o tambin problema de la mochila tram-posa. Este tipo de problemas tiene importantes aplicacio-nes en el mundo de la criptografa.5.3.2 ProblemadelamochilademltipleeleccinSi en un problema de la mochila 0-1 los tems estn sub-divididos en k clases, denotadas por N, y exactamente untemtienen que ser tomado de cada clase, entonces habla-mos del problema de la mochila de mltiple eleccin.maximizar ki=1jNivijxijque tal ki=1jNiwijxij W,jNixij= 1 todo para 1 i ky xij {0, 1} todo para 1 i k y j Ni.5.3.3 Problema de la mochila mltipleSi en un problema de la mochila 0-1 tenemos n items ymmochilas con capacidades Wi entonces tenemos el pro-blema de la mochila mltipleUn caso especial del problema de la mochila mltiplees cuando los benecios son iguales a los pesos y todas lasmochilas tienen la misma capacidad. Entonces se le llamaproblema de la mltiple suma de subconjuntos.5.4 Mtodos de resolucinEste problema se ha resuelto tradicionalmente medianteprogramacin lineal entera.El hecho de que se trate de programacin lineal hace re-ferencia a que la funcin a optimizar y las inecuacionesque constituyen las restricciones han de ser lineales, es de-cir, han de ser funciones cuyas incgnitas estn elevadasexclusivamente a la unidad.Existe otra forma de resolver este tipo de problema, a tra-vs de los denominados algoritmos voraces. Una aproxi-macin voraz consiste en que cada elemento a considerarse evala una nica vez, siendo descartado o selecciona-do, de tal forma que si es seleccionado forma parte dela solucin, y si es descartado, no forma parte de la so-lucin ni volver a ser considerado para la misma. Coneste mtodo no siempre es posible dar una solucin a unproblema.Otro sistema para resolver el problema de la mochila esmediante algoritmos genticos que son mtodos de opti-mizacin que tratan de hallar (xi,...,xn) tales que sea m-ximo.5.4.1 Algoritmos voracesa) Aplicacin del mtodo:Partimos de la formulacin del problema de la mochilaaportada anteriormente:Maximizar ni=1bixia sujeto ni=1cixi Pxi {0, 1} con i = 1, . . . , nLa utilizacin de un algoritmo voraz consiste en intro-ducir en la mochila segn orden decreciente de utilidad(benecio) los diversos objetos. En una primera etapa,se adicionarn unidades enteras hasta que, por motivo decapacidad, no sea posible seguir introduciendo enteros yhaya que aadir la porcin que quepa del siguiente objeto.b) Concepto de solucin ptima:Teorema: si se ordenan los objetos de forma de decre-ciente en cuanto a su relacin (utilidad/ponderacin =bi/ci) y se introducen en la mochila enteros en este or-den mientras quepan y cuando no quede capacidad parauno entero se aade la porcin que an tenga cabida elresultado al que se llega es una solucin ptima.5.4.2 Algoritmos genticosConsisten en mtodos adaptativos de optimizacin quetratan de hallar (xi,...,xn) tales que [Sumatoria (bi*xi)desde i= 1 hasta n] sea mximo. Pueden usarse para resol-ver problemas de bsqueda y optimizacin. Se basan en el14 CAPTULO 5. PROBLEMA DE LA MOCHILAproceso gentico de los organismos vivos, por imitacinde este proceso, los Algoritmos Genticos son capacesde ir creando soluciones para problemas del mundo real.La evolucin de dichas soluciones hacia valores ptimosdel problema depende en buena medida de una adecua-da codicacin de las mismas. Para utilizar un algoritmogentico hacen falta tres elementos:Descripcin de la poblacin de individuos:cada individuo representa una solucin facti-ble a un problema dado. A cada individuo se leasigna un valor puntuacin, relacionado conla bondad de dicha solucin.Funcindeevaluacin (llamada funcin deajuste): encontrarunaexpresinmatemticaquepunteacadaindividuodeformaquenuestro ideal sea un mximo o un mnimo.Seleccin o Mecanismos de reproduccin: lafuncin de seleccin de padres ms utilizada,es la denominada funcin de seleccin propor-cional a la funcin objetivo, en la cual cada in-dividuo tiene una probabilidad de ser seleccio-nado como padre que es proporcional al valorde su funcin objetivo, es decir, indica que ca-da objeto de la mochila tendr una probabili-dad de ser seleccionado que depender de larelacin que exista entre benecios y el pesoque ocupa.5.5 Referencias[1] Richard M. Karp (1972). Reducibility Among Combina-torial Problems. En R. E. Miller y J. W. Thatcher (edito-res). Complexity of Computer Computations. Nueva York:Plenum. pp. 85103.[2] G.B. Mathews, On the partition of numbers, Proceedingsof the London Mathematical Society, 28:486-490, 1897.[3] Eric Gossett,"Discrete Mathematics with Proof. Segundaedicin. John Willey 2009.Captulo 6Problema de la mochila simpleEl problemadelamochilasimple, tambin llamadoproblema de la mochila supercreciente, es un tipo deproblema de la mochila (problema NP-completo) al quele aplican una serie de condiciones que hacen que puedaser planteado como un problema de la suma de subcon-juntos (problema NP-completo) que, si tiene solucin, es-ta ser nica.Este tipo de problemas tiene importantes aplicaciones enel mundo de la criptografa6.1 DenicinDados:Un conjunto de m nmeros enteros positivos S={S1,S2, ..., S}, ordenados de menor a mayor, donde lasecuencia de los elementos cumplen la condicin deque el elemento i-simo es mayor que la suma delos anteriores elementos (es una secuencia super-creciente). Matemticamentewi>i1j=1wjiUn valor T que es el resultado de alguna de las posi-bles sumas de esos elementos,Se debe encontrar S'={S, S, ..., S}, siendo S' el subcon-junto de S cuya suma sea igual al valor T.6.2 ResolucinLa solucin a este tipo de mochila es muy fcil debido aque la secuencia S es una secuencia supercreciente:Se recorren los elementos de la mochila de ma-yor a menor comprobando si dicho valor es me-nor que T. Si es mayor, ese valor no estar en lasuma y por tanto en la posicin correspondien-te del vector solucin xi habr un 0. En casocontrario tendr un 1 y se continuar la resolu-cin con los restantes elementos de la mochilapara el problema T-SPara este tipo de problemas, en el caso de que exista lasolucin, esta ser nica.6.3 Aplicaciones6.3.1 Clave simtricaUn problema de la mochila simple puede usarse comoclave secreta de una algoritmo de cifrado simtrico. Paraello lo que hay que hacer es representar la informacinque se quiera cifrar en binario y se pasa cada bit por lamochila por la secuencia de nmeros del conjunto S. Siun bit es 1 entonces se incluye en la suma el elemento quele 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)M = 01000 00101 00010 00100 10010 1001111010 10011Haciendo las sumas de cada quinteto obtengoC = (4), (10+40), (19), (10), (2+19),(2+19+40), (2+4+19), (2+19+40)= 4, 50, 19,10, 21, 61, 25, 61Que ser el mensaje cifrado.Para descifrar es receptor, que conoce S, recibe el mensa-je C y opera de forma contraria resolviendo el problemade la mochila simple para cada uno de los valores de C.Para obtener como suma un 4 la solucin es 010001516 CAPTULO 6. PROBLEMA DE LA MOCHILA SIMPLE50 -> 0010119 -> 0001010 -> 0010021 -> 1001061 -> 1001125 -> 1101061 -> 10011Si uno todos los bits y agrupo en grupos de 8 bits (AN-SI/ASCII) obtengo el mensaje original.Esta forma de cifrarnoessegura ya que es evidenteque teniendo un sucientes pares, de mensaje originale ymensaje cifrado asociado, ser muy fcil obtener la cla-ve S con la que se est cifrando. Sin embargo esta formade cifrar es muy rpida y puede ser aprovechada en lasaplicaciones de cifrado con clave asimtrica.6.3.2 Clave asimtricaLa idea bsica para usar una mochila simple en un sistemade criptografa asimtrica es conseguir una transforma-cin secreta que transforme la mochila simple en una mo-chila general cuya resolucin tenga un coste computacio-nal alto. A esta mochila la llamaremos mochila trampo-sa. La clave pblica ser la mochila tramposa y con ellael emisor cifrar el mensaje de la misma forma que sehaca antes. La clave privada estar formada por los pa-rmetros que permiten convertir el mensaje cifrado con lamochila tramposa en un mensaje cifrado con la mochilasimple. Una vez obtenido esto el receptor puede descifrarel mensaje fcilmente usando la mochila simple.En resumen, el esquema se basa en cifrar con una funcinunidireccional basada en un problema NP-completo (elproblema de la mochila) que tienen una puerta trampaque aprovecha el receptor para descifrar el mensaje. Si nose dispone de esa puerta trampa, el proceso de descifrado,al ser un problema NP-completo, tericamente tendra uncoste computacional muy alto.En esta idea se basa por ejemplo El criptosistema deMerkle-Hellman. Este algoritmo para hacer la transform-cin halla:Unvalor utal que u >ni=1SidondeS1, ..., Sn son los elementos de la mochila simple.Unvalor wenterotal que mcd(u, w) =1 (aseguramos la existencia de w1en elgrupo de los enteros de mdulo uLa mochila tramposa se halla usando la expresinSi=wSi(modu) . Hay que vericar que la mochilatramposa as obtenida no sea una mochila fcil de resol-ver (no siempre es as).Para descifrar el criptograma hay que aplicarw1C(modu) paracadaunadelas sumas Cob-tenidas al cifrar. Acontinuacin cada valor sumatransformado hay que descifrarlo de la forma habitualcon la mochila simple original, lo cual es trivial.6.4 BibliografaJorge Rami Aguirre,"Aplicaciones criptogrcas:libro gua de la asignatura seguridad informtica.UniversidadPolitcnica, EscuelaUniversitariadeInformtica. Enero 1998.6.5. TEXTO E IMGENES DE ORIGEN, COLABORADORES Y LICENCIAS 176.5 Texto e imgenes de origen, colaboradores y licencias6.5.1 Texto TeoradelacomplejidadcomputacionalFuente: 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, Ce-sarsorm, 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, Azevedobandeira, Alexbot, Juan Mayordomo, SilvonenBot, AVBOT, MastiBot, MarcoAurelio, LuqueII, SpBot, Argentumm, Nallimbot, Ptbot-gourou, 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, Ce-sarsorm, 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, Art-hurBot, 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=81478548Colabora-dores: Cinabrium, Toxickore, Maleiva, Lobillo, Tab3r, Dhidalgo, Elabra sanchez, Muro Bot, PaintBot, Correogsk, Hoenheim, Waeswaes yLegobot 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, Na-chosan, 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 Turing926.5.2 Imgenes Archivo:Commons-emblem-disambig-notice.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/5/58/Commons-emblem-disambig-notice.svg Licencia: GPL Colaboradores: 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.svgLicencia: CC BY-SA 3.0Colaboradores: + Artista original: GNOME icon artists, LinfocitoB Archivo:Knapsack.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/f/fd/Knapsack.svg Licencia: CC BY-SA 2.5 Colabo-radores: ? Artista original: ? Archivo:Relative_NPC_chart.svgFuente: 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.svgLicencia: CC BY-SA 3.0 Colaboradores: Derived from Wiki puzzle.svg by user:Kimbar Artista original: James.mcd.nz6.5.3 Licencia de contenido Creative Commons Attribution-Share Alike 3.0