Está en la 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];

Exito;

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.

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

F racaso;

termina.
Algoritmo 42: Ordena no deterministico. Multiprocesos
El algoritmo 41 por otro lado regresa el resultado correcto independientemente de la interpretacin de Elige.

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

sujeta a

147
n
X

xi p i M

i=1

y maximizando

n
X

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
X
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 va-

riable 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

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

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

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.

Denicin 6 NP es el conjunto de problemas para los que existe una solucin no determinstica de complejidad polinomial.

Teorema 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 ?

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

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


dos condiciones:

10.2. INTERPRETACIONES

149

1. Existe una maquina de turing deterministica (DTM) que computa f.


2. Para toda x 1 , x L1 si y solo si f (x) L2 .
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

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


intercambia(i, j)O(1)Ordenaalf aobtenermenor

zah
termina.

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.

repite
hasta (F also)

proc S.Halt(Exp, n)
comienza

Escribe(B, Exp, n)

termina.

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
0716G2534

0716E2534
0716A2534

0716C2534

0716F2534 2 0716B2534

5
8?9
>
=
:
;
<
D

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

10.4. PROBLEMA DE LA COBERTURA DE NODOS

151

Formamos G de la siguiente manera

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 6= j l 6= 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
0716G2534

CAPTULO 10. PROBLEMAS TRATABLES E INTRATABLES


0716E2534

07162534
A ???

??

??

0716C25?34
0716F2534
07162534
??
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 G0 =< V 0 , A0 > tal que V 0 = V y
0
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 G0 tiene una cobertura
de tamao n k .
) G tiene un Cliqu de tamao k .
P.D. G0 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 G0 unen un vrtice en S con uno que no est en S
o dos vrtices fuera de S todos los arcos G0 inciden al menos a uno de los
n k vrtices que no estan en S G0 tiene una cobertura de tamao n k .
) G0 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 G0 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 6= j1 6= i, j n
(yi , xi )|i 6= j1 i, j n
(yi , yj )|i 6= 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

10.5.

155

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:
n

tpt =

1X
fi
n i=1

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


n

1X
tpt =
fi C i
n 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:
n

ti =

1 X
ti
m 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

10.7.

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

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.

También podría gustarte