P/NP: Ciclo Hamiltoneano, Problema del Viajante, Coloreo de Grafos, Subset Sum, Clique Flashcards
(37 cards)
Explique el problema del Ciclo Hamiltoneano
Sea G un grafo direccionado, definimos un ciclo C en G como hamiltoneano si:
- Visita cada vértice 1 vez y sólo 1 vez.
- Comienza y termina por el mismo vértice.
Entonces, dado un grafo, se desea saber si existe un ciclo hamiltoneano.
Ham-Cycle: ¿Es NP?
Ham-Cycle es NP.
Dado un certificado T que contenga una lista ordenada de vértices, puedo verificar en tiempo polinomial que:
- |T| = |V|
- t_0 = t_|V| (el primer nodo y el último son el mismo)
- Todos los vértices de V están en T
- Para todo par de vértices en T, existe un eje en el grafo.
Por lo tanto, es NP.
Ham-Cycle: ¿Es P?
No se conoce un algoritmoq ue resuelva a Ham-Cyle en tiempo polinómico. Si probamos que Ham-Cycle es NP-C, entonces Ham-Cycle sería P si y sólo si P = NP.
Explique la reducción de 3SAT a Ham-Cycle
Para I
instancias de 3SAT:
- Con n
variables x1, ..., xn
- k
clàusulas c1, ..., cn
Construiremos un grafo G
donde encontrar el ciclo hamiltoneano.
- Construimos
n
caminosp1, ..., pn
, por donde cada uno representa a una variable. - Cada camino estará conformado por
2 * k
nodos, unidos entre sí por aristas de ida y vuelta. - Uniremos cada camino:
a. Desde su nodo inicial hasta el nodo inicial del camino siguiente.
b. Desde su nodo inicial hasta el nodo final del camino siguiente.
c. Desde su nodo final hasta el nodo inicial del camino siguiente.
d. Desde su nodo final hasta el nodo final del camino siguiente.
- Creamos nodos s,t y agregamos ejes:
a. s - v1,1
(primero de la primer fila)
b. s - v1,2k
(último de la primer fila)
c. vn,1 - t
(primero de la última fila)
d. vn,n - t
(último de la última fila)
e. t - s
- Creamos 1 nodo por cada cláusula
Ti = (t1, t2, t3)
. - Para cada variable
x
de la cláusulai
:
a. Se unen 2 nodos del camino de la variable x
con el nodo de la cláusula i
en la posición i*2
y i*2+1
. Si la variable no está negada, las direcciones van de nodo a cláusula y luego de cláusula a nodo. Sino, al revés.
Si existe un camino hamiltoneano que parte de s
y llega a t
(regresando luego a s
), y pasando por todos los nodos, entonces hay forma de satisfacer la expresión booleana.
- El sentido por el que se recorre el camino determina si el valor de una variable es 0 ó 1: para la derecha, 1. Para la izquierda, 0.
- El eje seleccionado para acceder al nodo “ cláusula” nos dice qué varible la activa.
- Si una variable requiere estar negada y no estarla para activar varias cláusulas, el ciclo e simposible de construir.
Ham-Cycle: ¿Es NP-C?
Ham-Cycle es NP-C.
Como Ham-Cycle pertenece a NP y 3SAT es reducible a HAM-CYCLE, entonces:
Ham-Cycle pertenece a NP-C.
Explique el problema del viajante.
Dado:
- n ciudades
- Las distancias entre cada par de ciudades
Queremos determinar si existe un tour o ciclo de distancia total menor a k
tal que se recorran las n
ciudades.
Problema del viajante: ¿Es NP?
El problema del viajante es NP.
Sean n
ciudades, las distancias entre cada par de ciudades, T
un ceritificado y k
la distancia como límite, se puede verificar que:
- T contenga a todas las ciudades sólo 1 vez, y que termine y comience en la misma.
- Que la suma total de la distancia recorrida sea menor a ´k´.
Explique la reducción de Ham-Cycle a Viajante.
Sea I
una instancia de Ham-Cycle, tenemos un grafo G=(V,E)
donde:
- Por cada vértice
v
, creamos una ciudadvi
. - Por cada arista
eij
, definimos la distanciad(vi, vj) = 1
. - Aquellas distancias que no están definidas (no tienen aristas) las crearemos con valor 2.
- Ponemos como valor
k = |V|
(número de vértices).
Solucionamos viajante con k
definido. Si existe un camino con longitud k
, entonces existe un ciclo hamiltoneano.
Problema del viajante: ¿Es NP-C?
Como Ham-Cycle <=p Viajante, entonces el problema del viajante es NP-C.
Explique el problema de Coloreo de Grafos.
Sea un grafo G=(V,E)
no dirigido, y una función F
que le asigna un color a cada vértice; para todo eje e=(u,v) tal que
f(u) != f(v)`.
Queremos colorear el grafo tal que nodos que tienen ejes entre sí no tengan el mismo color.
¿A qué se define como “número cromático X(G)`?
Definimos al número cromático X(G)
como el menor número de colores necesario par colorear un grafo.
¿A qué se define como “polinomio cromático?
Definimos polinomio cromático a la ecuación que permite contar el número de maneras en las cuales puede ser coloreado un grafo usando no más de k
colores.
¿A qué se llama “clase de color” y a qué se llama “conjunto k- partito?
Llamaremos clase de color al subconjutno de vértices coloreados con el mismo color.
Una k-coloración equivale a una partición de nodos en k
conjuntos independientes. Si un grafo es k-coloreable, entonces es k- partito.
Explique el problema de decisión de Coloreo de Grafos.
Sean:
-
G = (V,E)
un grafo no dirigido -
k
un valor numérico.
Queremos determinar si es posible definir una función de coloreo que utilice k
o menos colores.
Explique el caso especial del grafo completo
Si el grafo es simple y completo (todos los vértices están comunicados entre sí), se requiere un color por vértice para colorear el grafo.
Podemos saber si es completo si tiene:
|E| = |V| * ( |V| -1 ) / 2
Explique el caso especial del grafo bipartito
Un grafo bipartito requiere de sólo 2 colores para colorear el grafo. Podemos usar un algoritmo similar a BFS para colorear el grafo.
Coloreo de grafos: ¿Es NP?
Es NP.
Dado un grafo G
, una cantidad de k
colores, y un certificado T (que para cada vértice le asigna un color), puedo verificar en tiempo polinomial que:
- Todos los nodos de V están en T.
- La cantidad de colores usados en T es menor o igual a
k
. - No existe en
G
dos vértices adyacentes que enT
tengan el mismo color.
Por lo que el coloreo de grafos es NP.
Explique la reducción de 3SAT a Coloreo de Grafos
Dada una instancia I
de 3SAT con k
cláusulas y n
variables, creamos:
- Diferentes gadgets que serán subgrafos para colorear.
- 1 gadget para las variables.
- 1 gadget por cláusula.
- Creamos un vértice para cada variable y su negación.
- Creamos los vértices especiales
T
,F
, yB
(true, false y base). - Generamos los ejes:
a. Entre vi
y ¬vi
b. Entre vi
y ¬vi
con B
c. T, F, B entre ellas.
Por lo tanto, la variable tendrá True si tiene el mismo color qu eT.
- Creamos un gadget para cada cláusula.
a. La cláusula ci = (a,b,c)
con a,b,c
pertenecientes a: {x1, ¬x1, ..., xn, ¬xn}
.
b. Las variables de la cláusula corresponden a los nodos creados para las variables. Por ejemplo, si a = x1, el gadget
ci,1 se conecta a v1
.
El gadget va a tener la forma detallada en la siguiente imagen.
- Los nodos 1, 2, 3, 4 se conectan a T
- Los nodos 1, 2, 6, 5 se conectan entre sí de forma secuencial.
- Hay un eje entre 3 y 6 y entre 4 y 5
- 5 se conecta a F
- Los nodos c1, c3 y c4 de la cláusula se conectan a las variables que contiene: a, b, c.
- Definimos
k=3
para los colores. - Si el grafo resultante se puede pintar con 3 colores, entonces la expresión
I
se puede satisfacer (los nodos correspondientes a las variables con igual color aT
deben estar entrue
).
Entonces, con al menos 1 variable en True de la cláusula i
, el subgrafo correspondiente al gadget de la cláusula i
se puede colorear con 3 colores.
=> Si se requiere que 1 variable esté negada y sin negar, no se puede colorear el grafo.
Resuelva con la reducción de 3SAT a Coloreo de Grafos:
E = (x1,x2,x4) y (not x1, x3, x4)
x1 = 1
x2 = 1
x3 = 1
x4 = 0
Resuelva con coloreo de grafos:
Se tiene el grafo:
ejes:
(A,B) (A,D) (B,C) (C,D) (D,E) (D,F) (E,H) (E,G)
¿ Es k coloreable con k = 4?
Lo es.
Explique el problema de decisión Subset Sum
Sea un conjunto C = {w1, ..., wn}
de número naturales, queremos determinar si existe un subconjunto de C
que sume exactamente W
.
Es un problema de decisión relacionado con el problema de la mochila.
Subset Sum: ¿Es P?
Subset sum no es P.
Usando programación dinámica, se puede resolver en tiempo pseudo polinomial O(Wn). Si representamos W en bits, el algoritmo crece exponencialmente a la cantidad de bits de W. No se conoce una solución polinomial, por lo que Subset Sum no es P.
Subset Sum: ¿Es NP?
Es NP.
Dados:
- Un
C
conjunto den
números naturales. - W número a sumar
- T certificado con subconjunto de
C
.
Podemos determinar polinomialmente que:
∑ (ti) = W, para todo ti en C
Por lo tanto, es NP.
Subset Sum: ¿Es NP-Hard?
Es NP-Hard, porque se puede reducir 3DM a Subset Sum. De esta forma, probamos que es NP-C. Si es NP-C, es NP-H.