Página 1 de 14 01 MEDIDAS DE COMPLEJIDAD En calculabilidad se ha demostrado que hay problemas para los que no existe algoritmo que los resuelva. El estudio de los problemas decidibles, en el límite de la indecibilidad, es de lo que trata la complejidad. Los problemas decidibles se clasifican según los recursos (espacio y/o tiempo) que consumen para ser resueltos usando siempre su mejor solución algorítmica conocida para la peor entrada posible. El concepto de intratabilidad Orden de magnitud / Complejidad O(g(n)): significa que al ejecutar un algoritmo en una computadora con los mismos datos, para valores incrementales de n (notación asintótica), los tiempos resultantes de la ejecución serán siempre menores que |g(n)|. Se estudia la complejidad del problema en sí no de un algoritmo que resuelve el problema. Pensaremos siempre que estamos trabajando con el mejor algoritmo para la peor entrada. O(1) < O(log n) < O(n) < O(n log n) < O(n 2 ) < O(n3 ) < O(2n ) De menor a mayor complejidad. O(1) : Extraer cualquier elemento de un vector (indexación). O(log n) : Búsqueda en un vector ordenado. O(n) : Recorrer un vector. O(n log n) : Búsqueda en un vector ordenado. O(n 2 ) : Ordenar un vector. O(n 3 ) : Ordenar y recorrer un vector. O(2n ) : complejidad exponencial. (Problemas NP). Un clasificación de los problemas decidibles puede ser los órdenes de magnitud más habituales expresados arriba. Problemas intratables: Son problemas decidibles que necesitan tantísimo tiempo para resolverse que no son factibles ni prácticos (según que casos). Ejemplo de utilidad: claves de seguridad. Problema intratable: No existe un algoritmo de tiempo polinómico que resuelve el problema. Problemas tratables: Son problemas decidibles que usan un tiempo razonable para resolverse. Problema tratable: Sí existe un algoritmo de tiempo polinómico que resuelve el problema. La frontera entre estos dos tipos de problemas decidibles es la misma que entre las funciones polinómicas y las funciones exponenciales. La frontera será tanto mayor cuanto mayor sea el valor de la entrada. Los problemas intratables suponen que tienen, al menos, un algoritmo de tiempo exponencial que hace no factible su uso práctico. Al estar tratando con algoritmos con la “peor entrada” de todas las posibles puede ocurrir que para alguna entrada “no tan mala” el problema pueda resolverse o que el tiempo necesario para resolverse no sea, necesariamente, exponencial. Esto permite un uso práctico puntual (optimización). No obstante, no suele ser habitual que esto suceda. 1) La intratabilidad de un problema es independiente de la codificación y del modelo de cálculo. Página 2 de 14 2) Los diferentes modelos abstractos de cálculo pueden simularse entre si con una pérdida polinómica de eficiencia como máximo. 3) Todos los modelos de cálculo son equivalentes respecto a la complejidad temporal. Esto permite estudiar los problemas sin tener que preocuparnos de la “máquina” que estemos usando. No determinismo Modelo de Cálculo Recurso a medir o acotar La complejidad de un problema viene especificada por Cota o función correspondiente Modo de Computación Modos de Computación: 1) Determinista: La velocidad media de un coche en función del tiempo y el espacio es determinista: v = x / t. 2) Indeterminista: las llegadas en una cola de un banco es indeterminista, sigue un proceso aleatorio. Opción no determinista: es el conjunto de transiciones posibles para la misma situación inicial y las evoluciones diferentes asociadas de la función de transición. Si para cada situación diferente hay una sola regla de transición posible la máquina es determinista. Las máquinas indeterministas aceptan una entrada si existe, al menos, una secuencia de opciones no deterministas que hace que la respuesta al problema sea “SI”. Con las máquinas indeterministas nos ahorramos explicitar todas las combinaciones posibles. Con las máquinas deterministas tenemos que especificar todas y cada una de las combinaciones posibles. Instrucción de opción no determinista: es una nueva instrucción del modelo de cálculo abstracto lenguaje de programación no determinista. Esta instrucción está asociada a un número fijo de alternativas y para cada una de ellas el algoritmo sigue un camino distinto y, al final, decide aceptar o no la entrada. Página 3 de 14 Algoritmo no determinista: Sea L un lenguaje. Dada la entrada x, es posible convertir cada instrucción de opción no determinista en una opción determinista tal que el algoritmo aceptará , x L. x L, el algoritmo no aceptará la entrada. LAS MÁQUINAS SÓLO PUEDEN RESOLVER PROBLEMAS DE COMPLEJIDAD O COSTE POLINÓMICO LA RELACIÓN ENTRE EL TAMAÑO DEL PROBLEMA Y SU TIEMPO DE EJECUCIÓN ES POLINÓMICA Relación tamaño del problema / tiempo de ejecución es polinómica. Problemas tratables que pueden resolverse con algoritmos deterministas en tiempo de Clase P ejecución polinómico respecto de la entrada. Problemas decidibles por una MT determinista en tiempo de ejecución polinómico. Relación tamaño del problema / tiempo de ejecución es factorial o combinatoria. Problemas que pueden resolverse con algoritmos NO deterministas en tiempo de ejecución Clase NP polinómico respecto de la entrada. Problemas decidibles por una MT INdeterminista en tiempo de ejecución polinómico Una máquina indeterminista puede buscar una solución en un espacio de tamaño exponencial con mucho menos esfuerzo. En la clase NP hay muchos problemas de búsqueda y optimización para los que se estudia si existen mejores soluciones que las encontradas. Para todos ellos la verificación de la solución puede realizarse en tiempo polinómico recorriendo todas las salidas hasta encontrar la que resuelve el problema. Clases de complejidad Interesa la clase más pequeña a la que un problema para estudiar su complejidad + facilmente Función de Complejidad: f ( n) Temporal Espacial Determinista Indeterminista TIME ( f (n)) SPACE ( f (n)) NTIME ( f (n)) NSPACE ( f (n)) Inclusiones entre clases de complejidad SPACE ( f (n)) NSPACE ( f (n)) TIME ( f (n)) NTIME ( f (n)) SPACE ( f (n)) SPACE ( g (n)) NSPACE( f (n)) NSPACE( g (n)) TIME ( f (n)) TIME ( g (n)) NTIME ( f (n)) NTIME ( g (n)) Comentario TIME ( f (n)) SPACE( f (n)) El tiempo está acotado superiormente por el espacio SPACE( f (n)) TIME(c f ( n) ) f (n) log2 (n) NTIME( f (n)) TIME(c f ( n) ) Clases usadas en programación TIME (log n) f g Los algoritmos no deterministas de coste polinómico pueden necesitar un coste exponencial en un algoritmo determinista equivalente. Comentario Clase de los algoritmos con complejidad temporal Página 4 de 14 TIME (n) TIME (n log n) TIME(n2 ) Clases de complejidad parametrizada TIME(nk ) j 0 TIME(n j ) NTIME(nk ) j 0 NTIME(n j ) logarítmica. Ejemplo: Búsqueda dicotómica. Clase de los algoritmos con complejidad lineal. Ejemplo: Búsqueda lineal. Clase de los algoritmos con complejidad nlogn. Ejemplo: Búsqueda heapsort. Clase de los algoritmos cuadráticos. Ejemplo: Ordenación por inserción o selección. Comentario Es la clase P. Es la clase NP. Problemas tipo de comparación entre complejidad temporal y espacial: Clave: Se debe cumplir SIEMPRE que O(temporal) O(espacial) Dado un problema de complejidad temporal O(n2), ¿puede tener complejidad espacial O(10n)? La complejidad temporal está limitada superiormente por la espacial, TIME(f(n)) SPACE(f(n)). En este caso tenemos que O(n2) < O(10n), por lo tanto, el problema de complejidad temporal O(n 2) si puede tener complejidad espacial O(10n). Dado un problema de complejidad temporal O(n4), ¿puede tener complejidad espacial O(n3)? No, porque O(n4) > O(n3) y la complejidad temporal está limitada superiormente por la complejidad espacial. Dado un problema de complejidad temporal O(n4), ¿puede tener complejidad espacial O(n4)? Sí, ya que la complejidad temporal de un problema puede ser menor o igual a la complejidad espacial. Dado un problema de complejidad espacial O(n2), ¿puede tener complejidad temporal O(10n)? No, ya que O(10n) > O(n2), y la complejidad temporal está limitada superiormente por la complejidad espacial. Dado un problema de complejidad espacial O(5n+2), ¿puede tener complejidad temporal O(n)? Sí, ya que aunque O(5n+2) > O(n) la complejidad espacial no está limitada superiormente por la complejidad temporal. Clases de complejidad en espacio PSPACE SPACE(nk ) NPSPACE NPSPACE(nk ) Clases por debajo de la complejidad lineal L SPACE (log n) NL NSPACE(log n) Clases de complejidad exponencial Comentario Equivalente a la clase P Equivalente a la clase NP Comentario Comentario Página 5 de 14 Problemas para los que existe un algoritmo de complejidad temporal exponencial. EXP TIME(2 polinomio ) , siendo polinomio nk Existen problemas abiertos sobre las comparaciones entre clases de complejidad diferente. Lo difícil es saber si las inclusiones son estrictas o no. Por ejemplo: podemos ver con claridad que la clase P es un subconjunto propio de la clase EXP. Sabemos que P NP, pero nadie ha podido demostrar lo siguiente: ¿P = NP?. Supondría que todo problema NP se podría solucionar con un algoritmo determinista de complejidad polinómica. ¿P NP?. Supondría encontrar un problema NP que no esté en P, es decir, un problema para el que exista un algoritmo no determinista de complejidad polinómica para el que nunca pueda encontrarse uno determinista de la misma complejidad. No existe un método general para convertir un algoritmo no determinista en otro equivalente determinista. Se sabe que: si un problema es NP entonces existe un polinomio p tal que el problema puede resolverlo un algoritmo determinista de complejidad O(2 p( n) ) La demostración supone simular todas las opciones no deterministas probando todas las posibilidades hasta encontrar una, si existe, que nos lleve a la aceptación. El número de posibilidades es de órden exponencial. Se puede reducir usando algunas técnicas, pero siempre seguirá siendo de órden exponencial. Se ha demostrado que: PSPACE = NPSPACE, el no determinismo no aporta potencia adicional desde el punto de vista de la complejidad polinómica en espacio. La instrucción no determinista no facilita la resolución de más problemas en el marco de la complejidad en espacio polinómico. El no determinismo tiene menos poder respecto al espacio que respecto al tiempo. Las relaciones conocidas entre las clases de complejidad son : L P NP PSPACE NPSPACE Algunos problemas intratables Se trabaja con problemas de decisión. La correspondencia entre los problemas de decisión y los lenguajes viene dada por la codificación empleada para especificar las instancias del problema. La codificación permite describir tres palabras: las que no pertenecen al lenguaje reconocido, las que pertenecen al lenguaje reconocido y que generan una salida “No” y, por último, las que pertenecen al lenguaje reconocido y generan la salida “Si”. A continuación vemos problemas de decisión clásicos clasificados como intratables, que pertenecen a la clase NP...¿o quizás, a alguna más pequeña dentro de ésta? Problema del viajante de comercio (TSP) Problema de Decisión: Dado un grafo completo etiquetado positivamente, ¿existe un circuito hamiltoniano de coste acumulado no superior a B? Página 6 de 14 Para demostrar que pertenece a la clase NP nos basta tener una instrucción de opción no determinista de una entre todas las posibles permutaciones. El cálculo consiste en una operación lineal, por tanto de complejidad polinómica. Si no existiera una intrucción de opción no determinista tendríamos que probar todas las permutaciones. Esto supone un algoritmo de complejidad exponencial, por tanto, el problema no pertenecería a la clase P. Es decir, sería un problema intratable por que no existe un algoritmo de complejidad polinómica que lo resuelva. No se ha demostrado que tenga o que no tenga solución algorítmica determinista de coste polinómico. Por tanto, es intratable. Problema de Optimización asociado: Dado un grafo completo etiquetado positivamente, ¿existe un circuito hamiltoniano de mínimo coste?. El problema de optimización tiene, como mínimo, la misma complejidad que el de decisión. Problemas Intratables Casos Especiales Variación Tratable (tiempo polinómico) Si todos los vértices son de grado 2. No tiene. Circuito hamiltoniano en un grafo dado Cuello de botella: la arista mayor de cota B Cartero chino para grafos mixtos: ciclo que incluya toda Si todas las aristas son de un mismo tipo. Es decir, arista dirigida y no dirigida como mínimo una vez con si el grafo es dirigido o no dirigido. una longitud total B Cartero rural: circuito que incluya un subconjunto de las No tiene. aristas del grafo con una longitud B Si el circuito simple es de longitud K y todas las Circuito simple de longitud > K etiquetas son positivas. Si el grafo es acíclico y dirigido. El Camino más largo: camino simple de longitud > K Si se considera el camino más corto y las etiquetas son todas positivas. Problema del coloreado de un grafo Problema de Decisión: Dado un grafo se trata de asignar un color a cada vértice de forma que dos vértices adyacentes nunca tengan el mismo color. Existe un algoritmo no determinista de complejidad polinómica (usamos la instrucción de opción no determinista para asignar un color a cada uno de los vértices que forman un par de adyacencia. Para comprobar que se ha asignado bien los colores requerimos una complejidad cuadrática –dos a dos-, por tanto polinómica) que lo resuelve. Esto supone que es un problema NP. Si tenemos que considerar todas las posibles combinaciones para colorear los vértices la complejidad es exponencial al ser el número de combinaciones exponencial. Como no hay un algoritmo determinista de complejidad polinómica que lo resuelva no es un problema P. Por tanto, se considera un problema intratable. Variación tratable: Si todos los vértices tienen un grado 3 o el número de colores = 2 el problema puede resolverse en tiempo polinómico. Problema de Optimización asociado: Encontrar el valor mínimo de K para que el grafo sea K-coloreable. Problema de la mochila Problema de Decisión: Página 7 de 14 Dada una mochila y un conjunto de objetos con un tamaño y valor asociado dado, ¿Existe un subconjunto de los objetos cuyo tamaño no exceda el tamaño de la mochila y que su valor asociado total y que su valor asociado total sea superior a una valor dado B? Existe un algoritmo no determinista que hará uso de la instrucción de opción no determinista con un coste lineal (recorrido de dos tablas) que lo resuelve. Es un problema NP. Pero si tenemos que tratar todos los subconjuntos posibles tenemos un coste exponencial por que el total de subconjuntos n elementos es 2n . Necesitaríamos un algoritmo determinista de coste exponencial. El problema no pertenece a P. Es Intratable. Variación tratable: Este problema admite un cierto margen de tratabilidad usando técnicas como la programación dinámica. Problema de Optimización asociado: ¿Cuál es el subconjunto de tamaño total no superior al de la mochila con un valor asociado total máximo?. 02 REDUCCIÓN Y COMPLETITUD P NP por lo que existen problemas, como la ordenación y búsqueda, que son NP y, por tanto, también P siempre que sea cierto que NP P . Ya sabemos que NP Lo que interesa es estudiar el subconjunto de problemas que siendo La teoría de la NP completitud se centra en demostrar : no son P , NP P . Si NP P, el problema pertenece a NP - P . La reducibilidad consiste en encontrar un problema, más sencillo de tratar y del que ya sepamos sus características, que sea como mínimo tan difícil como el que se pretende estudiar. Reducción en tiempo polinómico Una reducción polinómica de un problema como: P1 en un problema P2 es una función f (siendo NP P ) definida f : Entradas P1 Entradas P2 que cumple: f. x : Respuesta P1 ( x) " Sí " Respuesta P2 ( f ( x)) " Sí " 1) Existe un algoritmo en tiempo polinómico que calcula 2) de forma gráfica: REDUCCIÓN DEL PROBLEMA P1 AL PROBLEMA P2 Algoritmo que resuelve P1 f(x) x f Algoritmo que resuelve P2 Si/No Página 8 de 14 Notacionalmente: P1 p P2 Propiedades: Si P1 p P2 , si P2 P P1 P Si P1 p P2 , si P2 NP P1 NP Si P1 p P2 , si P2 P P1 P Si P1 p P2 , si P2 NP P1 NP Si P1 p P2 y P2 p P3 P1 p P3 Las clases P y NP son CERRADAS para la REDUCCIÓN POLINÓMICA P1 p P2 Si P2 P P P 1 Problema Circuito Hamiltoniano = PCH Problema Viajante de Comercio = PVC ¿ PCH p PVC ? : a) f que transforme cada instancia de PCH en una instancia de PVC. b) Condiciones: b1) ¿Tiene f coste polinómico?: Se trata de llenar y buscar en una matríz. Una instancia de PCH es G (V , E ) donde V n. La instancia correspondiente de PVC es un conjunto de cuidades C idéntico a V . Para cada par de ciudades la Esto supone coste cuadrático, es decir, polinómico. distancia entre ellas será 1 si existe una arista entre esas ciudades en G y será 2 si b2) G contiene un circuito hamiltoniano hay una ruta por todas las ciudades en f (G ) tal que su longitud no es mayor que B no existe una arista en G. ( ) Función f de transformación Si hay un circuito hamiltoniano entonces hay una ruta en f (G ) Entrada en PCH f Entrada en PVC de longitud máxima n B, nunca mayor por la propia definición 1 si ( v , v ) E i j de f . C V, B V n d (vi , v j ) G (V , E ) 2 si ( v , v ) E i j () Si hay una ruta en f (G ) de longitud máxima B, para poder pasar por todas las ciudades y volver a la primera en G todas las distancias deben ser 1 por la definición de f . Y esto define un circuito hamiltoniano. El PCH es reducible polinómicamente al PVC Si PVC puede resolverse en tiempo polinómico, PCH también PCH p PVC Si PVC es intratable, PCH también PVC es como mínimo tan difícil como PCH. Equivalencia polinómica: P1 p P2 y P2 p P1 Completitud:Un conjunto es completo si es el más difícil de su clase. Dado un problema P y una clase C, decimos que el programa es C-completo cuando todos los problemas de la clase C se pueden reducir polinómicamente a P. Sea L una clase (conjunto de conjuntos). A es m-completo para L si A L B L B m A Página 9 de 14 Un problema p es X-completo si todo problema de la clase X se puede reducir a p. propiedades: 1) A es m-completo para L BL B es m-completo para L A m B 2) K es m-completo para la clase ER 3) Los conjuntos m-completos forman un m-grado Los problemas completos ocupan un lugar central en la teoría de la complejidad. Sólo cuando hemos demostrado que un programa es completo en su clase podemos considerar que está definitivamente clasificado. Los problemas completos son los máximos representantes de su clase. Si existe un problema P completo para dos clases C y C’ cerradas respecto la reducción, entonces C = C’ ¡¡ Si algún problema NP-completo se demuestra que pertenece a P habremos demostrado que P = NP !! 03 LA CLASE NP-COMPLETO Todos los problemas NP tienen en común que podemos conjeturar la solución con la potencia de la instrucción de opción no determinista y que es posible en tiempo polinómico verificar la posible solución. Pero, cuando no podemos ir a “tiro hecho” tenemos que recorrer todas las posibles soluciones y eso nos supone un coste exponencial. Dado que un algoritmo no determinista de tiempo polinómico no es más que una “herramienta conceptual” no podemos usarla en la práctica. No hay lenguaje de programación que incluya una instrucción de opción no determinista. ¿Por qué no usar la clase EXP? Por que NP EXP, es decir hay problemas EXP que no están en NP. La clase NP está compuesta por la sublcase NP-completo y NP-difícil. Los problemas de la subclase NP-completo son los últimos de la clase NP por lo que solamente podrán resolverse en tiempo polinómico si alguien demuestra que P = NP. Las técnicas usadas para “resolver” este tipo de problemas desde el punto de vista de la programación son: 1) Aproximación: si la solución exacta es intratable, siempre podremos llegar a un consenso del intervalo que consideramos “solución”. 2) Caso especial: probar hasta dar con una entrada que permita conseguir una solución en tiempo polinómico. 3) Coste medio temporal: en lugar de solucionar para el tiempo completo acotar el problema temporalmente para obtener una “solución”. Página 10 de 14 4) Heurística: usar la probabilidad para obtener una “solución”. 5) Acotar la entrada: usar algoritmos exponenciales para entradas reducidas “artificialmente”. Definiciones: NP-difícil = El problema A ( o NP), es NP-difícil cuanto todo problema NP se puede reducir polinómicamente a él. B NP, B p A Es decir, como mínimo es tan difícil como cualquier problema de la clase NP, pero puede ser más difícil. NP-completo = Si A NP y A NP-difícil. Si A NP B NP, B p A Convenios: Si A P A NP Si A NP dificil A NP A NP completo Como P NP Si A NP puede que A P Convenio: Convenio: Se dice que NP dificil resto( NP dificil - NP) Se dice que NP NP - P Se dice que P resto( NP - P) Gráfica: EXP NP NP.completo NP.difícil P Suponemos que P NP Página 11 de 14 NP P EXP L NP-Completo L-Comp. P Completo NP-difícil EXP-Completo Teorema de Cook: Hasta 1971 no se demostró la existencia del primer problema NP-completo por parte de Cook. Actualmente todos los problemas NP-completos conocidos usan tiempo exponencial con respecto al tamaño de la entrada. De encontrarse una solución polinómica (P) para un problema NP-completo estarían, de forma automática, todos los problemas NP resueltos en tiempo polinómico….¡El fin de la criptografía!. Problema de satisfactibilidad (SAT) Problema de decisión: Dado un conjunto de variables lógicas y una fórmula que las relaciona, ¿existe alguna combinación de valores lógicos que satisfaga la fórmula?. El problema es NP por que podemos encontrar un algoritmo NO determinista que determine si la fórmula es cierta conjeturando con las diferentes asignaciones de las variables y, para verificar la fórmula, se usan las tablas de verdad correspondientes. El coste es, por tanto, polinómico. Un problema NP-difícil es una optimización de un problema de decisión NP-completo. Para demostrar que el problema es NP-difícil Cook se ¡partió la cabeza!, y lo consiguió... Por tanto, el SAT es el primer problema clasificado como NP-completo. Teorema: A NP-completo si A NP y B NP-completo reducible polinómicamente al problema A. Si A NP B NP completo, B p A Demostración: Tenemos un problema A NP del que queremos demostrar si NP-completo. Tomamos cualquier problema C NP. Sabiendo que B NP-completo se cumple que C p B. Página 12 de 14 Obtenemos una reducción polinómica del problema B al problema A. Es decir, B p A Aplicando la transitividad de la reducción polinómica tenemos que C p B y B p A C p A Como para cualquier C NP tenemos que C p A y que A NP, podemos concluir que A NP-completo. c.q.d. ¡Atención!: Con obtener la reducción polinómica de un NP-completo a otro problema NP, habremos demostrado que el problema NP es, también; NP-completo. A continuación vamos a enunciar los SEIS problemas NP-COMPLETOS BÁSICOS que son los más usados para hacer las reducciones polinómicas. Problema de la 3-satisfactibilidad (3SAT) Problema de decisión: Dado un conjunto de variables lógicas y una fórmula que las relaciona que tiene como restricción que cada claúsula tenga 3 literales, ¿existe alguna combinación de valores lógicos que satisfaga la fórmula?. El mismo problema con la restricción de 2 literales por claúsula es un problema P. Para demostrarlo se realiza una reducción polinómica a partir del problema SAT. Problema del matching de 3-dimensiones (3DM) Problema de decisión: Dados tres conjuntos disjuntos del mismo tamaño, ¿existe alguna forma de agrupar todos los elementos de forma que en cada trio haya solamente uno de cada conjunto sin repeticiones?. El mismo problema con la restricción de 2 conjuntos es un problema P. Para demostrarlo se realiza una reducción polinómica a partir del problema 3SAT. Problema del recubrimiento de vértices (VC) Problema de decisión: Dados un grafo y un entero positivo K menor o igual que el número de vértices del grafo, ¿existe un recubrimiento de tamaño K o menor en el grafo?. El problema de optimización asociado que pide el valor mínimo de K que cumpla la condición es, como mínimo, tan difícil como el problema dado y aumenta su interés en cuanto al estudio desde un punto de vista práctico. Para demostrarlo se realiza una reducción polinómica a partir del problema 3SAT. Problema del clique Problema de decisión: Dados un grafo y un entero positivo K menor o igual que el número de vértices del grafo, ¿existe un clique de tamaño K o mayor en el grafo?. El problema de optimización asociado que pide el quicle máximo es, como mínimo, tan difícil como el problema dado y aumenta su interés en cuanto al estudio desde un punto de vista práctico. Este problema está estrechamente relacionado con el anterior, el VC. Teorema: C es un clique de G V – C es un recubrimiento de vértices del complementario de G. La NP-completitud de un problema implica la del otro. Página 13 de 14 Problema del circuito hamiltoniano (CH) Problema de decisión: Dado un grafo, ¿contiene G un circuito hamiltoniano?. Para demostrarlo se realiza una reducción polinómica a partir del problema VC. Problema de la partición Problema de decisión: Dado un conjunto que contiene elementos del mismo tamaño, ¿es posible dividir el conjunto en dos subconjuntos que tengan el mismo tamaño acumulado?. Este problema se usa habitualmente con problemas con parámetros numéricos. Para demostrarlo se realiza una reducción polinómica a partir del problema 3DM. ¡Atención!: Todos estos problemas son teóricamente NP-completos (intratables), pero en la práctica es posible hacerlos casi tratables. Esquema: SAT 3SAT 3DM Partición VC CH Clique Técnicas básicas de demostración de NP-completitud: Dado un problema de decisión D para poder decir que D NP-completo tenemos que demostrar: 1) Que D NP: encontrar un algoritmo no determinista de tiempo polinómico. (Conjetura no determinista y Verificación en tiempo polinómico) 2) Seleccionar un problema D’ NP-completo de entre los seis problemas NP-completos básicos. 3) Construir una función : D’ D. 4) Demostrar que es una reducción polinómica ( para las entradas x y (x), tanto D como D’ responden lo mismo) y que el coste de es polinómico (algoritmo determinista). Demostración por Restricción: Dado D, consiste en encontrar un subproblema D’ que sea uno de los NP-completo básicos conocidos. La función de reducción consistirá en una especificación de restricciones adicionales a las instancias del problema D para que el problema resultante sea idéntico al problema D’. Ejemplo: Demostración de que el problema de la mochila es NP-completo. Problema de la mochila Problema de Decisión: Dada una mochila y un conjunto de objetos con un tamaño y valor asociado dados: ¿Existe un subconjunto de los objetos cuyo tamaño no exceda el tamaño de la mochila y que su valor asociado total sea superior a un valor dado B? Página 14 de 14 1) Demostración de que es NP: Existe un algoritmo no determinista que hará uso de la instrucción de opción no determinista con un coste lineal (recorrido de dos tablas) que lo resuelve. Es un problema NP. 2) Selección de un problema NP-completo básico conocido que se adapte al estudiado: Para demostraciones con instancias numéricas el problema recomendado es el de la Partición. 3) Construcción, por restricción, de la función : Tomamos todos los objetos de la mochila que tienen el mismo número tanto para expresar su tamaño como su valor. Obligamos, además, que los totales de tamaño y valor sean iguales a la mitad del sumatorio de los valores de todos los elementos. Con esta restricción el problema de la mochila y el de la partición es el mismo. 4) Demostración de que la función es una reducción polinómica: En el paso anterior se ha conseguido que para entradas x y f(x), tanto del problema de la mochila como el de la partición; respondan lo mismo. Es, por tanto, una reducción. La función obtenida en el punto anterior es una función de identidad. La identidad tiene un coste polinómico. Podemos afirmar que la mochila es NP-completo al ser una restricción del problema de la partición.