Problemas de grafos

Anuncio
Análisis de Algoritmos
Problemas de grafos
Dra. Elisa Schaeffer
[email protected]
PISIS / FIME / UANL
Problemas de grafos– p. 1
I NDEPENDENT S ET es NP-completo
Necesitamos un “gadget”: el triángulo.
Si el grafo de entrada contiene un triángulo, es decir, una
camarilla de tres vértices, solamente uno de los tres
participantes del triángulo puede ser considerado para
formar un conjunto independiente, porque en un conjunto
independiente, ningún par de vértices puede compartir
una arista.
Problemas de grafos– p. 2
Restricción
Consideramos grafos los vértices de cuales se puede
dividir en triángulos disjuntos.
Es decir, cada vértice del grafo solamente puede tomar
parte en un triángulo y cada vértice tiene que ser parte de
un triángulo.
Denotamos el número de tales triángulos por t.
Problemas de grafos– p. 3
Análisis
Por construcción, ningún conjunto independiente puede
tener cardinalidad mayor a t.
Un conjunto independiente de cardinalidad t existe
solamente si las otras aristas del grafo permiten elegir un
vértice de cada triángulo sin que tengan aristas en común
los vértices elegidos.
Problemas de grafos– p. 4
Reducción de 3S AT
∀ cláusula Ci de φ, generamos un triángulo en el grafo
G = R(φ).
Sean ai , bi y ci las tres literales de una cláusula Ci .
Entonces, habrán vértices vai , vbi y vci en el grafo G y
además las tres aristas {vai , vbi }, {vai , vci } y {vbi , vci } que
forman el triángulo de los tres vértices de la cláusula Ci .
Problemas de grafos– p. 5
Variables compartidas
vi de Ci y vj de Cj , donde i 6= j, están conectadas por una
arista
⇐⇒
Los literales a cuales corresponden vi y vj son de la misma
variable, pero el literal es positivo en Ci y negativo en Cj
Problemas de grafos– p. 6
Ejemplo (tarea en clase)
Construir un grafo que corresponde a
φ = (x1 ∨ x2 ∨ x3 ) ∧ (¬x1 ∨ ¬x2 ∨ ¬x3 ) ∧ (¬x1 ∨ x2 ∨ x3 ).
Problemas de grafos– p. 7
Reducción correcta
Con el grafo G y la cota (la cardinalidad del conjunto
independiente) siendo k = t, tenemos definida la
reducción.
Habrá que mostrar que es correcta la reducción: existe
un conjunto independiente I ⊆ V en G = R(φ) tal que
|I| = k y φ tiene k cláusulas si y sólo si φ es satisfactible.
Problemas de grafos– p. 8
Comienzo de (=⇒)
Suponga que tal conjunto I existe.
=⇒ φ tiene k cláusulas y |I| = k.
Por construcción I necesariamente contiene un vértice de
cada uno de los k triángulos.
Problemas de grafos– p. 9
(=⇒) continua
I no puede contener ningún par de vértices que
corresponda una ocurrencia positiva de un variable x y una
ocurrencia negativa ¬x de la misma variable.
I define una asignación de valores T
v ∈ I y v corresponde a una ocurrencia positiva de la
variable x, x ∈ T .
Problemas de grafos– p. 10
Consistencia
Cada par de literales contradictorios está conectado en G
por una arista, y entonces la asignación T así definida es
consistente.
Problemas de grafos– p. 11
Consistencia
Cada par de literales contradictorios está conectado en G
por una arista, y entonces la asignación T así definida es
consistente.
Como I contiene un vértice de cada triángulo, y cada
triángulo es una cláusula, cada cláusula tiene exactamente
un literal con el valor ⊤, porque necesariamente T (x) = ⊤
o T (¬x) = ⊥ que implica que T (x) = ⊤ para la variable x el
vértice de cual estáincluido en el conjunto independiente I.
Problemas de grafos– p. 11
(⇐=) con el mismo truco
Si φ es satisfactible, dada la T que la satisface,
identificamos cuáles literales tienen el valor ⊤ en T .
Elegimos de cada cláusula un literal con el valor ⊤.
Los vértices que corresponden a estos forman I.
Son uno por cláusula.
Entonces, |I| = k si φ tiene k cláusulas.
Problemas de grafos– p. 12
Flujo máximo
Dado un grafo dirigido con capacidades en las aristas
y un flujo no-óptimo, se puede aumentar el flujo que cruza
un corte desde el lado de s al lado de t o alternativamente
por disminuir el flujo desde el lado de t al lado de s.
Para empezar, podemos elegir el flujo cero, donde el
flujo por cada arista es cero — no rompe con ninguna
restricción, por lo cual es un flujo factible, aunque no
óptimo.
Problemas de grafos– p. 13
Camino aumentante
Para aumentar el flujo, buscamos un camino
aumentante C de s a t en el cual de puede viajar por las
aristas según su dirección o en contra.
Las aristas hv, wi incluidas serán tales que si se viaja en la
dirección original, aplica que f (v, w) < c(v, w), pero si se
viaja en contra, f (v, w) > 0.
Problemas de grafos– p. 14
Función auxiliar
δ(v, w) =
c(v, w) − f (v, w),
f (v, w),
si hv, wi ∈ E,
si hw, vi ∈ E,
Sea δ = mı́nC {δ(v, w)}.
El flujo se aumenta por añadir δ en todos los flujos que
van según la dirección de las aristas en el camino C y
restar δ de todos los flujos que van en contra en C.
Problemas de grafos– p. 15
Terminación
Este procedimiento se itera hasta que ya no existan
caminos aumentantes.
Cuando ya no existe camino aumentante ninguno, el flujo
es maximal.
La eficiencia del método presentado depende de cómo se
construye los caminos aumentantes.
Problemas de grafos– p. 16
Algoritmo polinomial
La mayor eficiencia se logra por elegir siempre el camino
aumentante de largo mı́nimo; el algoritmo que resulta es
polinomial, O (nm2 ) = O (n5 ).
Es posible que hayan más que un camino de largo mínimo
— aplicándolos todos al mismo paso resulta en un
algoritmo de complejidad asintótica O (n3 ).
Problemas de grafos– p. 17
Grafo residual
Primero construyamos un grafo
posibilidades de mejoramiento:
residual que captura las
Gf = (V, Ef ) del grafo G = (V, E) con respeto a f tiene
{v, w} ∈ E | (f (v, w) < c(v, w)) ∨ (f (w, v) > 0) .
Problemas de grafos– p. 18
Capacidad de aumento
La capacidad
′
de aumento de la arista {v, w} ∈ Ef es
c (v, w) =
c(v, w) − f (v, w)
f (w, v)
si {v, w} ∈ E,
si {w, v} ∈ E.
Cada camino simple entre s y t en el grafo residual Gf es un
camino aumentante de G.
El valor de δ es igual al capacidad
del camino.
de aumento mı́nimo
Problemas de grafos– p. 19
B FS
Para elegir los caminos aumentantes más cortos en el
grafo residual, utilizamos B FS desde s.
En subgrafo formado por los caminos cortos en Gf se
llama la red de capas (inglés: layered network) G′f .
Problemas de grafos– p. 20
Red de capas
Se asigna a cada vértice un valor de “capa” que es su
distancia desde s.
Solamente vértices con distancias finitas están incluidas.
{v, w} de Gf se incluye en G′f solamente si el valor de
capa de w es el valor de capa de v más uno.
En el grafo G′f , cada camino de s a t tiene el mismo largo.
Problemas de grafos– p. 21
Flujo mayor
El mejor aumento sería igual al flujo máximo en G′f , pero
en el peor caso es igual en complejidad al problema
original.
Entonces construyamos una aproximación: definimos el
flujo mayor en G′f como un flujo que ya no se puede
aumentar con caminos que solamente utilizan aristas que
“avanzan” hacía t.
Problemas de grafos– p. 22
Flujo posible
Definimos como el flujo posible de un vértice es el
mínimo de la suma de las capacidades de las aristas que
entran y de la suma de las capacidades de las aristas que
salen:



 X
X
c′ (u, v),
c′ (v, w) .
vf = mı́n


′
′
{u,v}∈Gf
{v,w}∈Gf
Problemas de grafos– p. 23
El algoritmo
1. Sacar de G′f todos los vértices con flujo posible cero y cada arista adyacente a
estos vértices.
2. Identificar el vértice v con flujo posible mínimo.
3. Empujar una cantidad de flujo igual al flujo posible de v desde v hacía t.
4. Retirar flujo a v de sus aristas entrantes por construir caminos desde s a v hasta
que se satisface la demanda de flujo que sale de v a t.
5. Actualizar las capacidades de las aristas afectadas.
6. Memorizar el flujo generado y el camino que toma.
7. Computar de nuevo los flujos posibles y eliminamos de nuevo vértices con flujo
posible cero juntos con sus aristas adyacentes.
8. Si s y t quedaron fuera, el flujo construido es el flujo mayor en G′f .
9. Si todavía están, repetimos el proceso.
Problemas de grafos– p. 24
Complejidad asintótica
La construcción de G′f toma tiempo O (n2 ).
Problemas de grafos– p. 25
Complejidad asintótica
La construcción de G′f toma tiempo O (n2 ).
La distancia entre s y t está en el peor caso O (n).
Problemas de grafos– p. 25
Complejidad asintótica
La construcción de G′f toma tiempo O (n2 ).
La distancia entre s y t está en el peor caso O (n).
Cada iteración de construcción de una red de capas
G′f utiliza caminos más largos que el anterior, por lo
cual la construcción se repite O (n) veces.
Problemas de grafos– p. 25
Complejidad asintótica
La construcción de G′f toma tiempo O (n2 ).
La distancia entre s y t está en el peor caso O (n).
Cada iteración de construcción de una red de capas
G′f utiliza caminos más largos que el anterior, por lo
cual la construcción se repite O (n) veces.
Las operaciones de empujar y retirar flujo son ambas
O (n) y de ejecutan en total O (n) veces.
Problemas de grafos– p. 25
Complejidad asintótica
La construcción de G′f toma tiempo O (n2 ).
La distancia entre s y t está en el peor caso O (n).
Cada iteración de construcción de una red de capas
G′f utiliza caminos más largos que el anterior, por lo
cual la construcción se repite O (n) veces.
Las operaciones de empujar y retirar flujo son ambas
O (n) y de ejecutan en total O (n) veces.
Entonces, el algoritmo del flujo mayor tiene
complejidad asintótica O (n3 ).
Problemas de grafos– p. 25
Corte mínimo
El problema es igual al problema del flujo máximo: se
resuelve por fijar un vértice s cualquiera y después
resolver el flujo máximo entre s y todos los otros vértices.
El valor mínimo de los flujos máximos corresponde al corte
mínimo del grafo entero.
∃ algoritmos polinomiales para el problema de flujo
máximo, y solamente repetimos n − 1 veces su ejecución
=⇒ corte mı́nimo ∈ P.
Problemas de grafos– p. 26
M AX C UT
Dado: un grafo G = (V, E) no dirigido y no ponderado y un
entero k
Pregunta: ¿existe un corte en G con capacidad ≥ k?
M AX C UT es NP-completo
Problemas de grafos– p. 27
Demostración
Para multigrafosa con una reducción desde NAESAT.
Para una conjunción de cláusulas φ = C1 ∧ . . . ∧ Cr ,
construimos un grafo G = (V, E) tal que G tiene capacidad
de corte 5r si y sólo si φ es satisfactible en el sentido de
NAESAT.
a
Un grafo simple es un caso especial de multigrafos.
Problemas de grafos– p. 28
Construcción
Los vértices = los literales x1 , . . . , xn , ¬x1 , . . . , ¬xn
donde x1 , . . . , xn son las variables de φ.
a
Problemas de grafos– p. 29
Construcción
Los vértices = los literales x1 , . . . , xn , ¬x1 , . . . , ¬xn
donde x1 , . . . , xn son las variables de φ.
Para cada cláusula α ∨ β ∨ γ, incluimos las aristas del
triángulo entre los vértices α, β y γ.
a
Problemas de grafos– p. 29
Construcción
Los vértices = los literales x1 , . . . , xn , ¬x1 , . . . , ¬xn
donde x1 , . . . , xn son las variables de φ.
Para cada cláusula α ∨ β ∨ γ, incluimos las aristas del
triángulo entre los vértices α, β y γ.
Si la cláusula tiene solamente dos literales, ponemos
dos aristas entre los vértices que correspondena .
a
Mejor convertir cada cláusula a uno con tres literales por repetir un literal
según necesidad.
Problemas de grafos– p. 29
Construcción
Los vértices = los literales x1 , . . . , xn , ¬x1 , . . . , ¬xn
donde x1 , . . . , xn son las variables de φ.
Para cada cláusula α ∨ β ∨ γ, incluimos las aristas del
triángulo entre los vértices α, β y γ.
Si la cláusula tiene solamente dos literales, ponemos
dos aristas entre los vértices que correspondena .
=⇒ tenemos en total 3r ocurrencias de variables.
a
Mejor convertir cada cláusula a uno con tres literales por repetir un literal
según necesidad.
Problemas de grafos– p. 29
Construcción
Los vértices = los literales x1 , . . . , xn , ¬x1 , . . . , ¬xn
donde x1 , . . . , xn son las variables de φ.
Para cada cláusula α ∨ β ∨ γ, incluimos las aristas del
triángulo entre los vértices α, β y γ.
Si la cláusula tiene solamente dos literales, ponemos
dos aristas entre los vértices que correspondena .
=⇒ tenemos en total 3r ocurrencias de variables.
Además, incluyemos ni copias de {xi , ¬xi } donde ni
es el número total de ocurrencias de los literales xi y
¬xi en φ.
a
Mejor convertir cada cláusula a uno con tres literales por repetir un literal
según necesidad.
Problemas de grafos– p. 29
Construcción correcta
Suponga que existe un corte (S, V \ S) con capacidad 5r o
mayor.
Si un literal que corresponde a vi participa en ni cláusulas,
vi tiene al máximo 2ni aristas a otros vértices además de
las ni aristas a su negación.
Se supone que una variable y su negación no aparecen en la misma cláusula porque
así la cláusula sería una tautología.
=⇒ Los dos vértices representando a xi y ¬xi tienen en
total al máximo 2ni aristas a vértices que representan a
otros literales.
Problemas de grafos– p. 30
El corte
Si estuvieran cada variable y su negación las dos en el
mismo lado, su contribución a la capacidad del corte sería
por máximo 2ni .
Si cambiamos al otro lado el vértice con menos aristas
“externas”, la contribución al tamaño de corte del par no
puede disminuir (las aristas ni entre los dos vértices
cruzarían el corte después del cambio).
=⇒ Asumir que caigan en lados distintos.
Problemas de grafos– p. 31
Asignación y el corte
Sea S el conjunto de literales asignadas ⊤, por lo cual
V \ S contiene los literales que tienen asignado el valor ⊥.
Cada variable y su negación están el lados diferentes =⇒
contribuyen una arista por ocurrencia en φ: en total 3r
aristas.
Problemas de grafos– p. 32
Triángulos separados
Para lograr que sea mayor o igual a 5r la capacidad del
corte, habrá que ser 2r aristas que son aristas de los
triángulos representando a las cláusulas cruzando el corte.
⇒ Cada triángulo tiene que estar separado
⇒ Cada uno de los r triángulos necesariamente
contribuye dos aristas.
Por lo menos un vértice de cada cláusula pertenece a T y
por lo menos un vértice no pertenece al T , T satisface a φ
en el sentido de NAESAT.
Problemas de grafos– p. 33
La otra dirección
Dada una asignación T a φ en el sentido de NAESAT,
podemos agrupar los vértices a darnos un corte con
capacidad mayor o igual a 5r.
Problemas de grafos– p. 34
M AX B ISECTION versus M AX C UT
La reducción de M AX C UT a M AX B ISECTION por modificar
la entrada:
Añadimos n vértices no conectados a G.
Cada corte de G se puede balancear a ser una bisección por organizar los
vértices no conectados apropiadamente a los dos lados.
Entonces, el grafo original tiene un corte (S, V \ S) de tamaño k o mayor si y sólo
si el grafo modificado tiene un corte de tamaño k o mayor con |S| = |V \ S|.
Problemas de grafos– p. 35
M IN C UT versus M IN B ISECTION
M IN C UT∈ P, M IN B ISECTION es NP-completo
M IN B ISECTION:
Dado: un grafo no dirigido y un entero k
Pregunta: ¿existe una bisección con cardinalidad menor
o igual a k?
Problemas de grafos– p. 36
Una reducción de M AX B ISECTION
La instancia es un grafo G = (V, E) con un número par de
vértices n = 2c.
Ese grafo tiene una bisección de tamaño k o más si y sólo
si el grafo complemento Ḡ tiene una bisección de tamaño
c2 − k o menos.
Problemas de grafos– p. 37
3M ATCHING es NP-completo
Dado: conjuntos A, B y C, cada uno con n elementos y
una relación ternaria T ⊆ A × B × C
Pregunta: ¿existe un conjunto de n triples (a, b, c) en T
que no comparten ningún componente entre cualesquiera
dos triples?
Una reducción sería de 3S AT.
Problemas de grafos– p. 38
Descargar