Comple

67
CAP CAP Í Í TULO 2 TULO 2 COMPLEJIDAD COMPLEJIDAD COMPUTACIONAL COMPUTACIONAL

description

1

Transcript of Comple

  • CAPCAPTULO 2TULO 2

    COMPLEJIDAD COMPLEJIDAD COMPUTACIONALCOMPUTACIONAL

  • INTRODUCCIINTRODUCCINN

    La historia de la ciencia de la segunda mitad del siglo XX tieneLa historia de la ciencia de la segunda mitad del siglo XX tienecomo eje central al computador. Siguiendo esta historia, como eje central al computador. Siguiendo esta historia, primero se generprimero se gener un modelo teun modelo terico, un instrumento rico, un instrumento matemmatemtico para calcular. Desarrollado por Alan tico para calcular. Desarrollado por Alan TuringTuring en el en el aao 1936, se constituyo 1936, se constituy en la base matemen la base matemtica de la mayortica de la mayora a de las mde las mquinas construidas en los aquinas construidas en los aos posteriores. Paso a os posteriores. Paso a paso, el ser humano fue generando las herramientas paso, el ser humano fue generando las herramientas tecnoltecnolgicas necesarias para la construccigicas necesarias para la construccin de computadores n de computadores capaces de realizar gigantescas cantidades de ccapaces de realizar gigantescas cantidades de clculos. Sin lculos. Sin embargo en el aembargo en el ao 1971, o 1971, StevenSteven CookCook (1971), coloc(1971), coloc en en evidencia que la Mevidencia que la Mquina de quina de TuringTuring no era capaz de resolver no era capaz de resolver en forma eficiente un problema proveniente del estudio de la en forma eficiente un problema proveniente del estudio de la LLgica y conocido como problema de gica y conocido como problema de SatisfabilidadSatisfabilidad. .

  • Esto significa que para resolver un caso particular de Esto significa que para resolver un caso particular de este problema de tamaeste problema de tamao mediano o grande, se hace o mediano o grande, se hace necesario disponer de un computador que trabaje de necesario disponer de un computador que trabaje de forma continua durante varios siglos en la resoluciforma continua durante varios siglos en la resolucin n del caso. Esto generdel caso. Esto gener gran conmocigran conmocin en la n en la poca en poca en que la mayorque la mayora de los proyectos cienta de los proyectos cientficos del mundo ficos del mundo incluinclua en alguna de sus etapas el uso de los a en alguna de sus etapas el uso de los computadores. Un acomputadores. Un ao mo ms tarde, Richard s tarde, Richard KarpKarp(1972) vino a ratificar lo sustentado por (1972) vino a ratificar lo sustentado por CookCook, , presentando otros 21 problemas para los cuales las presentando otros 21 problemas para los cuales las mmquinas deberquinas deberan presentar un comportamiento an presentar un comportamiento similar. Hoy en dsimilar. Hoy en da estos problemas se han agrupado a estos problemas se han agrupado en una clase conocida como NPen una clase conocida como NP--completo. Acompleto. Aos mos ms s tarde, tarde, M.GareyM.Garey y D. Johnson (1979) escribieron la y D. Johnson (1979) escribieron la que es conocida como la mque es conocida como la ms completa gus completa gua sobre a sobre este tipo de problemas y donde se describen en detalle este tipo de problemas y donde se describen en detalle varias centenas de casos similares. varias centenas de casos similares.

  • Una gran parte de estos problemas proviene de situaciones que Una gran parte de estos problemas proviene de situaciones que surgen en las actividades cotidianas de planificacisurgen en las actividades cotidianas de planificacin en n en empresas del sector productivo o de servicios. Por esto, en las empresas del sector productivo o de servicios. Por esto, en las ltimas tres dltimas tres dcadas se han realizado innumerables intentos cadas se han realizado innumerables intentos por avanzar en la bpor avanzar en la bsqueda de msqueda de mtodos eficientes, haciendo todos eficientes, haciendo uso de computadores que de alguso de computadores que de algn modo, mantienen la n modo, mantienen la estructura generada por estructura generada por TuringTuring. Estos desaf. Estos desafos, que hasta ahora os, que hasta ahora se mantienen insuperados por el ser humano, se han se mantienen insuperados por el ser humano, se han constituido en la fuerza impulsora de diversas iniciativas. Asconstituido en la fuerza impulsora de diversas iniciativas. As, , se han generado mse han generado mtodos capaces de resolver al menos todos capaces de resolver al menos parcialmente el problema, entregando una soluciparcialmente el problema, entregando una solucin n aproximada o bien una que no cumpla con todas las exigencias aproximada o bien una que no cumpla con todas las exigencias que impone el problema. Tales mque impone el problema. Tales mtodos han sido originados todos han sido originados con base en la estructura de cada problema que se resuelve o con base en la estructura de cada problema que se resuelve o bien, con base en ideas provenientes de otras ramas de la bien, con base en ideas provenientes de otras ramas de la ciencia como la biologciencia como la biologa, la fa, la fsica, etc. Tambisica, etc. Tambin existen n existen propuestas que reconsideran las mpropuestas que reconsideran las mquinas que hasta hoy se quinas que hasta hoy se han generado. En esta lhan generado. En esta lnea se encuentran los computadores nea se encuentran los computadores biolbiolgicos y los computadores cugicos y los computadores cunticos (incluir dos nticos (incluir dos referencias). referencias).

  • A pesar de lo anterior y del gran aumento en la capacidad de A pesar de lo anterior y del gran aumento en la capacidad de cclculo que han experimentado los computadores en el lculo que han experimentado los computadores en el ltimo ltimo tiempo, la problemtiempo, la problemtica se mantiene, siendo que en muchos tica se mantiene, siendo que en muchos casos, la solucicasos, la solucin exacta del problema es imprescindible para n exacta del problema es imprescindible para disminuir pdisminuir prdidas de materias primas, mejorar la eficiencia en rdidas de materias primas, mejorar la eficiencia en los mlos mtodos de trabajo, aumentar la eficiencia en el uso de los todos de trabajo, aumentar la eficiencia en el uso de los recursos naturales, etc.recursos naturales, etc.

    En el desarrollo de cualquier sistema computacional se hace En el desarrollo de cualquier sistema computacional se hace necesario realizar un estudio de necesario realizar un estudio de prepre--factibilidad tfactibilidad tcnica que cnica que tiene por objetivo analizar la viabilidad tecnoltiene por objetivo analizar la viabilidad tecnolgica de una gica de una determinada propuesta. Esto significa que se debe cuantificar determinada propuesta. Esto significa que se debe cuantificar el recurso computacional involucrado en la soluciel recurso computacional involucrado en la solucin de n de cualquier caso particular del problema en estudio. Si por cualquier caso particular del problema en estudio. Si por ejemplo se desea construir un programa que sea capaz de ejemplo se desea construir un programa que sea capaz de confeccionar los turnos de trabajo del personal que labora en confeccionar los turnos de trabajo del personal que labora en una empresa, se debe saber de antemano, cuuna empresa, se debe saber de antemano, cunto tiempo nto tiempo tomartomarn los algoritmos para encontrar la mejor solucin los algoritmos para encontrar la mejor solucin para n para una empresa determinada. una empresa determinada.

  • El programa puede ocupar tiempos diferentes de El programa puede ocupar tiempos diferentes de ejecuciejecucin para diferentes taman para diferentes tamaos del problema o os del problema o para mpara mquinas con caracterquinas con caractersticas diferentes. Ademsticas diferentes. Adems s se debe tener en cuenta la memoria requerida para la se debe tener en cuenta la memoria requerida para la ejecuciejecucin de cualquier caso particular. En su conjunto n de cualquier caso particular. En su conjunto estos elementos permiten definir la factibilidad del estos elementos permiten definir la factibilidad del desarrollo y cuantificar los costos de inversidesarrollo y cuantificar los costos de inversin.n.TambiTambin es interesante saber si el problema en n es interesante saber si el problema en estudio ha sido ya estudiado y/o clasificado por otros estudio ha sido ya estudiado y/o clasificado por otros cientcientficos, de manera que la seleccificos, de manera que la seleccin de los n de los algoritmos sea la malgoritmos sea la ms adecuada.s adecuada.El objetivo de este capEl objetivo de este captulo es presentar los aspectos tulo es presentar los aspectos de la teorde la teora de complejidad necesarios para identificar a de complejidad necesarios para identificar la clase a la que pertenece un determinado problema.la clase a la que pertenece un determinado problema.

  • CONCEPTOS BCONCEPTOS BSICOSSICOS AlgoritmoAlgoritmo

    Se define un algoritmo como un procedimiento que se Se define un algoritmo como un procedimiento que se ejecuta en etapas, paso a paso, para resolver un ejecuta en etapas, paso a paso, para resolver un problema.problema.

    Formato de un problemaFormato de un problemaCon el fin de poder visualizar los problemas bajo una Con el fin de poder visualizar los problemas bajo una esquema comesquema comn, se define un formato de n, se define un formato de representacirepresentacin de problemas de manera simple y lo n de problemas de manera simple y lo suficientemente reducido como para ser capaz de suficientemente reducido como para ser capaz de representarlos a todos. Este formato considera dos representarlos a todos. Este formato considera dos aspectos. En una primera parte se describen todos los aspectos. En una primera parte se describen todos los elementos que permiten caracterizar un caso elementos que permiten caracterizar un caso particular de un problema genparticular de un problema genrico, es decir, se rico, es decir, se identifican los datos necesarios para resolver el identifican los datos necesarios para resolver el problema (entrada de datos). problema (entrada de datos).

  • Cuando tales datos tienen valores dados, se Cuando tales datos tienen valores dados, se tiene un caso particular del problema. El tiene un caso particular del problema. El segundo aspecto del formato consiste en la segundo aspecto del formato consiste en la definicidefinicin de una pregunta asociada que se n de una pregunta asociada que se denomina Interrogante. Al responderla se denomina Interrogante. Al responderla se encuentra la soluciencuentra la solucin para el problema. De n para el problema. De acuerdo con este formato se pueden acuerdo con este formato se pueden representar problemas de diversa representar problemas de diversa ndole. Por ndole. Por ejemplo: Dado un grafo ejemplo: Dado un grafo GG((NN, , AA) y un entero ) y un entero MMse plantea la pregunta se plantea la pregunta Se puede colorear el Se puede colorear el grafo grafo GG usando usando MM o menos colores?. La o menos colores?. La respuesta vrespuesta vlida a la Interrogante es lida a la Interrogante es simplemente SI o NO.simplemente SI o NO.

  • Ejemplo 2.1: Ejemplo 2.1: Represente el Problema del Vendedor Represente el Problema del Vendedor Viajero descrito en la secciViajero descrito en la seccin 1.7 del capn 1.7 del captulo anterior tulo anterior bajo el formato antes definido.bajo el formato antes definido.Problema del Vendedor Viajero (Problema del Vendedor Viajero (PVVPVV).).Entrada de datos:Entrada de datos: GG((NN,,AA) no) no--dirigido, con dirigido, con NN: : conjunto de nodos que representan a las ciudades; conjunto de nodos que representan a las ciudades; AA: : Conjunto de arcos que representan las conexiones Conjunto de arcos que representan las conexiones entre las ciudades. entre las ciudades. CC = (= (ccijij))ijij: Matriz de costos de los : Matriz de costos de los arcos. arcos. mm = nodo de inicio de la ruta.= nodo de inicio de la ruta.KK: valor del costo.: valor del costo.Interrogante:Interrogante: Existe un ciclo que, Existe un ciclo que, LLnnnn que pase que pase por todos los nodos del grafo una por todos los nodos del grafo una nica vez y cuyo nica vez y cuyo costo sea costo sea costocosto((LLnnnn ) ) KK?.?.

  • ResoluciResolucin de un probleman de un problemaSe dice que un algoritmo resuelve un problema cuando Se dice que un algoritmo resuelve un problema cuando ste es ste es capaz de dar una respuesta a la interrogante planteada para capaz de dar una respuesta a la interrogante planteada para cualquier caso particular considerado. Note que en el ejemplo cualquier caso particular considerado. Note que en el ejemplo anterior, anterior, aunque la respuesta a la interrogante se limita a un aunque la respuesta a la interrogante se limita a un valor SI o NO, un algoritmo capaz de resolver este problema, valor SI o NO, un algoritmo capaz de resolver este problema, puede ser utilizado con diferentes valores para puede ser utilizado con diferentes valores para KK hasta hasta determinar el mejor valor.determinar el mejor valor.

    Tipos de planteamientos de un problemaTipos de planteamientos de un problemaTeniendo presente el formato de un problema, se identifican Teniendo presente el formato de un problema, se identifican tres tipos de planteamientos: Detres tipos de planteamientos: De DecisiDecisinn, de , de LocalizaciLocalizacinn y y de de OptimizaciOptimizacinn. En el primer caso, la interrogante planteada . En el primer caso, la interrogante planteada admite solamente respuestas binarias de la forma SI o No. El admite solamente respuestas binarias de la forma SI o No. El problema del ejemplo 2.1 ha sido planteado como De problema del ejemplo 2.1 ha sido planteado como De DecisiDecisin, por esto se dice que n, por esto se dice que ste es un ste es un Problema de Problema de DecisiDecisinn. An. Anlogamente un logamente un Problema de LocalizaciProblema de Localizacinn es es aquel en que la interrogante ha sido planteada de manera tal aquel en que la interrogante ha sido planteada de manera tal que la respuesta la constituye una solucique la respuesta la constituye una solucin posible para el n posible para el problema. problema.

  • En el caso del ejemplo 2.1 la interrogante del En el caso del ejemplo 2.1 la interrogante del Problema de LocalizaciProblema de Localizacin correspondiente es:n correspondiente es:CuCul es el ciclo (l es el ciclo (LLnnnn ), que pasa por todos los ), que pasa por todos los nodos del grafo una nodos del grafo una nica vez y que cumple nica vez y que cumple con con costocosto((LLnnnn ) ) KK?.?.En un En un Problema de OptimizaciProblema de Optimizacinn la la interrogante se responde con la mejor soluciinterrogante se responde con la mejor solucin n de acuerdo con algde acuerdo con algn criterio de minimizacin criterio de minimizacin n o maximizacio maximizacin. En el caso del PVV descrito n. En el caso del PVV descrito en ejemplo 2.1 la interrogante correspondiente en ejemplo 2.1 la interrogante correspondiente a este caso es:a este caso es:

  • CuCul es el ciclo (l es el ciclo (LLnn nn ), que pasa por todos los nodos ), que pasa por todos los nodos intermedios una intermedios una nica vez y que tiene costo mnica vez y que tiene costo mnimo?nimo?Es intuitivo visualizar que para un problema dado, el Es intuitivo visualizar que para un problema dado, el

    planteamiento como problema de decisiplanteamiento como problema de decisin requiere n requiere para su resolucipara su resolucin de un algoritmo que realice un n de un algoritmo que realice un esfuerzo en el peor caso similar al requerido para esfuerzo en el peor caso similar al requerido para resolver el problema de localizaciresolver el problema de localizacin. A su vez el n. A su vez el problema de localizaciproblema de localizacin se resuelve con un esfuerzo n se resuelve con un esfuerzo en el peor caso, similar al de optimizacien el peor caso, similar al de optimizacin. En el caso n. En el caso de de PVVPVV (decisi(decisin) basta con dar una respuesta de n) basta con dar una respuesta de existencia del tipo SI o NO, mientras que en el de existencia del tipo SI o NO, mientras que en el de localizacilocalizacin, la respuesta debe ser dada de manera n, la respuesta debe ser dada de manera mms especs especfica, o sea, mediante un ciclo cualquiera fica, o sea, mediante un ciclo cualquiera que cumple con las propiedades planteadas. que cumple con las propiedades planteadas.

  • En el problema de optimizaciEn el problema de optimizacin todavn todava se a se debe ser mdebe ser ms especs especfico, o sea, encontrar aquel fico, o sea, encontrar aquel ciclo que tiene el mejor costo de entre todas las ciclo que tiene el mejor costo de entre todas las que serque seran respuestas para el problema de an respuestas para el problema de localizacilocalizacin. Desde las preguntas planteadas n. Desde las preguntas planteadas para cada caso se desprende tambipara cada caso se desprende tambin un n un mmtodo para transformacitodo para transformacin de problemas, n de problemas, principalmente entre los problemas de decisiprincipalmente entre los problemas de decisin n y de optimizaciy de optimizacin. Esto es n. Esto es til porque la teortil porque la teora a ha sido desarrollada a travha sido desarrollada a travs del tiempo para s del tiempo para los problemas de decisilos problemas de decisin y las situaciones n y las situaciones prprcticas que surgen con mayor frecuencia son cticas que surgen con mayor frecuencia son de optimizacide optimizacin.n.

  • Tiempo de ejecuciTiempo de ejecucin y complejidadn y complejidadSe dice que un algoritmo requiere de un tiempo de Se dice que un algoritmo requiere de un tiempo de ejecuciejecucin n t,t, o de manera equivalente, que la o de manera equivalente, que la complejidad del algoritmo es del orden de complejidad del algoritmo es del orden de f(n)f(n) -- lo lo que se denota como que se denota como OO((ff((nn)) )) -- si existe una constante si existe una constante c,c, tal que:tal que:

    t t c fc f((nn)) (2.1)(2.1)La notaciLa notacin n OO tiene por objetivo simplificar la tiene por objetivo simplificar la expresiexpresin de la funcin de la funcin de complejidad n de complejidad ff((nn). Para ). Para ello, debe representar un lello, debe representar un lmite superior del valor mite superior del valor exacto, transformexacto, transformndose apenas en un elemento ndose apenas en un elemento indicador para medir el desempeindicador para medir el desempeo de un o de un determinado algoritmo. En este sentido, esta notacideterminado algoritmo. En este sentido, esta notacin n no considera los tno considera los trminos relativamente menores de rminos relativamente menores de la funcila funcin exacta. Por ejemplo, funciones exactas de n exacta. Por ejemplo, funciones exactas de la forma la forma kk11nn33 + + kk22nn y y kk3322nn se expresan como se expresan como OO((nn33) y ) y OO(2(2nn) respectivamente.) respectivamente.

  • La constante La constante c c depende del computador utilizado y estdepende del computador utilizado y estasociada con la rapidez de ejecuciasociada con la rapidez de ejecucin de las instrucciones de un n de las instrucciones de un programa, por lo tanto depende de la tecnologprograma, por lo tanto depende de la tecnologa utilizada, ma utilizada, ms s especespecficamente depende de las caracterficamente depende de las caractersticas del computador, sticas del computador, del sistema operativo, del lenguaje utilizado en la del sistema operativo, del lenguaje utilizado en la implementaciimplementacin y del compilador. Por otro lado, la funcin y del compilador. Por otro lado, la funcin n f(n)f(n) depende solamente del tamadepende solamente del tamao del almacenamiento o del almacenamiento requerido por los datos de entrada del algoritmo. Esto es muy requerido por los datos de entrada del algoritmo. Esto es muy til para comparar algoritmos, puesto que es una medida til para comparar algoritmos, puesto que es una medida independiente de la tecnologindependiente de la tecnologa utilizada para implementarlos. a utilizada para implementarlos. Debido a esto, la complejidad es la medida comDebido a esto, la complejidad es la medida comnmente nmente utilizada y sobre la cual se ha desarrollado la teorutilizada y sobre la cual se ha desarrollado la teora de la a de la clasificaciclasificacin de problemas en fn de problemas en fciles y ciles y dificilesdificiles. M. Ms s especespecficamente, la complejidad es la medida utilizada para ficamente, la complejidad es la medida utilizada para comparar problemas. Si se conocen los dos mejores algoritmos comparar problemas. Si se conocen los dos mejores algoritmos AA11 y y AA22 que resuelven los problemas que resuelven los problemas PP11 y y PP22 respectivamente, respectivamente, la complejidad de ambos algoritmos sirve como una medida de la complejidad de ambos algoritmos sirve como una medida de referencia para comparar ambos problemas. referencia para comparar ambos problemas.

  • Ejemplo 2.2. Ejemplo 2.2. Un algoritmo de Un algoritmo de fuerza bruta,fuerza bruta, es un algoritmo de es un algoritmo de bbsqueda capaz de revisar exhaustivamente todo el espacio de squeda capaz de revisar exhaustivamente todo el espacio de posibles soluciones de un problema, siendo por lo tanto capaz posibles soluciones de un problema, siendo por lo tanto capaz de encontrara la que cumple con las caracterde encontrara la que cumple con las caractersticas deseadas. sticas deseadas. Un algoritmo de esta naturaleza puede ser utilizado para Un algoritmo de esta naturaleza puede ser utilizado para resolver problemas de optimizaciresolver problemas de optimizacin y de localizacin y de localizacin (Johnson n (Johnson y y PapadimitriouPapadimitriou, 1984). Escriba un algoritmo de fuerza bruta , 1984). Escriba un algoritmo de fuerza bruta para el problema del vendedor viajero y estime su para el problema del vendedor viajero y estime su complejidad.complejidad.ConsidConsidrese un grafo norese un grafo no--dirigido y completo. Considdirigido y completo. Considrese rese ademadems el problema de optimizacis el problema de optimizacin correspondiente, es decir, n correspondiente, es decir, se busca el ciclo de menor costo que comienza en el nodo uno se busca el ciclo de menor costo que comienza en el nodo uno y que pasa por todos los nodos una y que pasa por todos los nodos una nica vez retornando al nica vez retornando al origen. Si los nodos son enumerados desde el norigen. Si los nodos son enumerados desde el nmero 1 hasta mero 1 hasta el nel nmero n, entonces cadenas de caracteres de la forma mero n, entonces cadenas de caracteres de la forma aa = = 1212((nn--1)1)nn1 representan posibles ciclos. Sea 1 representan posibles ciclos. Sea CCoo((aa) el costo del ) el costo del ciclo. Luego se puede escribir el siguiente algoritmo:ciclo. Luego se puede escribir el siguiente algoritmo:

  • Algoritmo 2.1Algoritmo 2.1: Fuerza Bruta para : Fuerza Bruta para PVVPVV..Entrada:Entrada: GG((NN,,AA) no) no--dirigido, dirigido, CC = (= (ccijij))ijij , , mm;;Salida:Salida: Ciclo de costo mCiclo de costo mnimo;nimo;InicioInicioMMnimonimo ;;Para toda cadena de caracteres Para toda cadena de caracteres aa HacerHacerSi Si CCoo((aa) < ) < MMnimonimo entoncesentonces

    MMnimonimo CCoo((aa););Ruta Ruta aa;;

    FinFin

  • Se utilizarSe utilizar nn como una medida de referencia para como una medida de referencia para identificar el tamaidentificar el tamao de la entrada de datos. El ciclo o de la entrada de datos. El ciclo principal del algoritmo es repetido tantas veces como principal del algoritmo es repetido tantas veces como cadenas diferentes pueden ser generadas, lo que a su cadenas diferentes pueden ser generadas, lo que a su vez corresponde con las maneras diferentes de vez corresponde con las maneras diferentes de ordenar (ordenar (nn--1) n1) nmeros, puesto que el primer y meros, puesto que el primer y ltimo ltimo nnmero de la cadena son fijos, o sea, el ciclo principal mero de la cadena son fijos, o sea, el ciclo principal se repite (se repite (nn--1)! veces. En cada ejecuci1)! veces. En cada ejecucin del ciclo se n del ciclo se debe generar una nueva cadena de caracteres, evaluar debe generar una nueva cadena de caracteres, evaluar el costo y actualizar la variable el costo y actualizar la variable MMnimonimo si es si es necesario. El nnecesario. El nmero de operaciones elementales mero de operaciones elementales (sumas, restas, etc.) involucradas en estas etapas se (sumas, restas, etc.) involucradas en estas etapas se puede estimar de forma aproximada como puede estimar de forma aproximada como knkn donde donde kkes una constante. Luego el esfuerzo total del es una constante. Luego el esfuerzo total del algoritmo estalgoritmo est dado por dado por knkn((nn--1)! y no considerando 1)! y no considerando ttrminos menores ni constantes, la complejidad es rminos menores ni constantes, la complejidad es dada por dada por OO((nn!).!).

  • AnAnlisis de peor casolisis de peor caso

    El algoritmo dado en el ejemplo 2.1 requiere del El algoritmo dado en el ejemplo 2.1 requiere del mismo esfuerzo computacional (en tmismo esfuerzo computacional (en trminos de rminos de nn) ) para resolver diferentes casos particulares del para resolver diferentes casos particulares del PVVPVV. . De este modo, para un caso con 100 nodos el tiempo De este modo, para un caso con 100 nodos el tiempo computacional es proporcional a 100(99!), mientras computacional es proporcional a 100(99!), mientras que en un caso de 1500 nodos es proporcional a que en un caso de 1500 nodos es proporcional a 1500(1499!). Sin embargo, tambi1500(1499!). Sin embargo, tambin existen n existen algoritmos que presentan un desempealgoritmos que presentan un desempeo variable al o variable al resolver dos casos particulares resolver dos casos particulares -- del mismo tamadel mismo tamao o --de un determinado problema. Una situacide un determinado problema. Una situacin tn tpica es pica es la del algoritmo la del algoritmo SimplexSimplex ((BazaraaBazaraa y y JarvisJarvis, 1990). , 1990). Para este tipo de algoritmos, se podrPara este tipo de algoritmos, se podra pensar que es a pensar que es mms adecuado identificar una funcis adecuado identificar una funcin de complejidad n de complejidad que indique el comportamiento promedio para que indique el comportamiento promedio para diversos tamadiversos tamaos. os.

  • Sin embargo, la utilidad de la medida pierde valor Sin embargo, la utilidad de la medida pierde valor predictivopredictivo. Por ejemplo, en el desarrollo de un . Por ejemplo, en el desarrollo de un sistema computacional, se debe conocer de antemano, sistema computacional, se debe conocer de antemano, el tiempo requerido para ejecutar la peor de las el tiempo requerido para ejecutar la peor de las situaciones que se encontrarsituaciones que se encontrar en la practica. El en la practica. El conocimiento apenas de un promedio, llevarconocimiento apenas de un promedio, llevara a a a garantizar el desempegarantizar el desempeo del sistema apenas para o del sistema apenas para algunos casos pralgunos casos prcticos, pero de ninguna manera se cticos, pero de ninguna manera se podrpodra garantizar para todos. Asa garantizar para todos. As es como se ha es como se ha llegado a definir la llegado a definir la complejidad de peor casocomplejidad de peor caso, que es , que es la mla ms utilizada en la disciplina. La complejidad de s utilizada en la disciplina. La complejidad de peor caso es la que se obtiene de realizar un anpeor caso es la que se obtiene de realizar un anlisis lisis del algoritmo considerando que este se enfrenta a la del algoritmo considerando que este se enfrenta a la peor situacipeor situacin.n.

  • Ejemplo 2.3Ejemplo 2.3: La Programaci: La Programacin Dinn Dinmica es una mica es una metodologmetodologa de a de modelamientomodelamiento y resoluciy resolucin de n de problemas. El problema principal se descompone en problemas. El problema principal se descompone en problemas de menor dificultad, los que al resolverse problemas de menor dificultad, los que al resolverse progresivamente generan la soluciprogresivamente generan la solucin del problema n del problema principal. Muchos problemas de optimizaciprincipal. Muchos problemas de optimizacin han n han sido abordados mediante esta tsido abordados mediante esta tcnica en las cnica en las ltimas ltimas ddcadas (cadas (BellmanBellman, 1962). Entre ellos el problema de , 1962). Entre ellos el problema de la mochila que consiste en determinar el subconjunto la mochila que consiste en determinar el subconjunto de elementos que deben ser colocados en una de elementos que deben ser colocados en una mochila, teniendo en cuenta su capacidad limitada mochila, teniendo en cuenta su capacidad limitada (volumen) y el precio de cada uno de los elementos (volumen) y el precio de cada uno de los elementos disponibles. Especdisponibles. Especficamente, se dispone de ficamente, se dispone de nnelementos para ser colocados que se identifican con elementos para ser colocados que se identifican con los nlos nmeros 1,2,meros 1,2,,,nn. Se supone que el volumen de . Se supone que el volumen de los elementos es superior al que soporta la capacidad los elementos es superior al que soporta la capacidad de la mochila. de la mochila.

  • Los precios se denotan por Los precios se denotan por pp11, , pp22,,,, ppnn y el volumen de cada y el volumen de cada elemento por elemento por ww11, , ww22,,,, wwnn. Sea . Sea VV la capacidad de la mochila. la capacidad de la mochila. El problema consiste en determinar el subconjunto de El problema consiste en determinar el subconjunto de elementos que caben en la mochila cuyos precios sumados elementos que caben en la mochila cuyos precios sumados generan el mgeneran el mximo valor. El modelo basado en Programaciximo valor. El modelo basado en Programacin n DinDinmica para este problema se presenta a continuacimica para este problema se presenta a continuacin. n. Escriba un algoritmo que implemente el modelo y calcule su Escriba un algoritmo que implemente el modelo y calcule su complejidad.complejidad.Se considera que los precios y volSe considera que los precios y volmenes son nmenes son nmeros meros enteros. Sea enteros. Sea xxii una variable binaria asociada al elemento una variable binaria asociada al elemento ii, de , de manera que manera que xxii = 1 si el producto es incluido en la mochila y 0 = 1 si el producto es incluido en la mochila y 0 en caso contrario. Entonces en caso contrario. Entonces PP((aa, , bb, , cc) define el problema de ) define el problema de optimizacioptimizacin genn genrico. rico. PP((aa, , bb, , cc))Entrada de datos: Entrada de datos: ppii , , wwii ZZ++ , , ii = 1,= 1,,,nn; ; cc entero positivo.entero positivo.Interrogante:Interrogante: CuCul es la asignacil es la asignacin de nn de nmeros meros binarios a binarios a xxii == 1,1,,,nn; tal que ; tal que ii==aa,,bb wwiixxii cc y que genera un y que genera un valor mvalor mximo para ximo para ii=1,=1,nn ppiixxii ??

  • Note que cuando Note que cuando PP((aa, , bb, , cc) = ) = PP(1, (1, nn, , VV) se obtiene la ) se obtiene la solucisolucin n ptima, es decir, una soluciptima, es decir, una solucin de mn de mximo ximo valor del problema se puede descifrar desde el vector valor del problema se puede descifrar desde el vector xx. . AdemAdems, si x es la solucis, si x es la solucin n ptima y si en particular ptima y si en particular xx11=0, entonces (=0, entonces (xx22 ,, , , xxnn) es soluci) es solucin n ptima de ptima de PP(2, (2, nn, , VV). Por otro lado si ). Por otro lado si xx11 =1 entonces (=1 entonces (xx2 2 , , , , xxnn) es ) es solucisolucin n ptima de ptima de PP(2, (2, nn, , VV ww11).).Para simplificar la notaciPara simplificar la notacin sea n sea QjQj((uu) el valor ) el valor ptimo ptimo de de PP((jj + 1, + 1, nn, , uu) entonces ) entonces QQ00((VV) corresponde a la ) corresponde a la solucisolucin n ptima del problema original, es decir, ptima del problema original, es decir, PP(1, (1, nn, , VV). De este modo, se puede representar el problema a ). De este modo, se puede representar el problema a travtravs de una s de una nica ecuacinica ecuacin (2.2).n (2.2).Q Q jj ((uu) = ) = MMximoximo{{ Q Q j j ++ 11((uu), ), Q Q j +j + 11((u u wwj j ++ 11) + ) + ppjj ++ 11}}

    ((2.2) 2.2)

  • En esta expresiEn esta expresin, el primer tn, el primer trmino entre llaves rmino entre llaves corresponde a fijar la variable corresponde a fijar la variable xx11 = 0; mientras que el = 0; mientras que el segundo, considera el caso segundo, considera el caso xx11 = 1. El siguiente algoritmo = 1. El siguiente algoritmo resuelve la ecuaciresuelve la ecuacin de manera regresiva hasta encontrar n de manera regresiva hasta encontrar el valor de el valor de QQ00((VV).).AlgoritmoAlgoritmo: Programaci: Programacin dinn dinmica para mica para P.P.EntradaEntrada:: ppjj, w, wjj; j = ; j = 11, ..., n; V, ..., n; VSalida: QSalida: Q00((VV))

    InicioInicioQQnn(u) (u) 0 0 uu 0;0;

    Para cada Para cada j = n j = n --11, ..., , ..., 11 HacerHacerQ Q jj ((uu) ) MMximoximo{{ Q Q jj ++ 11((uu), ), QQ j + j + 11((u u wwjj ++ 11) +) + ppjj ++ 11}}Si Si Q Q jj ((uu) ) = Q= Q jj ++ 11((uu), Entonces), Entonces

    xxj+1j+1 = 0;= 0;Sino Sino xxjj + 1+ 1 = 1;= 1;

    FinFin

  • Claramente, el esfuerzo del algoritmo esta Claramente, el esfuerzo del algoritmo esta asociada al casociada al clculo de los elementos de una lculo de los elementos de una matriz compuesta de matriz compuesta de VV filas y filas y nn columnas. El columnas. El nnmero de cmero de clculos que se realiza para cada lculos que se realiza para cada elemento de la matriz es una constante, que no elemento de la matriz es una constante, que no se considera para este caso. Luego la se considera para este caso. Luego la complejidad de peor caso es complejidad de peor caso es O(nVO(nV)). .

  • ReducciReduccin de un problema a otron de un problema a otroEn nuestro lenguaje cotidiano es comEn nuestro lenguaje cotidiano es comn utilizar la n utilizar la expresiexpresin n se reduce ase reduce a para indicar que enfrentar para indicar que enfrentar una situaciuna situacin determinada es lo mismo que enfrentar n determinada es lo mismo que enfrentar una situaciuna situacin alternativa, pero en general, mn alternativa, pero en general, ms s simple. Por ejemplo se dice: el problema de aprender simple. Por ejemplo se dice: el problema de aprender una determinada materia, por ejemplo algoritmos, una determinada materia, por ejemplo algoritmos, se se reduce areduce a leer un buen libro sobre el tema. Se sabe leer un buen libro sobre el tema. Se sabe que no tan sque no tan slo esto es necesario, se requiere primero lo esto es necesario, se requiere primero contar con el libro, sea comprcontar con el libro, sea comprndolo, solicitndolo, solicitndolo en ndolo en una biblioteca, etc., se debe ademuna biblioteca, etc., se debe adems disponer del s disponer del interinters, motivacis, motivacin y grado de concentracin y grado de concentracin n adecuado para facilitar la lectura de un texto adecuado para facilitar la lectura de un texto abstracto. Sin embargo, en esa frase, leer el libro abstracto. Sin embargo, en esa frase, leer el libro parece muy necesario para aprender sobre el tema. parece muy necesario para aprender sobre el tema.

  • Se podrSe podra interpretar la frase afirmando que aprender a interpretar la frase afirmando que aprender algoritmos, que es un tema complejo, es algoritmos, que es un tema complejo, es casi lo casi lo mismo quemismo que, realizar una tarea m, realizar una tarea ms simple y s simple y operativa como lo es leer el libro sobre el tema. Al operativa como lo es leer el libro sobre el tema. Al usar la expresiusar la expresin n se reduce ase reduce a implimplcitamente se estcitamente se estafirmando que algo de trabajo adicional debe ser afirmando que algo de trabajo adicional debe ser realizado. Utilizando este sentido de la expresirealizado. Utilizando este sentido de la expresin se n se define una reduccidefine una reduccin de problemas como sigue.n de problemas como sigue.Sean Sean PP11 y y PP22 dos problemas de decisidos problemas de decisin y sea n y sea CC11 un un caso particular cualesquiera del problema caso particular cualesquiera del problema PP11. Se dice . Se dice que que PP11 se reduce a se reduce a PP22 cuando el caso particular cuando el caso particular CC11, , puede ser convertido en un caso particular del puede ser convertido en un caso particular del problema problema PP22 de tal manera que al resolver de tal manera que al resolver PP22 con con CC11convertido, se obtiene la misma respuesta (Si o No) convertido, se obtiene la misma respuesta (Si o No) que se obtendrque se obtendra al resolver a al resolver PP11 con con CC11..

  • La idea de esta definiciLa idea de esta definicin se basa en establecer n se basa en establecer relaciones entre diferentes problemas de relaciones entre diferentes problemas de decisidecisin. Asn. As, si un problema , si un problema PP11 se reduce a se reduce a otro otro PP22, al disponer de un algoritmo que , al disponer de un algoritmo que resuelve resuelve PP22 para todos los posibles casos para todos los posibles casos particulares, indirectamente tambiparticulares, indirectamente tambin se n se dispone de un algoritmo que resuelve dispone de un algoritmo que resuelve PP11. Basta . Basta para esto que se realice una conversipara esto que se realice una conversin n adecuada del caso particular adecuada del caso particular CC11 en un en un correspondiente caso particular para correspondiente caso particular para CC22. En . En otras palabras, para resolver otras palabras, para resolver PP11 basta con saber basta con saber resolver resolver PP22. .

  • Ejemplo 2.4Ejemplo 2.4.: La noci.: La nocin de reducir un problema a n de reducir un problema a otro es tambiotro es tambin conocida en otros n conocida en otros mbitos como el mbitos como el planteamiento de un problema o como establecer un planteamiento de un problema o como establecer un modelo para un problema. Considere el siguiente modelo para un problema. Considere el siguiente caso:caso:Se dispone de una cierta cantidad de dinero para Se dispone de una cierta cantidad de dinero para invertir en un conjunto de acciones en la Bolsa de invertir en un conjunto de acciones en la Bolsa de ValoresValores.. Se desea determinar la manera de invertir el Se desea determinar la manera de invertir el dinero disponible obteniendo un beneficio mdinero disponible obteniendo un beneficio mximo.ximo.Se desea reducir este problema a otro conocido.Se desea reducir este problema a otro conocido.

    Sean Sean rrii y y qqii dos ndos nmeros enteros que representan meros enteros que representan la rentabilidad y el valor unitario de la accila rentabilidad y el valor unitario de la accin n iirespectivamente. Sea ademrespectivamente. Sea adems s KK la cantidad de dinero la cantidad de dinero disponible y n el ndisponible y n el nmero de acciones disponibles. El mero de acciones disponibles. El siguiente problema que se denomina siguiente problema que se denomina PP22 representa la representa la situacisituacin. n.

  • PP22Entrada de datos: Entrada de datos: rrii , , qqii ZZ++ , , ii = 1,= 1,,,nn; ; KKentero positivo.entero positivo.Interrogante:Interrogante: CuCul es la asignacil es la asignacin de n de nnmeros binarios a meros binarios a xxii == 1,1,,,nn; tal que ; tal que ii=1,=1,nnqqiixxii KK y que genera un valor my que genera un valor mximo para ximo para ii=1,=1,nn rriixxii ??

    Note que Note que PP22 corresponde al problema de la corresponde al problema de la mochila planteado en el ejemplo 2.3 haciendo mochila planteado en el ejemplo 2.3 haciendo la equivalencia con la equivalencia con a a = 1, = 1, b b = = nn y y cc = = KK, es , es decir, basta resolver P(a, b, c) para obtener la decir, basta resolver P(a, b, c) para obtener la solucisolucin para n para PP22..

  • ReducciReduccin Polinomial de Problemas.n Polinomial de Problemas.

    En la definiciEn la definicin anterior nada se especifica en relacin anterior nada se especifica en relacin con el n con el esfuerzo computacional involucrado en la conversiesfuerzo computacional involucrado en la conversin del caso n del caso particular particular CC11 en el caso particular en el caso particular CC22. Es importante conocer . Es importante conocer una medida de este esfuerzo, de hecho, si se conoce y ademuna medida de este esfuerzo, de hecho, si se conoce y adems s se conoce la complejidad del algoritmo que resuelve se conoce la complejidad del algoritmo que resuelve PP22entonces se puede estimar la complejidad del algoritmo entonces se puede estimar la complejidad del algoritmo resultante para resolver resultante para resolver PP11. Se desprende que, al conocer el . Se desprende que, al conocer el algoritmo que resuelve algoritmo que resuelve PP22 y combinarlo adecuadamente con el y combinarlo adecuadamente con el procedimiento de la conversiprocedimiento de la conversin de un caso particular en el n de un caso particular en el otro, se genera un algoritmo capaz de resolver el problema otro, se genera un algoritmo capaz de resolver el problema original original PP11, cuya complejidad ser, cuya complejidad ser dada por el algoritmo dada por el algoritmo conocido y por el nconocido y por el nmero de operaciones elementales que mero de operaciones elementales que requiere la conversirequiere la conversin de n de CC11 en en CC22. Colocando un l. Colocando un lmite para mite para este neste nmero se define la reduccimero se define la reduccin polinomial.n polinomial.

  • Se dice que un problema Se dice que un problema PP11 se reduce se reduce polinomialmente a otro polinomialmente a otro PP22, cuando , cuando PP11 se se reduce a reduce a PP22 y la complejidad del y la complejidad del procedimiento involucrado en la conversiprocedimiento involucrado en la conversin de n de cualquier caso particular de cualquier caso particular de PP11 en el en el correspondiente caso particular de correspondiente caso particular de PP22, est, estlimitada superiormente por una funcilimitada superiormente por una funcin n polinomial, donde el argumento de la funcipolinomial, donde el argumento de la funcin n es determinado por el tamaes determinado por el tamao del caso o del caso particular particular CC11..

  • Ejemplo 2.5 (Johnson y Ejemplo 2.5 (Johnson y PapadimitrouPapadimitrou, 1985):, 1985): Se Se desea efectuar un reduccidesea efectuar un reduccin polinomial de n polinomial de PVVPVV--optimizacioptimizacinn a a PVVPVV--decisidecisinn, problema definidos a , problema definidos a partir del ejemplo 2.1. partir del ejemplo 2.1. Considere que se dispone de un algoritmo Considere que se dispone de un algoritmo AA22((nn, , CC, ,

    KK) que resuelve el ) que resuelve el PVVPVV--decisidecisinn, es decir entrega una , es decir entrega una respuesta Si o No para cualquier caso particular. respuesta Si o No para cualquier caso particular. nn es es el nel nmero de nodos del grafo, mero de nodos del grafo, CC es la matriz de costos es la matriz de costos de los arcos y de los arcos y KK es un les un lmite superior en el costo del mite superior en el costo del ciclo. La reducciciclo. La reduccin polinomial se puede dar n polinomial se puede dar directamente en forma algordirectamente en forma algortmica como en el tmica como en el algoritmo 2.2.algoritmo 2.2.

  • Algoritmo 2.2Algoritmo 2.2: Reducci: Reduccin polinomial.n polinomial.EntradaEntrada: : CC((nnnn) matriz de costos tal que ) matriz de costos tal que ccijij 0 0 ii,, jj ; ; SalidaSalida: Matriz : Matriz CC modificada;modificada;

    InicioInicioccmaxmax = = nn mmximoximo{{ ccijij; ; ii,, jj }}11 0; 0; uu ccmaxmax;;Mientras Mientras 11 uu HacerHacer

    KK = = ((1 1 + + uu)/2))/2)Si Si PVVPVV__decisidecisinn((nn, , CC, , KK) = ) = SiSi Entonces Entonces uu KK;;

    Sino Sino 11 K K + 1;+ 1;Fin mientrasFin mientrasPara todo Para todo i i = 1,..., = 1,..., nn hacerhacerPara todo Para todo jj =1,..., =1,..., nn hacerhacerauxaux ccijij;;ccijij ccmaxmax;;Si Si PVVPVV__decisidecisinn((nn, , CC, , uu) = ) = NoNo Entonces Entonces ccijij auxaux;;Fin.Fin.

  • En la primera parte el algoritmo se efectEn la primera parte el algoritmo se efecta una a una bbsqueda del menor valor de squeda del menor valor de KK que proporciona que proporciona respuesta afirmativa al problema de decisirespuesta afirmativa al problema de decisin. O sea, n. O sea, el costo del ciclo que proporciona este valor el costo del ciclo que proporciona este valor ptimo ptimo para el problema. Sin embargo en esta etapa no se para el problema. Sin embargo en esta etapa no se sabe cusabe cules son los arcos que lo componen. La les son los arcos que lo componen. La segunda etapa justamente se concentra en torno a la segunda etapa justamente se concentra en torno a la identificaciidentificacin de tales arcos. Para ello se efectn de tales arcos. Para ello se efecta una a una prueba con cada uno de los elementos de la matriz de prueba con cada uno de los elementos de la matriz de costos, especcostos, especficamente, se altera un elemento cada ficamente, se altera un elemento cada vez, reemplazvez, reemplazndolo por un valor alto y se resuelve el ndolo por un valor alto y se resuelve el problema de decisiproblema de decisin. Si la respuesta continn. Si la respuesta contina siendo a siendo afirmativa, al trabajar con el valor afirmativa, al trabajar con el valor ptimo de ptimo de KK que ha que ha quedado almacenado en la variable quedado almacenado en la variable uu, entonces tal , entonces tal alteracialteracin no afecta solucin no afecta solucin, es decir continn, es decir contina a generando la misma respuesta porque ninggenerando la misma respuesta porque ningn arco n arco del ciclo del ciclo ptimo tiene valor alterado y por lo tanto el ptimo tiene valor alterado y por lo tanto el arco cuyo valor ha sido alterado no pertenece al ciclo arco cuyo valor ha sido alterado no pertenece al ciclo ptimo. ptimo.

  • Por el contrario si el problema de decisiPor el contrario si el problema de decisin se afecta ante tal n se afecta ante tal alteracialteracin y su respuesta pasa a ser negativa, entonces ese arco n y su respuesta pasa a ser negativa, entonces ese arco necesariamente forma parte del ciclo necesariamente forma parte del ciclo ptimo. ptimo.

    El primer ciclo del algoritmo corresponde a una bEl primer ciclo del algoritmo corresponde a una bsqueda squeda binaria entre 0 y cbinaria entre 0 y cmaxmax . Luego, haciendo el supuesto que la . Luego, haciendo el supuesto que la complejidad del algoritmo complejidad del algoritmo PVVPVV--decisidecisinn es es OO(1) entonces el (1) entonces el esfuerzo involucrado en la determinaciesfuerzo involucrado en la determinacin de n de KK ptimo es ptimo es OO((loglog22[c[cmaxmax]). El segundo ciclo contiene dos instrucciones del ]). El segundo ciclo contiene dos instrucciones del tipo tipo Para todoPara todo cuya funcicuya funcin es revisar los n es revisar los nn22 elementos de la elementos de la matriz. Con esto se puede establecer que la complejidad del matriz. Con esto se puede establecer que la complejidad del algoritmo es algoritmo es OO((loglog22[c[cmaxmax] + ] + nn22). Considerando que una medida ). Considerando que una medida adecuada para el tamaadecuada para el tamao de la entrada de datos requerida en o de la entrada de datos requerida en PVVPVV estest dada por dada por nn loglog22[c[cmaxmax], entonces se puede afirmar ], entonces se puede afirmar que la complejidad del algoritmo 2.2 estque la complejidad del algoritmo 2.2 est limitada limitada polinomialmente en funcipolinomialmente en funcin del taman del tamao de la entrada de datos o de la entrada de datos del problema, al considerar el supuesto que el algoritmo que del problema, al considerar el supuesto que el algoritmo que resuelve resuelve PVVPVV--decisidecisinn tiene complejidad tiene complejidad OO(1).(1).

  • En realidad este supuesto es muy fuerte, porque hasta ahora En realidad este supuesto es muy fuerte, porque hasta ahora nadie ha encontrado un algoritmo con tal eficiencia, mnadie ha encontrado un algoritmo con tal eficiencia, ms as an, n, si alguien lo encontrara algsi alguien lo encontrara algn dn da este libro y toda la teora este libro y toda la teora que a que se ha desarrollado en torno al tema quedarse ha desarrollado en torno al tema quedaran automan automticamente ticamente obsoletos. Lo detalles de tal afirmaciobsoletos. Lo detalles de tal afirmacin se vern se vern en las n en las secciones siguientes.secciones siguientes.La reducciLa reduccin polinomial de un problema a otro es una n polinomial de un problema a otro es una herramienta herramienta til para estudiar problemas desconocidos. Por til para estudiar problemas desconocidos. Por ejemplo, si se dispone de un problema fejemplo, si se dispone de un problema fcil, es decir, con un cil, es decir, con un algoritmo eficiente que lo resuelve, entonces al reducir algoritmo eficiente que lo resuelve, entonces al reducir polinomialmente un problema desconocido a este problema polinomialmente un problema desconocido a este problema ffcil, se tendrcil, se tendr de manera directa tambide manera directa tambin un algoritmo n un algoritmo eficiente para resolver el problema desconocido. Es decir el eficiente para resolver el problema desconocido. Es decir el problema desconocido tambiproblema desconocido tambin pasarn pasar a ser un problema fa ser un problema fcil. cil. Por otro lado, si se tiene un problema difPor otro lado, si se tiene un problema difcil, es decir, uno para cil, es decir, uno para el cual hasta ahora nadie ha podido encontrar un algoritmo el cual hasta ahora nadie ha podido encontrar un algoritmo eficiente que lo resuelva y si este problema se puede reducir eficiente que lo resuelva y si este problema se puede reducir polinomialmente a un problema desconocido, entonces se polinomialmente a un problema desconocido, entonces se puede afirmar que puede afirmar que ste ste ltimo es tambiltimo es tambin un problema difn un problema difcil.cil.

  • CLASES DE PROBLEMASCLASES DE PROBLEMAS

    Clase P de problemasClase P de problemasLa clase La clase PP de problemas estde problemas est constituida por todos constituida por todos aquellos problemas de decisiaquellos problemas de decisin para los cuales se n para los cuales se conoce un algoritmo, cuya complejidad estconoce un algoritmo, cuya complejidad estsuperiormente limitada por una expresisuperiormente limitada por una expresin polinomial n polinomial ((PP) que tiene como argumento una medida del ) que tiene como argumento una medida del tamatamao de la entrada de datos del problema. De o de la entrada de datos del problema. De manera abreviada, tales algoritmos son conocidos manera abreviada, tales algoritmos son conocidos como como algoritmos polinomialesalgoritmos polinomiales y los problemas y los problemas correspondientes como correspondientes como problemas polinomialesproblemas polinomiales. En . En general, se dice que tales problemas son fgeneral, se dice que tales problemas son fciles ciles porque dada una funciporque dada una funcin polinomial de la forma n polinomial de la forma OO((nn22) o bien ) o bien OO((nn33), los tiempos computacionales ), los tiempos computacionales requeridos para resolver casos particulares de gran requeridos para resolver casos particulares de gran tamatamao, son bajos. o, son bajos.

  • En tEn trminos prrminos prcticos con la tecnologcticos con la tecnologa actual es a actual es posible resolver casos particulares de hasta millones posible resolver casos particulares de hasta millones de variables en segundos o minutos de tiempo de variables en segundos o minutos de tiempo computacional. Evidentemente, esto es vcomputacional. Evidentemente, esto es vlido para lido para grados bajos del polinomio, de hecho, si se tiene un grados bajos del polinomio, de hecho, si se tiene un algoritmo de complejidad algoritmo de complejidad OO((nn10001000) la resoluci) la resolucin del n del problema correspondiente incluso para casos problema correspondiente incluso para casos particulares pequeparticulares pequeos se torna una tarea inmanejable, os se torna una tarea inmanejable, pudiendo requerir de varios siglos de ejecucipudiendo requerir de varios siglos de ejecucin en la n en la mmquina mquina ms rs rpida disponible en la actualidad. pida disponible en la actualidad. Felizmente, todos los algoritmos polinomiales Felizmente, todos los algoritmos polinomiales encontrados hasta ahora presentan grado bajo en el encontrados hasta ahora presentan grado bajo en el polinomio y por ello son algoritmos muy eficaces.polinomio y por ello son algoritmos muy eficaces.

  • Ejemplo 2.6:Ejemplo 2.6: Determine la complejidad del Determine la complejidad del algoritmo de algoritmo de PrimPrim (1957) que determina el (1957) que determina el rbol de rbol de cobertura de costo mcobertura de costo mnimo en un grafo dado.nimo en un grafo dado.ProblemaProblema del del rbol de cobertura mrbol de cobertura mnimo. nimo. Entrada de datos: Entrada de datos: GG((NN, , AA) no dirigido y conexo, ) no dirigido y conexo, CC=(=(ccijij))ii,,jj raraz z rr;;Interrogante: Interrogante: CuCul es el l es el rbol de cobertura de costo rbol de cobertura de costo mmnimo en nimo en G(N,AG(N,A).).Considere el algoritmo de Considere el algoritmo de PrimPrim dado a continuacidado a continuacin. n. Sea m: una marca que se realiza sobre cada nodo de Sea m: una marca que se realiza sobre cada nodo de GG((NN,,AA); ); ((jj) es el nodo precedente a ) es el nodo precedente a jj en el proceso en el proceso de marcacide marcacin. n. TT es un conjunto de nodos marcados es un conjunto de nodos marcados temporalmente y temporalmente y PP es el conjunto de los que han sido es el conjunto de los que han sido marcados de forma definitiva o permanente.marcados de forma definitiva o permanente.

  • Algoritmo 2.3Algoritmo 2.3: Reducci: Reduccin polinomial.n polinomial.EntradaEntrada: : GG((NN, , AA) ; ) ; CC((nnnn) matriz de costos tal que ) matriz de costos tal que ccijij 0 0 ii,, jj ; ; SalidaSalida: : ArbolArbol de cobertura de costo mde cobertura de costo mnimo;nimo;

    InicioInicioMM((rr) =0; ) =0; mm((jj) = +) = + jj kk NN;;((ii) = 0, ) = 0, ii; ; PP={={rr}; }; TT={2,={2,,,nn}}A=A=;;RepetirRepetir

    kk minmin{{mm((jj), ), jj TT };};PP PP{{kk}; }; TT TT {{kk};};AA AA{({(((kk),),KK};};Para todoPara todo sucesor (sucesor (k,jk,j) con ) con jj TT HacerHacer

    Si Si cc((kk,,jj) )

  • La complejidad estLa complejidad est dada por el ndada por el nmero de mero de veces que se repite el veces que se repite el cilcocilco principal n y por el principal n y por el esfuerzo en las operaciones internas que esfuerzo en las operaciones internas que tambitambin son de orden n. Luego la complejidad n son de orden n. Luego la complejidad es es OO((nn22) y por lo tanto el problema pertenece a ) y por lo tanto el problema pertenece a la clase P, gracias al trabajo pionero de R. la clase P, gracias al trabajo pionero de R. PrimPrim (1957).(1957).

  • Clase NP de problemasClase NP de problemasLa definiciLa definicin de la clase n de la clase PP permite agrupar todos los permite agrupar todos los problemas fproblemas fciles en una misma familia. Parece ciles en una misma familia. Parece interesante hacer lo mismo para el resto de los interesante hacer lo mismo para el resto de los problemas. Para problemas. Para stos, en general, se dispone de stos, en general, se dispone de algoritmos con complejidades conocidas como algoritmos con complejidades conocidas como exponenciales, de la forma exponenciales, de la forma OO(2(2nn) o bien ) o bien OO((nn!!), entre ), entre otras. En la protras. En la prctica, se trata de funciones ctica, se trata de funciones inmanejables con la tecnologinmanejables con la tecnologa actual, a modo de a actual, a modo de ejemplo, si se tiene un algoritmo con complejidad ejemplo, si se tiene un algoritmo con complejidad OO((nn!!) y se desea resolver un caso particular de ) y se desea resolver un caso particular de tamatamao o n n =1000, lo que para muchas situaciones =1000, lo que para muchas situaciones reales corresponde a un caso particular pequereales corresponde a un caso particular pequeo, o, contando con la mcontando con la mquina mquina ms rs rpida disponible, se pida disponible, se requerirrequeriran aproximadamente del orden de los 10an aproximadamente del orden de los 10283 283 siglos. siglos.

  • En la mayorEn la mayora de los casos se trata de cantidades gigantescas a de los casos se trata de cantidades gigantescas de tiempo computacional.de tiempo computacional.ConsidConsidrese la existencia de un algoritmo general capaz de rese la existencia de un algoritmo general capaz de resolver la mayor parte de los problemas de decisiresolver la mayor parte de los problemas de decisin. n. ConsidConsidrese ademrese adems que tal algoritmo trabaja en dos etapas. s que tal algoritmo trabaja en dos etapas. Dado un caso particular cualesquiera del problema, en una Dado un caso particular cualesquiera del problema, en una primera etapa, el algoritmo genera, sin certeza absoluta, una primera etapa, el algoritmo genera, sin certeza absoluta, una estructura que resolverestructura que resolvera el problema. Por ejemplo, en a el problema. Por ejemplo, en PVVPVV--decisidecisinn esta etapa corresponde a generar una combinaciesta etapa corresponde a generar una combinacin de n de nodos del grafo en un orden cnodos del grafo en un orden cclico que considera todas las clico que considera todas las ciudades intermedias una ciudades intermedias una nica vez y que tiene costo total nica vez y que tiene costo total menor o igual a menor o igual a KK. En la segunda etapa, se hace necesario . En la segunda etapa, se hace necesario verificar que la pretendida estructura, efectivamente genere la verificar que la pretendida estructura, efectivamente genere la respuesta Si para el problema de decisirespuesta Si para el problema de decisin. En el n. En el PVVPVV--decisidecisinn, , la equivalencia es verificar si la combinacila equivalencia es verificar si la combinacin seleccionada en n seleccionada en la primera etapa constituye un ciclo que pasa por todas las la primera etapa constituye un ciclo que pasa por todas las ciudades una ciudades una nica vez, que se inicia y termina en la ciudad nica vez, que se inicia y termina en la ciudad indicada y que tiene un costo no superior al permitido. indicada y que tiene un costo no superior al permitido.

  • Este tipo de algoritmos es conocido como algoritmo Este tipo de algoritmos es conocido como algoritmo nono--determindeterminsticostico. Una analog. Una analoga para entender el a para entender el grado de dificultad involucrado en ambas etapas del grado de dificultad involucrado en ambas etapas del algoritmo noalgoritmo no--determindeterminsticostico es la siguiente: es la siguiente: supsupngase que un programador proporciona un ngase que un programador proporciona un programa para resolver programa para resolver sin certeza absolutasin certeza absoluta el el PVVPVV--optimizacioptimizacinn (primera etapa del algoritmo). El (primera etapa del algoritmo). El programa tiene una salida grprograma tiene una salida grfica a travfica a travs de la cual s de la cual se especifican en pantalla, tanto, los datos de una caso se especifican en pantalla, tanto, los datos de una caso particular cualesquiera, como, el resultado particular cualesquiera, como, el resultado correspondiente. Entonces se hace necesario verificar correspondiente. Entonces se hace necesario verificar que el programa funciona para un caso determinado: que el programa funciona para un caso determinado: la tarea consiste en ingresar los datos del caso, la tarea consiste en ingresar los datos del caso, ejecutar el programa y observar el resultado en ejecutar el programa y observar el resultado en pantalla. Esta tarea de verificacipantalla. Esta tarea de verificacin es bastante mn es bastante ms s simple que la de desarrollar el programa y es a travsimple que la de desarrollar el programa y es a travs s de ella que se puede saber si el programa estde ella que se puede saber si el programa estcorrecto. correcto.

  • Lo interesante del algoritmo noLo interesante del algoritmo no--determindeterminsticostico es que es que la segunda etapa parece ser una tarea mla segunda etapa parece ser una tarea ms fs fcil de cil de evaluar para los diversos problemas y por ello se evaluar para los diversos problemas y por ello se puede utilizar como una referencia en torno de la cual puede utilizar como una referencia en torno de la cual se pueden agrupar los problemas difse pueden agrupar los problemas difciles. ciles. EspecEspecficamente se puede exigir que esta segunda ficamente se puede exigir que esta segunda etapa sea una tarea simple de realizar, es decir una etapa sea una tarea simple de realizar, es decir una para la cual exista un algoritmo polinomial. Con esta para la cual exista un algoritmo polinomial. Con esta exigencia mexigencia mnima, se puede identificar la mayor parte nima, se puede identificar la mayor parte de los problemas de deciside los problemas de decisin. n. Se dice que un problema de decisiSe dice que un problema de decisin pertenece a la n pertenece a la clase clase NPNP de problemas cuando se cumplen las dos de problemas cuando se cumplen las dos siguientes condiciones:siguientes condiciones:Existe una estructura que satisface la respuesta Si del Existe una estructura que satisface la respuesta Si del problema,problema,Existe, un algoritmo polinomial para verificar la Existe, un algoritmo polinomial para verificar la veracidad de la repuesta Si ante una estructura dada.veracidad de la repuesta Si ante una estructura dada.

  • De este modo, un procedimiento para asegurar que un De este modo, un procedimiento para asegurar que un problema pertenece a la clase problema pertenece a la clase NPNP consiste en: consiste en: Primero, presentar una estructura que se supone Primero, presentar una estructura que se supone satisface la respuesta SI del problema y segundo satisface la respuesta SI del problema y segundo elaborar un algoritmo para reconocer que la estructura elaborar un algoritmo para reconocer que la estructura estest correcta. Si el algoritmo resultante de la segunda correcta. Si el algoritmo resultante de la segunda etapa es polinomial, entonces el problema pertenece a etapa es polinomial, entonces el problema pertenece a la clase la clase NPNP. En general se dice que si la segunda . En general se dice que si la segunda etapa del algoritmo noetapa del algoritmo no--determindeterminstico es polinomial el stico es polinomial el propio algoritmo es tambipropio algoritmo es tambin polinomial. Esto porque n polinomial. Esto porque como la primera etapa es una especie de generadora como la primera etapa es una especie de generadora automautomtica de estructuras candidatas a tica de estructuras candidatas a gatillargatillar la la respuesta Si, se asume que se realiza con complejidad respuesta Si, se asume que se realiza con complejidad OO(1). De aqu(1). De aqu entonces el origen del nombre entonces el origen del nombre NPNP(Polinomialmente No(Polinomialmente No--determindeterminstico).stico).

  • Ejemplo 2.7: Ejemplo 2.7: Analice la pertenencia delAnalice la pertenencia del Problema del Ciclo Problema del Ciclo Hamiltoniano a la clase Hamiltoniano a la clase NPNP..Problema: Problema: Ciclo HamiltonianoCiclo HamiltonianoEntrada de datos: Entrada de datos: GG ((NN, , AA) un grafo no orientado con ) un grafo no orientado con N N = = {{1,...,1,...,nn}}..Interrogante: Interrogante: Existe un ciclo que pase por todos los nodos de Existe un ciclo que pase por todos los nodos de GG una una nica vez? nica vez? Dada una estructura que pretende ser un ciclo Dada una estructura que pretende ser un ciclo hamiltonianohamiltoniano se se debe verificar que efectivamente se trata de un ciclo y que debe verificar que efectivamente se trata de un ciclo y que todas las ciudades esttodas las ciudades estn presentes una n presentes una nica vez. Si se nica vez. Si se representa el ciclo en un arreglo la tarea consiste en recorrer representa el ciclo en un arreglo la tarea consiste en recorrer secuencialmentesecuencialmente el arreglo verificando la existencia de una el arreglo verificando la existencia de una arco entre cada par de nodos adyacentes, contando el narco entre cada par de nodos adyacentes, contando el nmero mero de veces que participa cada nodo en el arreglo y verificando la de veces que participa cada nodo en el arreglo y verificando la vuelta al origen. Esta es una tarea claramente de orden vuelta al origen. Esta es una tarea claramente de orden polinomialpolinomial

  • Ejemplo 2.8:Ejemplo 2.8: Demuestra que el problema de Demuestra que el problema de satisfatibilidadsatisfatibilidad pertenece a la clase pertenece a la clase NPNP..Sean Sean xx11, , xx22,,, , xxnn variables boolenas que pueden tener variables boolenas que pueden tener valores verdadero (valores verdadero (VV) o falso () o falso (FF). Se define un literal ). Se define un literal como una de las variables booleanas (como una de las variables booleanas (xxjj) o su ) o su correspondiente negacicorrespondiente negacin que se denota por: n que se denota por: xxjj. Se . Se define ademdefine adems una cls una clusula como una disyunciusula como una disyuncin de n de literales, por ejemplo: literales, por ejemplo: xx11 xx22 xx33. Una Forma . Una Forma Normal Conjuntiva (Normal Conjuntiva (FNCFNC) es una expresi) es una expresin booleana n booleana constituida por una conjunciconstituida por una conjuncin de cln de clusulas, por usulas, por ejemplo:ejemplo:FNCFNC11 = ( = ( xx11 xx22 xx44) ) ((xx11 xx33 xx55 ) ) ((xx22 xx44 xx55 ))

  • Se dice que una Se dice que una FNCFNC es es satisfaciblesatisfacible si existe si existe una atribuciuna atribucin de valores para las variables n de valores para las variables que la componen que le dan valor que la componen que le dan valor VV. La . La atribuciatribucin de valores n de valores xx11 = = xx22 = = xx33 = = xx44 = = xx55 = = VV, , hacen que hacen que FNCFNC11 sea sea satisfaciblesatisfacible..Se define el problema de Se define el problema de satisfabilidadsatisfabilidad segsegn:n:Problema de Problema de satisfabilidadsatisfabilidadEntrada de datos: ExpresiEntrada de datos: Expresin n booleanabooleana en en FNCFNC..Pregunta: Pregunta: Es la expresiEs la expresin n satisfaciblesatisfacible??

  • Para probar que este problema pertenece a la clase Para probar que este problema pertenece a la clase NPNP, se debe exhibir una atribuci, se debe exhibir una atribucin de valores y n de valores y encontrar un algoritmo polinomial que verifique, que encontrar un algoritmo polinomial que verifique, que para tal atribucipara tal atribucin la expresin la expresin es n es satisfaciblesatisfacible. El . El algoritmo de verificacialgoritmo de verificacin substituye en la expresin substituye en la expresin n los valores de las variables y busca al menos un literal los valores de las variables y busca al menos un literal con valor con valor VV en cada clen cada clusula. Si n es el nusula. Si n es el nmero de mero de variables que participan en la expresivariables que participan en la expresin y m el n y m el nnmero de clmero de clusulas que la componen entonces un usulas que la componen entonces un algoritmo puede realizar la verificacialgoritmo puede realizar la verificacin en n en O(O(mnmn) ) operaciones que corresponde a una medida operaciones que corresponde a una medida polinomial del tamapolinomial del tamao de la entrada de datos. o de la entrada de datos. Entonces, el problema pertenece a la clase Entonces, el problema pertenece a la clase NPNP..

  • De acuerdo a las definiciones de De acuerdo a las definiciones de PP y y NPNP, en la , en la primera clase estprimera clase estn aquellos problemas en los que es n aquellos problemas en los que es ffcil encontrar una solucicil encontrar una solucin, mientras que en la n, mientras que en la segunda aquellos para los que es fsegunda aquellos para los que es fcil verificar una cil verificar una solucisolucin. Si para un problema dado se tiene un n. Si para un problema dado se tiene un algoritmo que encuentra una solucialgoritmo que encuentra una solucin en tiempo n en tiempo polinomial (entonces pertenece a la clase P), es obvio polinomial (entonces pertenece a la clase P), es obvio que el mismo algoritmo puede reemplazar tanto, a la que el mismo algoritmo puede reemplazar tanto, a la primera etapa del algoritmo noprimera etapa del algoritmo no--determindeterminsticostico como, como, a la correspondiente etapa de verificacia la correspondiente etapa de verificacin. Se deduce n. Se deduce entonces que tal problema tambientonces que tal problema tambin pertenece a la n pertenece a la clase clase NPNP, entonces , entonces PP NPNP. .

  • A pesar de la exigencia mA pesar de la exigencia mnima impuesta para que un nima impuesta para que un problema pertenezca a la clase problema pertenezca a la clase NPNP, existen problemas para los , existen problemas para los cuales tales condiciones no han podido ser verificadas (hasta cuales tales condiciones no han podido ser verificadas (hasta ahora). El caso mahora). El caso ms referenciado en la literatura es el s referenciado en la literatura es el PVVPVV--complementocomplemento que se define de la siguiente manera.que se define de la siguiente manera.Problema Problema PVVPVV--complementocomplementoEntrada de datos: Entrada de datos: GG((NN,,AA) no) no--dirigido; dirigido; NN: conjunto de nodos : conjunto de nodos que representan a las ciudades; que representan a las ciudades; AA: Conjunto de arcos que : Conjunto de arcos que representan las conexiones entre las ciudades. representan las conexiones entre las ciudades. CC = (= (ccijij))ijij: : Matriz de costos de los arcos. Matriz de costos de los arcos. mm = nodo de inicio de la ruta. = nodo de inicio de la ruta. KK: : valor del costo.valor del costo.Interrogante:Interrogante: Es verdad que no hay ningEs verdad que no hay ningn ciclo n ciclo LLnnnn,,que pase por todos los nodos una que pase por todos los nodos una nica vez y cuyo costo sea nica vez y cuyo costo sea costocosto((LLnn nn ) ) KK?.?.Hasta ahora no se sabe como representar las estructuras Hasta ahora no se sabe como representar las estructuras vvlidas ni menos como verificarlas en tiempo polinomial. lidas ni menos como verificarlas en tiempo polinomial.

  • Clase NPClase NP--completo de problemascompleto de problemas

    Se dice que un problema de decisiSe dice que un problema de decisin n AA pertenece a la clase pertenece a la clase NPNP--CompletoCompleto cuando:cuando:AA NPNP;;Cada problema en Cada problema en NPNP se puede reducir polinomialmente a se puede reducir polinomialmente a A.A.De acuerdo a la definiciDe acuerdo a la definicin, en esta clase, no estn, en esta clase, no estn incluidos los n incluidos los problemas polinomiales. Si un problema en problemas polinomiales. Si un problema en PP estuviera estuviera tambitambin en n en NPNP--completocompleto, entonces, como todos los problemas , entonces, como todos los problemas de la clase se podrde la clase se podran reducir a este problema polinomial, an reducir a este problema polinomial, habrhabra un algoritmo tambia un algoritmo tambin polinomial para todos ellos y n polinomial para todos ellos y entonces existirentonces existira una a una nica clase en nica clase en NPNP que serque sera la propia a la propia clase clase PP. Se trata entonces de un grupo de problemas de la clase . Se trata entonces de un grupo de problemas de la clase NPNP que cumplen con esta propiedad particular. Todos los que cumplen con esta propiedad particular. Todos los problemas de la clase se pueden reducir polinomialmente a un problemas de la clase se pueden reducir polinomialmente a un problema problema NPNP--completocompleto, de ah, de ah surge el nombre de surge el nombre de completitud. Son en alguna medida representantes no fcompletitud. Son en alguna medida representantes no fciles ciles de todos los problemas en de todos los problemas en NPNP, son problemas completos. , son problemas completos.

  • Entonces, Entonces, ccmo se puede encontrar un mo se puede encontrar un problema que pertenezca a esta clase? Parece problema que pertenezca a esta clase? Parece una tarea engorrosa el intentar transformar una tarea engorrosa el intentar transformar mediante una reduccimediante una reduccin polinomial todos los n polinomial todos los problemas de la clase en uno de problemas de la clase en uno de stos para stos para probar su pertenencia. Se requerirprobar su pertenencia. Se requeriran miles de an miles de transformaciones de este tipo. Este trabajo fue transformaciones de este tipo. Este trabajo fue facilitado en gran medida por el trabajo facilitado en gran medida por el trabajo pionero de S. pionero de S. CookCook (1971) qui(1971) quin demostrn demostr que que el primer caso de esta clase, era el Problema de el primer caso de esta clase, era el Problema de SatisfabilidadSatisfabilidad ((PSATPSAT) presentado en el ejemplo ) presentado en el ejemplo 2.7. Durante las 2.7. Durante las ltimas dltimas dcadas se ha cadas se ha demostrado que muchos otros problemas demostrado que muchos otros problemas pertenecen tambipertenecen tambin a esta clase (n a esta clase (GareyGarey & & Johnson, 1979)Johnson, 1979)

  • Para demostrar esta afirmaciPara demostrar esta afirmacin n CookCookconsiderconsider un caso particular de un problema un caso particular de un problema gengenrico perteneciente a la clase rico perteneciente a la clase NPNP y lo y lo transformtransform, vali, valindose de una reduccindose de una reduccin n polinomial, en un caso particular del polinomial, en un caso particular del PSATPSAT. . Cuando la Cuando la FNCFNC del problema tiene valor del problema tiene valor verdadero, se reconoce una estructura que verdadero, se reconoce una estructura que genera la respuesta Sgenera la respuesta S en el problema genen el problema genrico. rico. La demostraciLa demostracin del teorema se basa en el n del teorema se basa en el funcionamiento de una Mfuncionamiento de una Mquina de quina de TuringTuring((GareyGarey andand Johnson, 1979; Johnson, 1979; CookCook, 1971)., 1971).

  • El resultado de El resultado de CookCook permitipermiti que se encontraran que se encontraran otros problemas pertenecientes a la misma clase. Asotros problemas pertenecientes a la misma clase. As, , para probar que un problema para probar que un problema PPxx pertenece a la clase, pertenece a la clase, basta con efectuar una reduccibasta con efectuar una reduccin polinomial del n polinomial del PSAT PSAT a a PPxx. Con esto, se muestra que para resolver . Con esto, se muestra que para resolver PSATPSAT , , que es un problema difque es un problema difcil, sercil, sera necesario resolver a necesario resolver PPxx. De manera equivalente, de existir un algoritmo . De manera equivalente, de existir un algoritmo eficiente para resolver eficiente para resolver PPxx., tambi., tambin debern debera haber uno a haber uno para para PSATPSAT. En esta l. En esta lnea de razonamiento se encontrnea de razonamiento se encontrel segundo problema de la larga lista; conocido como el segundo problema de la larga lista; conocido como Problema Problema SatisfabilidadSatisfabilidad de orden 3 (de orden 3 (PSATPSAT--3) se 3) se abordabord transformado un caso particular de transformado un caso particular de PSATPSAT en en un caso correspondiente de un caso correspondiente de PSATPSAT --3.3.

  • Figura 2.1Figura 2.1 Clases de problemas de decisiClases de problemas de decisin.n.

    Clase P

    ClaseNP-completo

  • Se ha visto que Se ha visto que PPNPNP y que y que NPNP--completocompletoNPNP. Tambi. Tambin se sabe que n se sabe que PP es diferente de es diferente de NPNP. Entonces se puede establecer el diagrama . Entonces se puede establecer el diagrama que se muestra en la figura 2.1. Si que se muestra en la figura 2.1. Si consideramos que el espacio interior del par de consideramos que el espacio interior del par de letras NP contiene a todos los problemas que letras NP contiene a todos los problemas que pertenecen a esta clase, entonces la figura pertenecen a esta clase, entonces la figura cerrada en el interior de la letra P representa al cerrada en el interior de la letra P representa al conjunto de problemas de la clase conjunto de problemas de la clase PP y una y una parte de la letra N que se incrusta en la letra P parte de la letra N que se incrusta en la letra P representa al conjunto de problemas de la clase representa al conjunto de problemas de la clase NPNP--completocompleto. .

  • Ejemplo 2.9Ejemplo 2.9: Muestre que el problema del Clan es : Muestre que el problema del Clan es NPNP-- Completo.Completo.Problema del ClanProblema del ClanEntrada de datos:Entrada de datos: GG((NN,,AA) no) no--dirigido, con dirigido, con NN: : conjunto de nodos; conjunto de nodos; AA: Conjunto de arcos.: Conjunto de arcos.Interrogante:Interrogante: Existe un clan de tamaExiste un clan de tamao o kk en el en el grafo grafo GG((NN,,AA) ?.) ?.El problema de Clan consiste en determinar si en un El problema de Clan consiste en determinar si en un grafo dado existe un grafo dado existe un subgrafosubgrafo completo con completo con kk nodos. nodos. Para mostrar que este problema es tambiPara mostrar que este problema es tambin de la clase n de la clase NPNP--completo, se realiza una reduccicompleto, se realiza una reduccin del n del PSATPSAT a a este problema. este problema. Considere una expresiConsidere una expresin n booleanabooleana escrita en Forma escrita en Forma Normal Conjuntiva que tiene Normal Conjuntiva que tiene kk clclusulas y usulas y nn literales literales de la forma:de la forma:FNCFNC = ( = ( xx11 xx2 2 ) ) ((xx33 xx55 ) ) ((xx44 xx66 ))

  • Para realizar la reducciPara realizar la reduccin de n de PSATPSAT al problema al problema dado, se debe construir un grafo que represente dado, se debe construir un grafo que represente de alguna manera la de alguna manera la FNCFNC, tal que al , tal que al determinar un clan en el grafo construido, se determinar un clan en el grafo construido, se determine una respuesta Si para determine una respuesta Si para PSATPSAT. Sea . Sea GG((NN, , AA) tal grafo, en el que cada nodo es un ) tal grafo, en el que cada nodo es un par ordenado de la forma (par ordenado de la forma (xxjj, , ii) donde ) donde xxjj es el es el literal que participa de la clliteral que participa de la clusula usula ii. El . El conjunto conjunto AA estest compuesto por arcos que unen compuesto por arcos que unen pares de nodos de la forma (pares de nodos de la forma (xxjj, , aa) e () e (yyii, , bb) ) siendo siendo xxjj diferente de diferente de yyii y y aa diferente de diferente de bb. .

  • En este grafo, un clan con En este grafo, un clan con kk vvrtices, corresponde en rtices, corresponde en la expresila expresin n booleanabooleana original, a un conjunto de original, a un conjunto de literales que al atribuirles el valor verdadero literales que al atribuirles el valor verdadero simultsimultneamente, le dan tambineamente, le dan tambin el valor verdadero a n el valor verdadero a la expresila expresin. En otras palabras, decidir si una n. En otras palabras, decidir si una expresiexpresin n booleanabooleana es es satisfaciblesatisfacible es equivalente a es equivalente a decidir si el grafo asociado contiene un clan de decidir si el grafo asociado contiene un clan de tamatamao o kk, siendo , siendo kk el nel nmero de clmero de clusulas. Para usulas. Para completar la demostracicompletar la demostracin se debe decir que la n se debe decir que la construcciconstruccin de un grafo G puede ser realizado en n de un grafo G puede ser realizado en tiempo polinomial en el tamatiempo polinomial en el tamao de la expresio de la expresin n booleanabooleana. Como ejemplo consid. Como ejemplo considrese la expresirese la expresin:n:FNCFNC11 = ( = ( xx11 xx22) ) ((xx33 xx44) ) ((xx11 xx22 xx44))

  • En la figura 2.2 se muestra el grafo asociado. En la figura 2.2 se muestra el grafo asociado. Para ello se identifican los nodos con el Para ello se identifican los nodos con el siguiente orden: 1: ( siguiente orden: 1: ( xx44 , 3); 2: ( , 3); 2: ( xx11 , 1); 3: ( , 1); 3: ( xx22 , , 1); 4: ( 1); 4: ( xx33 , 2); 5: ( , 2); 5: ( xx44 , 2); 6: ( , 2); 6: ( xx11 , 3); 7: ( , 3); 7: ( xx22 , , 3). Se aprecia que clanes de tama3). Se aprecia que clanes de tamao 3, tales o 3, tales como: [( como: [( xx11 , 1) ( , 1) ( xx22 , 3) ( , 3) ( xx44 , 2)], [( , 2)], [( xx22 , 1) ( , 1) ( xx33 , , 2) ( 2) ( xx44 , 3)], etc. proporcionan valor , 3)], etc. proporcionan valor VV a a FNCFNC11cuando las variables correspondientes al clan cuando las variables correspondientes al clan toman el valor verdadero.toman el valor verdadero.

  • Figura 2.2 Figura 2.2 Grafo asociado a Grafo asociado a FNCFNC11..

    1

    3

    5

    7

    2

    4

    6

  • REFERENCIASREFERENCIAS

    BellmanBellman, R. , R. AppliedApplied dynamicdynamic programmingprogramming. . PrincetonPrinceton, , N.JN.J., ., PrincetonPrinceton UniversityUniversity PressPress, 1962, 1962

    CookCook, S. (1971) , S. (1971) TheThe complexitycomplexity ofof theoremtheorem provingprovingproceduresprocedures, , ProcProc. . ThirdThird AnnualAnnual ACM ACM SymposiumSymposium ononthethe TheoryTheory ofof ComputingComputing, ACM, , ACM, NewNew YorkYork, 151, 151--158.158.

    GareyGarey, M , M andand Johnson, D.(1979) Johnson, D.(1979) ComputersComputers andandintractabilityintractability:: a a guideguide toto thethe theorytheory ofof NPNP--completenesscompleteness. . W.HW.H. . FreemanFreeman, San Francisco, 1979., San Francisco, 1979.

  • Johnson, D Y Johnson, D Y PapadimitriouPapadimitriou, C. Computacional , C. Computacional ComplexityComplexity(1985). IN: (1985). IN: LawlerLawler, E., , E., LenstraLenstra, J.,, J.,RinooyRinooy KanKan, D., D. TheTheTravelingTraveling SalesmanSalesman ProblemProblem. . WileyWiley--InterscienceInterscience Series in Series in DiscreteDiscrete MathematicsMathematics andand OptimizationOptimization. . ChichesterChichester..

    KarpKarp, R(1972) , R(1972) ReducibilityReducibility amongamong combinatorialcombinatorial problemsproblems, in , in R. E. R. E. MillerMiller andand J. W. J. W. TatcherTatcher, , edseds., ., ComplexityComplexity ofof ComputerComputerComputationsComputations, , PlenumPlenum, , NewNew YorkYork, 1972, 85, 1972, 85--103.103.

    PrimPrim, R. (1957) , R. (1957) ShortestShortest connectionconnection networksnetworks andand somesomegeneralizationsgeneralizations. . BellBell SystSyst. . TechTech. J. . J. 36, 1389.36, 1389.

    TuringTuring, A. (1936) , A. (1936) OnOn computable computable numbersnumbers, , withwith ananapplicationapplication toto thethe EntscheidungsproblemEntscheidungsproblem, , ProcProc. . LondonLondon MathMath. . SocSoc., Ser. 42, 230., Ser. 42, 230--265.265.

    WilfWilf, H. (1986) , H. (1986) AlgorithmsAlgorithms andand ComplexityComplexity. . PrenticePrentice Hall, Inc. Hall, Inc. EnglewoodEnglewood CliffsCliffs

  • PROBLEMAS PROPUESTOSPROBLEMAS PROPUESTOS..

    Utilice el algoritmo dado en el ejemplo 2.3 Utilice el algoritmo dado en el ejemplo 2.3 para resolver el siguiente problema: para resolver el siguiente problema: Maximizar {2Maximizar {2xx11 + 2+ 2xx22 + 2+ 2xx33 + 2+ 2xx44}tal que }tal que xx11+ 2+ 2xx22 + 2+ 2xx33 + + xx44 5 y 5 y xxjj = 0 = 0 11 jj = 1, 2, 3, = 1, 2, 3, 4}.4}.

    Utilice el algoritmo 2.3 para determinar el Utilice el algoritmo 2.3 para determinar el rbol de cobertura de costo mrbol de cobertura de costo mnimo del nimo del siguiente grafo.siguiente grafo.

    CAPTULO 2 INTRODUCCIN CONCEPTOS BSICOS REFERENCIAS PROBLEMAS PROPUESTOS.