P/NP: Ciclo Hamiltoneano, Problema del Viajante, Coloreo de Grafos, Subset Sum, Clique Flashcards
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