Você está na página 1de 18

Parte III Problemas NP

141

Captulo 10 Problemas Tratables e Intratables


Los problemas computacionales los podemos dividir en dos conjuntos

Tratables Problemas para los cuales existe un algoritmo de complejidad


polinomial.

Intratables Problemas para los que no se conoce ningn algoritmo de complejidad polinomial. A los problemas tratables se les conoce tambin como problemas P (de orden polinomial). Asimismo a los problemas no tratables se les llama tambin NP (de orden no determinstico polinomial). Entre estos ltimos podemos encontrar los siguientes ejemplos: Agente Viajero. Caminos Hamiltonianos. Encontrar un camino en un grafo que pasa una sola vez por cada nodo. O(n!). Caminos Eulerianos. Encontrar un camino en un grafo que pasa una sola vez por cada arco.

10.1.

Algoritmos No Deterministicos

Hasta el momento siempre hemos diseado algoritmos determinsticos. En un algoritmo determinstico, el resultado es nico en el sentido de que cada instruccin tiene un resultado conocido dependiente del contexto. Podemos denir otra categora, la de algoritmos no determinsticos donde algunas 143

144

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

instrucciones den resultados no determinados de antemano. Para ello aumentaremos nuestro conjunto de instrucciones con las siguientes tres:

Elige(S). Es una funcin que regresa uno de los elementos de S. Si S={ Mercurio, Venus, Tierra } y P=Elige(S) entonces P=Mercurio o P=Venus o P=Tierra. xito. Notica una ejecucin exitosa. Fracaso. Notica una ejecucin no exitosa.
Algoritmos no determinstico.

Ejemplo 37 Bsqueda de un elemento x en un arreglo A. El algoritmo 40


muestra un algoritmo de bsqueda de manera no determinstica.

func BuscaND (A, x, indice) comienza


i elige(1, ..., n); si A[i] = x entonces indice i; Exito;

otro

is termina.

F racaso;

Algoritmo 40: Bsqueda no Deterministica

10.2. Interpretaciones
Podemos interpretar la instruccin Elige de las siguientes maneras: 1. Elige es mgica y siempre devuelve el valor que necesitamos. 2. Al llamar a elige, el programa se multiplica, despus del llamado hay tantas copias como valores pueden devolver el llamado. La ejecucin de la instruccin xito detiene todas las copias del programa. La ejecucin de la instruccin Fracaso detiene la copia del programa que la ejecuta.

10.2. INTERPRETACIONES

145

Cualquiera de las interpretaciones es equivalente. Pero no deben de utilizarse para el diseo de algoritmos.

Ejemplo 38 Ordenamiento de un arreglo A con n elementos. proc OrdenaND (A, n) comienza para i = 1 a n haz zah

B[i] elige(A); A A B[i];

termina. Algoritmo 41: Ordena no deterministico. Elige mgica


El algoritmo 41 fu diseado pensando en la primera interpretacin. Pero si utilizamos la segunda interpretacin el algoritmo regresar siempre exito lo cual es erroneo.

Exito;

proc OrdenaND (A, n) comienza para i = 1 a n haz zah

B[i] elige(A); A A B[i];

i 1;

mientras i < n B[i] B[i + 1] haz


i i + 1; si i = n entonces Exito;

otro

termina. Algoritmo 42: Ordena no deterministico. Multiprocesos


El algoritmo 41 por otro lado regresa el resultado correcto independientemente de la interpretacin de Elige.

F racaso;

146

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

Ejemplo 39 Se tiene un conjunto de N enteros y se busca un subconjunto

en donde la suma de los elementos sea M . El problema de decisin de los subconjuntos consiste en decidir si para un conjunto A dado existe un subconjunto tal que los elementos sumen M . El algoritmo 43 muestra la solucin para este problema.

proc DecisionSubconjuntoND (A, n, M, res) comienza


vacum 0; mientras vacum < M haz val elige(A); A A val; vacum vacum + val;

zah si vacum = M entonces otro is termina.

res verdad; Exito; res F also; F racaso;

Algoritmo 43: Decisin de subconjuntos Ejemplo 40 Problema de la mochila entero. Cuando se habl de los algorit-

mos vidos se vi el problema de la mochila donde era posible poner fracciones de los objetos en la mochila. Aqu eso no es posible y tenemos n objetos: con valor vi , 1 i n con peso pi , 1 i n La solucin esta dado por la tupla

(x1 , . . . , xn ) con xi {0, 1}

10.2. INTERPRETACIONES

147
n

sujeta a

xi p i M
i=1

y maximizando

xi v i .
i=1

El problema de decisin de la mochila consiste en decidir si para un conjunto de objetos tenemos un subconjunto tal que la restriccin de pesos se cumpla y
n

xi vi = k.
i=1

proc DecisinMochila(v, p, M, K, res) comienza


vacum 0; pacum 0; para i = 1 a n haz x[i] elige(0, 1); vacum vacum + v[i] p[i]; pacum pacum + p[i] x[i];

zah si (pacum M ) (vacum K) entonces otro termina.

res verdad; Exito; res f also; F racaso;

Algoritmo 44: Problema de la mochila Ejemplo 41 Sean x1 , x2 , . . . , xn variables booleanas, una literal es una variable o su negacin. Una frmula del clculo Proposicional se forma con literales y operadores (conjuncin) y (disyuncin). Una frmula de clculo proposicional est en forma normal conjuntiva (CNF) si se expresa como

C1 C2 CR

148

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

donde Ci son frmulas que constan de literales y operadores. El Problema de Satisfacibilidad consiste en determinar si una expresin E(x1 , x2 , . . . , xn ) en forma CNF es verdadera para una asignacin de valores de verdad a sus variables. E(x1 ) para x1 x1 no es satisfacible.

proc SatisfacibilidadND comienza para i = 1 a n haz

zah si evalua(F, x) entonces otro is termina.

x[i] elige({v, F });

res verdad; Exito; res f also; F racaso;

Algoritmo 45: Satisfacibilidad Denicin 5 P es el conjunto de problemas para los cuales existe una solucin algortmica deterministica de complejidad polinomial. cin no determinstica de complejidad polinomial.

Denicin 6 NP es el conjunto de problemas para los que existe una soluTeorema 17 (Cook) Cualquier problema no determinsticamente polinomial se reduce en tiempo polinomial al problema de la satisfacibilidad (SAT). Es decir X N P X SAT .

Teorema 18 (Cook-Levin) Satisfacibilidad esta en P N P = P


Es evidente que P N P pero N P P ?

lenguaje L2 es una funcin f : que satisface las siguientes 2 1 1 dos condiciones:

Denicin 7 Una transformacin polinomial de un lenguaje L1 a un 1

10.2. INTERPRETACIONES

149

1. Existe una maquina de turing deterministica (DTM) que computa f. 2. Para toda x , x L1 si y solo si f (x) L2 . 1 Escribiremos L1 L2 para signicar que L1 se reduce a L2 .

Ejemplo 42 Ordenar un arreglo que se reduce a encontrar el menor elemento.

Suponemos que existe Menor(i, j ), i j, 1 i, j n que devuelve el elemento menor del segmento del arreglo A[i . . . j].

proc Ordena(A, n) comienza para i 1 a n haz zah termina.

j M enor(i, n) > O(nR ) > O(n( k + 1))P intercambia(i, j)O(1)Ordenaalf aobtenermenor

Denicin 8 Un problema es NP duro si satisfacibilidad se reduce a l Denicin 9 Un problema es NP completo si es NP duro y est en NP
N P completo N P Duros? SI N P Duros N P completos? NO Por demostrar NP Duros N P Completos Usamos el problema del paro que consiste en decir si un programa se va detener o no para una entrada espacca. P.D. Halt N P D i.e S Halt Asumimos que existe AHalt P que resuelve el problema de paro. Necesitamos construir un algoritmo ASHalt P tal que genere un programa (y su entrada) que se detenga si la expresin es satisfacible y que no se detenga en el caso contrario. Obviamente As da V para expresiones satisfactibles y F para expresiones no satisfacibles. S Halt Halt NP Duros paro Halt N P NP Duros NP Completos

150

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

proc B(Exp, n) comienza

x (00...0) mientras (X (11...1)) Evalua(Exp, x) haz me(x) si Evalua(Exp, x) entonces

termina. proc S.Halt(Exp, n) comienza termina.

repite hasta (F also)

Escribe(B, Exp, n)

10.3. Problema de decisin del Clan


El siguiente es otro ejemplo de reducibilidad:

Ejemplo 43 Problema de decisin del Clique (Clan):

Dada una graca G =< V, A > un clique es una subgraca completa. El problema de decisin del clique consiste en decidir si una graca G tiene un clique de tamao K .
P.D. Clique es NPC i.e clique NP y S Clique 1)P.D. S Clique
0123 7654 G 7654 0123 A
3 3

0123 7654 E

0123 7654 C

Debemos construir As P proponemos el siguiente algoritmo de transformacion. Sea E = C1 C2 Ck co-variables booleanas X1 , X2 , . . . , Xk .

7654 0123 2 0123 7654 F B     5 8 9 =; ?>:< D

10.4. PROBLEMA DE LA COBERTURA DE NODOS Formamos G de la siguiente manera

151

V = {(l, i)| la literal l esta en la clausula Ci } A = {(l, i)}


Sea E = C1 C2 Ck con variables booleanas x1 , x2 , . . . , xk formadas G de la siguiente manera

V = {(l, i)| la literal l esta en la clusula Ci } A = {(l, i), (v, j)|i = j l = v}


P.D. La grca construida con el algoritmo AsClique de tamao k si y slo E es satisfacible. ) E es satisfacible P.D. G tiene un clique de tamao k Si E es satisfacible quiere decir que todas las clusulas pueden ser verdaderas simultaneamente i e que al menos una literal es verdadera en cada clusula para alguna asignacin de valores de verdad a las variables. Sea S =< l, i > | l es verdadera en la clusula Ci y S contiene un vrtice para cada i |S| = k y los vrtices en S estn conectados todos entre s (por construccin los vrtices en S y los arcos entre ellos forman un cliqu de tamao k ). ) Hipotesis G tiene un cliqu de tamao k . P.D. E es satisfacible. Sea S el conjunto de vrtices del cliqu |S| = k y S contiene un vrtice por clusula < l, i >, 1 i k . Si asignamos a l el valoe verdadero cuando sea una variable en x1 , . . . , xn y el valor falso cuando sea su negacin voy a tener una asignacin de variables de verdad que hacen verdaderos TODAS las clusulas E es satisfacible. Por lo tanto Cliqu es NPD.

10.4.

Problema de la cobertura de nodos

Un conjunto de vrtices es una cobertura de una grca G si todos los arcos de G inciden a un vrtice de la cobertura.

152
0123 7654 G

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES


0123 7654 E

7653 012? A4  ???  ??  ??  012 765? 4 3 7654 0123 0123 7654 C? F B ??  ??  ??   8 9 =; ?>:< D

Figura 14: Los vertices {A, B, C} son cobertura de la Grca G


El problema de la cobertura de nodos consiste en determinar si una grca G tiene una cobertura de tamao k . P.D. Cob NPC i.e Cob es NPD y Cob NP. 1) Cob es NPDuro i.e. S Cob Si demuestro Cliqu Cob y se que S Cliqu S Cob. P.D. Cliqu Cob. Suponemos que existe Acob P tenemos que construir AClique P . Proponemos el siguiente algoritmo ACliqueCob . Sea G =< V, A > construimos G =< V , A > tal que V = V y A =(i, j)|i, j V y(i, j)(N opertenece)A. P.D. G tiene un Cliqu de tamao k si y solo si G tiene una cobertura de tamao n k . ) G tiene un Cliqu de tamao k . P.D. G tiene una cobertura de tamao n k . Sea S el conjunto de vrtices que forman el Cliqu en G |S| = k . Por construccin los arcos en G unen un vrtice en S con uno que no est en S o dos vrtices fuera de S todos los arcos G inciden al menos a uno de los n k vrtices que no estan en S G tiene una cobertura de tamao n k . ) G tiene una cobertura de tamao n k . P.D. G tiene un Cliqu de tamao k . Sea S el conjunto de vrtices que forman la cobertura |S| = n k . Todos los arcos en G inciden a un vrtice en S , es decir que entre los k arcos restantes no hay ningn arco por construccin que en G esos arcos estan completamente conectados G tiene un cliqu de tamao k . Cliqu

10.4. PROBLEMA DE LA COBERTURA DE NODOS

153

Cob y como S Cliqu S Cob Cob es NPD Para demostrar que un problema es NPDuro, tengo que demostrar que S L. Escoger un problema M NPDuros Asumir que existe un algoritmo AL que resuelve el problema L y que AL P . Mostrar que se puede encontrar una instancia de L a partir de una instancia de M en tiempo polimonial determinstico. Mostrar que a partir de la respuesta dada por AL a la instancia de L permite obtener (en tiempo polinomial determinstico) la respuesta a la instancis de M que se alimento a AM L . Dado que M NPDuros, sabemos que S M y como se demostr que M L. S L S NPDuros. Para demostrar que un problema L es NP Completo: Mostrar que L es NPDuros. Construir un algoritmo en NP que resuelva L. Problema de desicin del nmero cromtico, consiste en decidir si una grca G tiene una coloracin de tamao m. P.D Col es NPCompleto. i) Col es NPDuro i.eS Col Asumir que existe ACol P . Tratar de construir AS P Tenemos que dar ASCol P que transforma una instancia del problema de satisfacibilidad en una instancia del problema de decisin del nmero cromtico. Consideramos que E CN F3 (cada clusula tiene a lo ms 3 literales). Suponemos tambin que hay n variables y que n > 3. Dada una expresin E construimos la grca G de la siguiente manera.

154

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

V = x1 , x2 , . . . , xn .Un vrtice por variable booleana. x1 , x2 , . . . , xn .Un vrtice par variable booleana negada. y1 , y2 , . . . , yn .Un vrtice adecuado por variable booleana. c1 , c2 , . . . , cp .Un vrtice por clusula. A = (xi , xi )|1 i n (yi , xj )|i = j1 = i, j n (yi , xi )|i = j1 i, j n (yi , yj )|i = j1 i, j n (cj , xi )|xi no cj , 1 j k, i i n (cj , xi )|xi no cj , 1 j k, i i n

P.D. E es satisfacible si y solo si G tiene una coloracin de tamao n + 1. Hipotesis E es satisfacible G tiene una coloracin de tamao n + 1. Observe que los vrtices yi forman un Cliqu de tamao n necesitamos n colores para colorarlos. Supongamos que a cada yi se leasigna el color i. Dado que yi no es adyacente a xi , ni a xi , una de estas dos literales puede ser coloreads con el color i, la otra requiere un color adicinal. Llamaremos al color n + 1 el color falso y a los otros colores verdaderos. Ohserve que si una literal esta coloreda con el color falso, su negada esta coloreada con un color verdadero. La coloracin as efectuada equivale a una asignacin de valores de verdad a las variables de E . Cada clusula contiene a lo ms 3 literales y hay al menos n variables n > 3. Cada Ci es adyacente almenos un par xi , xj , entonces Ci es adyacente a una variable coloreada conel color falso, entonces Ci se puede colorear con un color verdadero. Si E es satisfacible G tiene una coloracin de tamao n + 1. * Puesto que, como E es satisfacible, todas las clusulas son satisfacibles para laguna asignacin de valores de verdad; si asignamos los colores de manera que l es coloreada con el color n + 1 si en la asignacin l es falso y el color verdadero si l es verdadero, hay al menos una literal verdadera por clusula coloreada con un color verdadero, ese mismo color es el que nos sirve para colorear Ci .

10.5. PROBLEMA DE LA PLANEACIN

155

10.5.

Problema de la planeacin

n trabajos requeriendo un tiempo ti para ejecutarse. m procesadores. Una planeacin es una asignacin de los trabajos a los procesadores. Para cada trabajo wi , la planeacin espacca, los intervalos de tiempo y los procesadores en los cuales el trabajo va a ser procesado. Si fi es el tiempo de terminacin el trabajo wi , el tiempo promedio de terminacin es: tpt = 1 n
n

fi
i=1

Si asociamos a cada trabajo un costo Ci , el tiempo promedio de terminacin ponderado es:

1 tpt = n

fi C i
i=1

Sea Ti el tiempo en el que el procesador pi termina su trabajo. El tiempo de terminacin de la planeacin es:

tt = M ax(Ti ), 1 i n
Una planeacin es no apropiativa cuando un trabajo se ejecuta desde el principio hasta el n en el mismo procesador. Una planeacin es apropiativa cuando el trabajo no necesariamente se ejecuta completamente en el mismo procesador. P.D. El problema de decidir si un conjunto de trabajos tiene una planeacin no apropiativa para m procesadores con un tiempo de terminacin T es NPDuro (i.e S Plan) Utilizaremos el problema de la particin: Dado un conjunto de nmeros enteros y un nmero m decidir si es posible particionar el conjunto en m subconjuntos tal que la suma de los elementos de la particin sea igual. Si m = 2 A = {2, 7, 10, 25, 20} El problema de decisin de la particin es NP Completo. P.D Particin Plan. - Suponemos que existe AP lan P - Construir Aparticion P Proponemos al siguiente algoritmo:

156

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES Dados A = {a1 , a2 , . . . , an } y k enteros positivos w = t1 , t2 , . . . , tn donde ti = ai . el nmero de procesadores, m = k y el tiempo de terminacin es:

ti =

1 m

ti
i=1

10.6. Generacin de cdigo ptimo


Cuando las expresiones aritmticas tienen expresiones comunes se utiliza un grafo acclico dirigido para representarlas. Cada nodo interno contiene un operador y un grado de salida diferente de cero. Si asumimos operadores binarios, cada nodo tiene un grado de salida 2. +

Figura 15: a + b + (a c)
Una hoja es un nodo con grado de salida cero. Un nodo es un nivel 1 si sus nodos hijos son ambas hojas. Un nodo compartido es un nodo con ms de un padre. Un gad hoja si todos sus nodos compartidos son nodos hoja. Un gad de nivel 1 es aquel en el cual todos sus nodos compartidos son de nivel 1. a) El problema de generar el cdigo objeto ptimo para gads de nivel 1 es NP Duros an cuando la mquina tenga un slo registro.

10.7. PROBLEMAS NP COMPUTABLES Y NO DECIDIBLES *

157

Figura 16: (a + b) (a + b + c)
b) Determinar el nmero r de registros necesariso para evaluar un gad de nivel 1 si almacenara en memorias es NP Duros. LOAD ADD STORE ADD STORE LOAD MULT LOAD ADD ADD MULT

A1 R1 R1 BR1 T1 R 1 R1 C1 R1 T2 R 1 T1 R 1 R1 T2 R1 aR1 R1 bR1 R1 cR1 R 1 T2 R 1

10.7.

Problemas NP Computables y No decidibles

Suponer que tenemos tiempo y memoria innitos y vamos a considerar problemas con una cantidad nita de instancias. Un problema es no computable si no existe un algoritmo que sea capaz de dar una respuesta a cualquier instancia del problema. El problema del tapizado (a domini). Dado un conjunto de cartas , cada una innita, si es posible tapizar cualquier rea nita con ellas.

158

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES

Las cartas deben ser coloreadas de manera que sus lados adyacentes tengan el mismo color.

Você também pode gostar