Problemas fundamentales

Anuncio
Análisis de Algoritmos
Problemas fundamentales
Dra. Elisa Schaeffer
[email protected]
PISIS / FIME / UANL
Problemas fundamentales– p. 1
Satisfiabilidad (S AT)
Dada: una expresión booleana φ en C NF
Pregunta: ¿ es φ satisfactible?
Utilizando tablas de asignaciones: O (n2 · 2n )
Problemas fundamentales– p. 2
Demostración de S AT ∈ NP
Una N TM que determina si φ es satisfactible:
asignamos para cada xi ∈ X(φ) de una manera no
determinista ⊤ o ⊥
si T |= φ, la respuesta es “sí”
en el otro caso, la respuesta es “no”
Problemas fundamentales– p. 3
Cláusula Horn
= una disyunción con por máximo un literal positivo
⇒ todas menos una variable tienen que ser negadas
Si contiene un literal positivo, se llama implicación porque
(¬x1 ) ∨ (¬x2 ) ∨ . . . (¬xk ) ∨ xp
es lógicamente equivalente a
(x1 ∧ x2 ∧ . . . ∧ xk ) → xp
Problemas fundamentales– p. 4
H ORNSAT
Dada: φ que es una conjunción de cláusulas Horn
Pregunta: ¿es φ satisfactible?
Problemas fundamentales– p. 5
H ORNSAT∈ P
1. Inicializa T := ∅ y el conjunto S para contener las cláusulas.
2. Si hay una implicación φi = (x1 ∧ · · · ∧ xn ) → y ∈ S así que
(X(φi ) \ {y}) ⊆ T pero y ∈
/ T , haz T := T ∪ {y}.
3. Si T cambió, vuelve a repetir el paso 2.
4. Cuando T no cambia, verifica para las cláusulas φi en S que
consisten de puros literales negados:
Si existe un literal ¬xi tal que xi ∈
/ T , φi es satisfactible.
Si no existe tal literal, φi no es satisfactible; imprime “no”.
5. Si las cláusulas negativas son satisfactibles, imprime “sí”.
Problemas fundamentales– p. 6
C IRCUITSAT y C IRCUITVALUE
Dado: un circuito booleano C
Pregunta: ¿ existe una asignación T : X(C) → {⊤, ⊥} así
que la salida sea ⊤?
Dado: un circuito booleano C que no contenga variables
Pregunta: ¿es ⊤ la salida del circuito?
C IRCUITSAT ∈ NP, pero C IRCUITVALUE ∈ P.
Problemas fundamentales– p. 7
Problema de alcance R EACHABILITY
Dado: un grafo G = (V, E) y dos vértices v, u ∈ V
Pregunta: ¿existe un camino de v a u?
R EACHABILITY Complement: ¿es verdad que no existe
ningún camino de v a u?
Problemas fundamentales– p. 8
Floyd-Warshall
Un algoritmo básico para R EACHABILITY que además
computa los caminos más cortos si G es ponderadoa
El algoritmo construye de una manera incremental
estimaciones a los caminos más cortos entre dos vértices
hasta llegar a la solución óptima.
Etiquetamos los vértices de G = (V, E) así que
V = {1, 2, . . . , n}.
a
Los pesos tienen que ser no negativos para que funcione.
Problemas fundamentales– p. 9
Subrutina
cc(i, j, k) construye el camino más corto entre los vértices
i y j pasando solamente por vértices con etiqueta ≤ k
Para un camino de i a j con vértices intermedios con
menores o iguales a k + 1, hay dos opciones:
el camino más corto con etiquetas ≤ k + 1 utiliza solamente
vértices con etiquetas ≤ k
existe algún camino que primero va de i a k + 1 y después
de k + 1 a j así que la combinación de estos dos caminos
es más corto que cualquier camino que solamente utiliza
vértices con etiquetas menores a k + 1
Problemas fundamentales– p. 10
Formulación recursiva
cc(i, j, k)
= mı́n {cc(i, j, k − 1), cc(i, k, k − 1) + cc(k, j, k − 1)}
Condición inicial: cc(i, j, 0) = w(i, j)
w(i, j) es el peso de (i, j) ∈ E
grafos no ponderados: cc(i, j, 0) = 1 para cada arista
donde no hay arista, cc(i, j, 0) = ∞
Problemas fundamentales– p. 11
Computación de cc
iteramos primero con k = 1, después con k = 2,
continuando hasta k = n la formulación recursiva para
cada par {i, j}
Problemas fundamentales– p. 12
Computación de cc
iteramos primero con k = 1, después con k = 2,
continuando hasta k = n la formulación recursiva para
cada par {i, j}
⇒ la complejidad asintótica del algoritmo es O (n3 )
Problemas fundamentales– p. 12
Computación de cc
iteramos primero con k = 1, después con k = 2,
continuando hasta k = n la formulación recursiva para
cada par {i, j}
⇒ la complejidad asintótica del algoritmo es O (n3 )
la información de la iteración k se puede reemplazar
con la de la iteración k + 1
Problemas fundamentales– p. 12
Computación de cc
iteramos primero con k = 1, después con k = 2,
continuando hasta k = n la formulación recursiva para
cada par {i, j}
⇒ la complejidad asintótica del algoritmo es O (n3 )
la información de la iteración k se puede reemplazar
con la de la iteración k + 1
⇒ el uso de memoria es cuadrático
Problemas fundamentales– p. 12
Ciclos y caminos de Hamilton
Dado: un grafo G = (V, E)
H AMILTON PATH: ¿existe un camino C en G tal que C
visite cada vértice exactamente una vez?
H AMILTON C YCLE: ¿existe un ciclo C en G tal que C visite
cada vértice exactamente una vez?
Problemas fundamentales– p. 13
Problema del viajante (de comercio)
Caso ponderado: ciclo de Hamilton de costo mínimo
T SP D es la problema de decisión que corresponde:
Dado: un grafo ponderado G = (V, E) con pesos en las
aristas y un constante c
Pregunta: ¿existe un ciclo C en G tal que C visite cada
vértice exactamente una vez y que la suma de los pesos
de las aristas de C sea ≤ c?
Problemas fundamentales– p. 14
Camarilla y conjunto independiente
Dado: un grafo no dirigido G = (V, E) y un entero k > 0
C LIQUE: ¿existe un subgrafo completo inducido por el
conjunto C ⊆ V tal que |C| = k?
I NDEPENDENT S ET: ¿existe un subgrafo inducido por el
conjunto I ⊆ V tal que |I| = k y que no contenga arista
ninguna?
Observación: si C es una camarilla en G = (V, E), C es un
conjunto independiente en Ḡ.
Problemas fundamentales– p. 15
Acoplamiento
= M ⊆ E de aristas no
adyacentes
v está acoplado: una arista incidente a v in M
Problemas fundamentales– p. 16
Acoplamiento
= M ⊆ E de aristas no
adyacentes
v está acoplado: una arista incidente a v in M
si no, está libre
Problemas fundamentales– p. 16
Acoplamiento
= M ⊆ E de aristas no
adyacentes
v está acoplado: una arista incidente a v in M
si no, está libre
un acoplamiento máximo Mmáx contiene el número
máximo posible de aristas (no es necesariamente único)
Problemas fundamentales– p. 16
Acoplamiento
= M ⊆ E de aristas no
adyacentes
v está acoplado: una arista incidente a v in M
si no, está libre
un acoplamiento máximo Mmáx contiene el número
máximo posible de aristas (no es necesariamente único)
un acoplamiento maximal: aristas ∈
/ M están
adyacentes a por lo menos una arista ∈ M
Problemas fundamentales– p. 16
Acoplamiento
= M ⊆ E de aristas no
adyacentes
v está acoplado: una arista incidente a v in M
si no, está libre
un acoplamiento máximo Mmáx contiene el número
máximo posible de aristas (no es necesariamente único)
un acoplamiento maximal: aristas ∈
/ M están
adyacentes a por lo menos una arista ∈ M
máximo ⇒ maximal (pero no ⇔)
Problemas fundamentales– p. 16
Acoplamiento perfecto
el número de acoplamiento = |Mmáx |
Problemas fundamentales– p. 17
Acoplamiento perfecto
el número de acoplamiento = |Mmáx |
el número de vértices libres = el déficit
Problemas fundamentales– p. 17
Acoplamiento perfecto
el número de acoplamiento = |Mmáx |
el número de vértices libres = el déficit
un acoplamiento perfecto = cero deficit
Problemas fundamentales– p. 17
Acoplamiento perfecto
el número de acoplamiento = |Mmáx |
el número de vértices libres = el déficit
un acoplamiento perfecto = cero deficit
su número de acoplamiento =
n
2
Problemas fundamentales– p. 17
Caminos aumentantes y alternativos
un camino alternante: sus aristas alternativamente
pertenecen y no pertenecen a M
Problemas fundamentales– p. 18
Caminos aumentantes y alternativos
un camino alternante: sus aristas alternativamente
pertenecen y no pertenecen a M
un camino aumentante A es un camino alternante
de un vértice libre v a otro vértice libre u
Problemas fundamentales– p. 18
Aumento del acoplamiento
un acoplamiento M es máximo si y sólo si no contiene
ningún camino aumentante
Problemas fundamentales– p. 19
Aumento del acoplamiento
un acoplamiento M es máximo si y sólo si no contiene
ningún camino aumentante
dado un A, podemos intercambiar las aristas en M
para las no en M para construir M′
Problemas fundamentales– p. 19
Aumento del acoplamiento
un acoplamiento M es máximo si y sólo si no contiene
ningún camino aumentante
dado un A, podemos intercambiar las aristas en M
para las no en M para construir M′
|M′ | = |M| + 1
Problemas fundamentales– p. 19
Aumento del acoplamiento
un acoplamiento M es máximo si y sólo si no contiene
ningún camino aumentante
dado un A, podemos intercambiar las aristas en M
para las no en M para construir M′
|M′ | = |M| + 1
′
M = M \ (M ∩ A) ∪ A \ (M ∩ A)
Problemas fundamentales– p. 19
Cubiertas
Una cubierta de aristas es un conjunto CE de aristas así
que para cada vértice v ∈ V , C contiene una arista
incidente a v.
Problemas fundamentales– p. 20
Cubiertas
Una cubierta de aristas es un conjunto CE de aristas así
que para cada vértice v ∈ V , C contiene una arista
incidente a v.
Una cubierta de vérticesa es un conjunto CV de vértices
así que para cada arista {v, w}, por lo menos uno de los
vértices incidentes está incluido en CV .
Problemas fundamentales– p. 20
Cubiertas
Una cubierta de aristas es un conjunto CE de aristas así
que para cada vértice v ∈ V , C contiene una arista
incidente a v.
Una cubierta de vérticesa es un conjunto CV de vértices
así que para cada arista {v, w}, por lo menos uno de los
vértices incidentes está incluido en CV .
La meta de suele ser encontrar un conjunto de
cardinalidad mínima.
a
I es un conjunto independiente en G si y sólo si V \ I es una cubierta de
vértices G.
Problemas fundamentales– p. 20
V ERTEX C OVER
Dado: un grafo G = (V, E) no dirigido y un entero k > 0
Pregunta: ¿existe un conjunto de vértices C ⊆ V con
|C| ≤ k tal que ∀{v, u} ∈ E, o v ∈ C o u ∈ C?
Problemas fundamentales– p. 21
Flujos
Grafos ponderados (y posiblemente dirigidos)
a
dirigido en en caso de grafos dirigidos
Problemas fundamentales– p. 22
Flujos
Grafos ponderados (y posiblemente dirigidos)
Vértices especiales: fuente s y sumidero t
a
dirigido en en caso de grafos dirigidos
Problemas fundamentales– p. 22
Flujos
Grafos ponderados (y posiblemente dirigidos)
Vértices especiales: fuente s y sumidero t
Conexo en un sentido especial: ∀v ∈ V , existe un
caminoa del fuente s al sumidero t que pasa por el
vértice v
a
dirigido en en caso de grafos dirigidos
Problemas fundamentales– p. 22
Flujos
Grafos ponderados (y posiblemente dirigidos)
Vértices especiales: fuente s y sumidero t
Conexo en un sentido especial: ∀v ∈ V , existe un
caminoa del fuente s al sumidero t que pasa por el
vértice v
Los valores de las aristas = capacidades c(v, w) ≤ 0
a
dirigido en en caso de grafos dirigidos
Problemas fundamentales– p. 22
Flujo positivo
= una función f : V × V → R así que
∀u, v ∈ V : 0 ≤ f (u, v) ≤ c(u, v)
∀u ∈ V \ {s, t} :
X
v∈V
f (v, u) =
X
f (u, v)
v∈V
Problemas fundamentales– p. 23
Cortes
un corte C ⊆ V de G es una partición del conjunto de
vértices V en dos conjuntos: C y V \ C
Problemas fundamentales– p. 24
Cortes
un corte C ⊆ V de G es una partición del conjunto de
vértices V en dos conjuntos: C y V \ C
al cortar un grafo de flujo, se exige que s ∈ C y t ∈
/C
Problemas fundamentales– p. 24
Cortes
un corte C ⊆ V de G es una partición del conjunto de
vértices V en dos conjuntos: C y V \ C
al cortar un grafo de flujo, se exige que s ∈ C y t ∈
/C
X
capacidad del corte: c(v, w)
v∈C
w∈C
/
Problemas fundamentales– p. 24
Cortes
un corte C ⊆ V de G es una partición del conjunto de
vértices V en dos conjuntos: C y V \ C
al cortar un grafo de flujo, se exige que s ∈ C y t ∈
/C
X
capacidad del corte: c(v, w)
v∈C
w∈C
/
corte mı́nimo = un corte cuya capacidad es mínima
Problemas fundamentales– p. 24
Cortes y flujos
El problema de corte mínimo es polinomial.
Problemas fundamentales– p. 25
Cortes y flujos
El problema de corte mínimo es polinomial.
Además, la capacidad del corte mínimo entre dos vértices
s y t es igual al flujo máximo entre s y t.
Problemas fundamentales– p. 25
Cortes y flujos
El problema de corte mínimo es polinomial.
Además, la capacidad del corte mínimo entre dos vértices
s y t es igual al flujo máximo entre s y t.
Cuando establecido un flujo en el grafo, la cantidad de flujo
que cruza un corte es igual a cada corte del grafo.
Problemas fundamentales– p. 25
Máxima bisección (M AX B ISECTION)
En la mayoría de las aplicaciones de cortes de grafos, los
tamaños de los dos “lados” del corte, |C| y |V \ C| no
suelen ser arbitrarios.
Dado: un grafo G = (V, E) (n es par) y un entero k > 0
Pregunta: ¿existe un corte C en G con capacidad ≥ k tal
que |C| = |V \ C|?
Problemas fundamentales– p. 26
k-C OLORING
Dado: un grafo no dirigido G = (V, E) y un entero k > 0
Pregunta: ¿existe una asignación de colores a los
vértices de V así que ningún par de vértices v, u ∈ V tal
que {v, u} ∈ E tenga el mismo color?
Problemas fundamentales– p. 27
Isomorfismo de subgrafos
Dado: un grafo no dirigido G = (V, E) y otro grafo G′
Pregunta: ¿si G contiene un subgrafo isomórfico con G′ ?
Problemas fundamentales– p. 28
Tarea para entregar el martes
Escribe en pseudocódigo (prestando atención al orden
de los bucles) el algoritmo de Floyd-Warshall y justifica su
complejidad asintótica de tiempo O n3 y de
2
espacio O n analizando su código. ¿Cómo resolver
R EACHABILITY en espacio lineal?
Nota: uno aprende por pensar, no por buscarlo por Google. Si no saben cómo hacer
algo, antes de buscar por Google o en un libro una respuesta ya hecha, mejor vengan a
verme o consulten con otro estudiante.
Problemas fundamentales– p. 29
Descargar