intro grafos
Post on 24-Jul-2015
69 Views
Preview:
TRANSCRIPT
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Problemas y algoritmos sobre Grafos
Problemas, Algoritmos y Programacion
14 de Septiembre de 2011
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Menu del dıa1 Definiciones y estructuras
GrafosArboles
2 Camino mınimoBreadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
3 Arbol generador mınimoPrimKruskal
4 ProblemasCantidad de caminosProblemas en grafos implıcitosProblemas
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Estructura de datos
Repaso de estructuras de datos:
Grafo
Arbol
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos
Un grafo se define como la pareja (V ,E ), de vertices (o nodos, opuntitos) y ejes (o aristas, o rayitas, o flechitas), dondeE ⊆ V × V .Se usan para modelar muchos problemas que involucran puntitos yrayitas.Se describen de alguna(s) de estas formas:
Por las adyacencias de cada vertice
Por la definicion: el conjunto de vertices y el conjunto de ejes.
Implıcitamente, por otra estructura.
En adelante, n es la cantidad de vertices (|V |) y m es la cantidadde aristas (|E |).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - tipos
Hay muchas variantes de grafos:
Dirigidos: (u, v) y (v , u) son aristas distintas.
No dirigidos: (u, v) y (v , u) son la misma arista.
Multi-grafos: Puede haber varias aristas entre la misma parejaordenada.
Hay muchas propiedades sobre grafos:
Con o sin ciclos (dirigidos o no dirigidos)
Conexos o no conexos.
Completos, vacıos, triviales.
Hamiltonianos, euclideanos, cactus, etc.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - definiciones
El vecindario de un vertice u, N(u), es el conjunto de verticesx tales que (u, x) es una arista del grafo.
El grado de un vertice u, d(u), es el cardinal de su vecindario.En un digrafo esto es el grado de salida de u.
Un camino en un grafo es una secuencia de aristas donde elextremo final de una arista es el inicial de la siguiente arista.
Un ciclo en un grafo es un camino que empieza y termina enel mismo vertice.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - por adyacencia
De cada vertice se describe su conjunto de vecinos:
Como una lista de vecinos (lista de adyacencia).
Como un conjunto, arreglo u otro contenedor.
Como un conjunto sobre bits (matriz de adyacencia).
Recorrer los vecinos de un vertices es recorrer los elementos delcontenedor.Recorrer todas las aristas es recorrer todos los vecinos de todos losvertices.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - por adyacencia
Costo de las operaciones segun la representacion:Operacion Lista de adyacencia Matriz de adyacencia
¿(u, v) ∈ E? O(min(d(u), d(v))) O(1)Recorrer N(u) O(d(u)) O(n)
Recorrer E O(n + m) O(n2)Memoria n + 2m n2
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - por adyacencia
Por lista de adyacencia se puede almacenar de la siguiente forma:
vvint lady(n, vint());
#define agregar(u, v) \
{ lady[u].push_back(v); lady[v].push_back(u); }
Por matriz de adyacencia se puede almacenar de la siguiente forma:
vvint mady(n, vint(n, 0));
#define agregar(u, v) \
{ mady[u][v]++; mady[v][u]++; }
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Grafos - por definicion
Se describe el conjunto de aristas (E ) involucradas en el grafo.
Se describe el conjunto de vertices (V ). A veces alcanza conun numero (n).
Ejemplo:
struct eje { int a, b; };
vector<eje> g;
int n;
#define agregar(u, v) \
{ g.push_back( (eje){ a: (u), b: (v) } ); }
Algunas representaciones son mas apropiadas para ciertosalgoritmos.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Arboles
Arbol
Un arbol es un grafo conexo y sin ciclos.
La definicion solo sirve para demostrar propiedades teoricas.
Un arbol se puede representar igual que un grafo (casoparticular).
Un vertice con solo un vecino se llama hoja.
Algunas propiedades:
Hay un unico camino entre todo par de vertices.
m = n − 1
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Arboles
Arbol
Un arbol es un grafo conexo y sin ciclos.
La definicion solo sirve para demostrar propiedades teoricas.
Un arbol se puede representar igual que un grafo (casoparticular).
Un vertice con solo un vecino se llama hoja.
Algunas propiedades:
Hay un unico camino entre todo par de vertices.
m = n − 1
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
GrafosArboles
Arboles con raız (rooted trees)
Arbol con raız
Un arbol con raız es un arbol con un vertice distinguido, llamadoraız.
Tambien se puede representar como un grafo (y un verticedistinguido).
Tienen la nocion de padre e hijo, de acuerdo a la cercanıa a laraız.
Admiten una representacion recursiva: Un arbol es
una raızun conjunto de sub-arboles, hijos de esa raız
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Camino mınimo
Problema de Camino mınimo
Dado un grafo G con pesos en las aristas, el problema de caminomınimo entre dos nodos u y v consiste en encontrar un caminoentre esos nodos cuyo peso sea menor o igual que el peso decualquier otro camino entre u y v .
Hay variantes:
Se puede calcular el camino mınimo entre todo par de nodos.
El peso de un camino puede ser la suma de los pesosindividuales, el producto, el mayor, etc.
El grafo puede ser dirigido o no dirigido.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Lımites del problema
El camino mınimo se define como un camino simple.
En muchos casos, mınimo implica simple.
Si hay un ciclo de peso negativo alcanzable, el problema seindefine (no acotado).
Camino maximo simple es muy difıcil (NP-Completo).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algoritmo
BFS
Breadth-first search (BFS) o busqueda en ancho es un algoritmopara recorrer los nodos de un grafo en un orden especıfico.
Comienza por un vertice distinguido
Por cada vertice visitado, marca en una cola todos sus vecinosno marcados.
Visita los vertices en el orden determinado por la cola.
En total, recorre a lo sumo una vez cada vertice.
En total, recorre a lo sumo dos veces cada arista.
Complejidad: O(n + m).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algorithm 2.1: bfs(Grafo g ,Nodo v)
marcadosp ← FALSE ∀p ∈ V (g)cola← nueva colamarcar(v)while ¬cola.empty()
do
p ← cola.pop()for each q ∈ g .vecinos(p)
do
{if ¬marcadosq
then marcar(q)
Algorithm 2.2: marcar(Nodo v)
marcadosv ← TRUEcola.push(v)
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Arbol de BFS
El recorrido BFS determina un arbol con raız.
Cada vez que se marca un vecino se usa esa arista para elarbol.
1
2 3 4
5 6 7
8
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Extendiendo BFS
BFS guarda un bit de informacion por cada nodo.
Se puede extender y guardar mas informacion.
Distancia desde la raız (en el arbol de BFS)Cualquier dato asociado al recorrido (ej: “vengo de”)
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algorithm 2.3: bfs-dist(Grafo g ,Nodo v)
distp ←∞ ∀p ∈ V (g)cola← nueva colamarcar(v , 0)while ¬cola.empty()
do
p ← cola.pop()d ← distpfor each q ∈ g .vecinos(p)
do
{if distq =∞
then marcar(q, d + 1)
Algorithm 2.4: marcar(Nodo v ,Dist d)
distv ← dcola.push(v)
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Problema - Is it a tree
Problema SPOJ: 1436 - Is it a tree -http://www.spoj.pl/problems/PT07Y/.
Dado un grafo, determinar si es ademas un arbol.
Por definicion, un arbol es un grafo:
Conexo
Sin ciclos
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS - Camino mınimo
Hecho: Distancia entre adyacentes
Sea distv la distancia calculada por BFS en un grafo G desde elvertice inicial v0 hasta el vertice v . Si (u, v) ∈ E (G ) entonces|distu − distv | 6 1.
Teorema: Camino mınimo
En un grafo conexo el arbol de BFS es un arbol de caminosmınimos desde el vertice inicial del BFS.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS - Invariante
Invariantes y propiedades del algoritmo:
Hay tres estados disjuntos para los vertices:
No marcadoMarcado, pero no visitadoMarcado y visitado
Solo los vertices marcados pero no visitados estan en la cola
Todos los vecinos de los vertices visitados estan marcados
De todos los vertices marcados ya se conoce con certeza ladistancia mınima al inicio.
La distancia para los vertices en la cola es d o d + 1 (delanteestan todos los de d y luego los de d + 1), para algun valor d .
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS - Grafos no conexos
BFS recorre todos los vertices alcanzables desde el verticeincial (componente conexa).
Recorrer todas las componentes conexas requiere correr unBFS en cada componente.
Hay O(n) componentes y BFS tarda O(n + m).
¿Recorrer todas las componentes podrıa tardar O(n · (n+m))?
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algorithm 2.5: bfs-all(Grafo g)
marcadosp ← FALSE ∀p ∈ V (g)cola← nueva colafor each v ∈ g .nodos
do if ¬marcadosv
then
marcar(v)while ¬cola.empty()
do
p ← cola.pop()for each q ∈ g .vecinos(p)
do
{if ¬marcadosq
then marcar(q)
Algorithm 2.6: marcar(Nodo v)
marcadosv ← TRUEcola.push(v)
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS - Camino mınimo - Resumen
Condiciones particulares:
Grafo dirigido
Todos los pesos iguales y positivos
Camino mınimo
El camino mınimo de un nodo u a todos los demas se puederesolver con un BFS desde u.
Complejidad: O(n + m)
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Dijkstra
Condiciones particulares:
Grafo dirigido
Los pesos pueden ser distintos pero deben ser no negativos.
Algoritmo:
Al igual que en BFS, Dijkstra recorre los nodos en el orden dedistancia al origen.
El siguiente nodo a visitar lo elige como el mas cernano alorigen (no visitado anteriormente).
Al visitar un nodo actualiza (marca) sus vecinos.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Dijkstra
Hay dos clases de implementaciones:
Guardando la lista de distancias en un array
Mınimo: O(n)Actualizacion: O(1)
Guardando la lista de distancias en un heap o arbol binario debusqueda (ej: conjunto)
Mınimo: O(log(n))Actualizacion: O(log(n))
Hay n consultas de mınimo y m actualizaciones.Complejidad: O(n2) o O((n + m) log(n)).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algorithm 2.7: dijkstra(Grafo g ,Nodo v)
distp ←∞ ∀p ∈ V (g)vistop ← FALSE ∀p ∈ V (g)distv ← 0while ∃j ,¬vistoj
do
p ← argmin¬vistoj {distj}vistop ← TRUEfor each q ∈ g .vecinos(p)
do
{if distq > distp + costop,q
then distq ← distp + costop,q
distp puede ser un array (busqueda lineal), o un set<dist,nodo>
(busqueda binaria).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Dijkstra - Invariante
Invariantes y propiedades del algoritmo:
Hay tres estados disjuntos para los vertices:no marcado No se conoce ningun camino.
marcado Se conoce algun camino tentativo.visitado Se conoce un camino mınimo con certeza.
Nota: El primer grupo se puede incorporar al segundo grupo como si
tuvieran un camino de longitud ∞.
De todos los vecinos de los vertices visitados se conoce alguncamino.
De todos los vertices visitados ya se conoce con certeza ladistancia mınima al inicio.
La distancia para los vertices de los que no se tiene certezaque la distancia conocida es optima es mayor que para los quesı se tiene esa certeza.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Dijkstra - Explicacion
Argumento principal de la demostracion:
Argumento
El vertice con distancia tentativa menor no puede ser mejorado porninguno de los demas vertices no visitados.
Ese argumento usa fuertemente que las aristas son no negativas.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Bellman-Ford
Condiciones particulares:
Grafo dirigido
Los pesos pueden ser negativos
No puede haber ciclos negativos, aunque los detecta
Complejidad: O(n ·m).Calcula la distancia de un vertice hacia todos los demas vertices.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Algorithm 2.8: bellman-ford(Grafo g ,Nodo v)
distp ←∞ ∀p ∈ V (g)distv ← 0for i = 1 to n
do
dist ′ ← distfor each (p, q) ∈ g .aristas()
do{distq ← min(distq, dist
′p + costop,q)
Si en una iteracion de i no se actualiza ningun valor de dist,entonces se puede detener el algoritmo.
Si en vez de dist ′p se usa siempre distp el algoritmo evolucionapotencialmente mas rapido.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Bellman-Ford - Invariante
Al finalizar la itearcion i :
distu tiene la distancia del camino mas corto de v hasta u queusa i o menos aristas.
Propiedades
Al finalizar, distu tiene la distancia mınima entre v y u queusa n o menos aristas.
Si se itera n + 1 veces y se mejora dist aun en la ultimaiteracion, entonces hay un ciclo negativo.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Floyd-Warshall
Condiciones particulares:
Grafo dirigido
Los pesos pueden ser negativos
Puede haber ciclos negativos (alcanzables o no).
Complejidad: O(n3).Calcula la distancia de todos los vertices hacia todos los vertices.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Floyd-Warshall - Codigo
La implementacion del algoritmo es muy simple.
vvint dist(n, vint(n, INF)); /* Matriz de distancia */
... /* cargo la matriz de distancias */
forn(k, n) forn(i, n) forn(j, n) {
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
}
min es la operacion de minimizacion del problema.
+ es la operacion asociativa del peso entre dos aristas.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Floyd-Warshall - Invariante
Al finalizar la iteracion k del ciclo exterior:
La matriz disti ,j tiene la mınima distancia del camino de i a jque usa vertices intermedios en el conjunto {1, . . . , k}
Propiedades:
El camino mınimo (si existe y es acotado) entre i y j noutiliza dos veces el mismo vertice.
Al finalizar, v esta en un ciclo negativo si y solo si distv ,v < 0.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
Floyd-Warshall - Problemas
Algunuos problemas
ACM-ICPC UVA - 4299 - FRandomly-priced Tickets -http://acmicpc-live-archive.uva.es/nuevoportal/
data/problem.php?p=4299
Calcular la clausura transitiva de una relacion.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS con muchas colas
BFS no funciona cuando hay distintos pesos.
¿Por que? El orden BFS no es el mismo que el orden de distanciaal origen.
Solucion:Generar el mismo orden de distancia al origen usando varias colas.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Breadth-first search (BFS)DijkstraBellman-FordFloyd-Warshall
BFS con muchas colas
Condiciones particulares:
Grafo dirigido
Los pesos deben ser enteros no negativos y acotados por W .
Algoritmo:
Se tienen max(distp) + 1 colas, una para cada distancia.
Marcar un nodo con distancia d implica colocarlo en la cola d .
Las colas se van vaciando en orden creciente.
Si los pesos estan acotados por W , solo habra a lo sumoW + 1 colas no vacıas.
Complejidad: O(n + m + max(distp)).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Arbol generador mınimo
Definicion
Dado un grafo G conexo con pesos en las aristas, un arbolgenerador mınimo es un subgrafo de G que es un arbol de |V (G )|vertices, cuya suma de pesos es la menor posible.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Algorithm 3.1: prim(Grafo g ,Nodo v)
T ← ∅distp ←∞ ∀p ∈ V (g)vistop ← FALSE ∀p ∈ V (g)distv ← 0while ∃j ,¬vistoj
do
p ← argmin¬vistoj {distj}vistop ← TRUET ← T ∪ {(desdep, p)} (salvo la primera vez)for each q ∈ g .vecinos(p)
do
if distq > costop,q
then
{distq ← costop,qdesdeq ← p
v es cualquier vertice inicial.PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Prim
Hay dos clases de implementaciones:
Guardando la lista de distancias en un array
Mınimo: O(n)Actualizacion: O(1)
Guardando la lista de distancias en un heap o arbol binario debusqueda (ej: conjunto)
Mınimo: O(log(n))Actualizacion: O(log(n))
Hay n consultas de mınimo y m actualizaciones.Complejidad: O(n2) o O((n + m) log(n)).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Kruskal
Algorithm 3.2: kruskal(Grafo g ,Nodo v)
T ← ∅ordenar g .aristas segun costop,q de menor a mayorfor each (p, q) ∈ g .aristas
do
{if T ∪ {(p, q)} es sin ciclo
then T ← T ∪ {(p, q)}return (T )
Es conveniente representar G por definicion (lista de aristas).
“T ∪ {(p, q)} es sin ciclo” puede ser costoso de implementar.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Union-find
Defincion
Union-find es una estructura de datos que representa una particionde un conjunto de n elementos, con las siguientes operaciones:
unir(u, v): Une el conjunto donde esta u con el de v .
id(u): Devuelve el identificador del conjunto donde esta u.
Hay varias implementaciones que difieren en la complejidad:
Lista de ids. Consulta en O(1), junta en O(n).
Lista de ids y lista de elementos por cada id (la inversa).Consulta en O(1), junta u y v enO(min(|conj(u)|, |conj(v)|)), o bien, O(log(n)) amortizado.
Lista de puntero al padre. Consulta en O(n), junta en O(1).
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
PrimKruskal
Kruskal - Union-find
Algorithm 3.3: kruskal(Grafo g ,Nodo v)
T ← ∅ordenar g .aristas segun costop,q de menor a mayorfor each (p, q) ∈ g .aristas
do
if id(p) 6= id(q)
then
{T ← T ∪ {(p, q)}unir(p, q)
return (T )
Complejidad total: O(m · log(m))
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Cantidad de caminos
Problema
Dado un grafo dirigido G , ¿De cuantas formas se puede ir de u a vusando k o menos aristas?
Caso particular:
¿De cuantas formas se puede ir de u a v usando una arista?
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Cantidad de caminos
Problema
Dado un grafo dirigido G , ¿De cuantas formas se puede ir de u a vusando k o menos aristas?
Caso particular:
¿De cuantas formas se puede ir de u a v usando una arista?
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Cantidad de caminos
Sea A la matriz de adyacencia de G ,
Ak dice de cuantas forma se puede ir de i a j usandoexactamente k aristas.∑k
i=1 Ai resuelve el problema.
Prop:∑2k−1
i=0 Ai = (Ak + I ) ·∑k−1
i=0 Ai
Se puede resolver con Divide & Conquer o programacion dinamica.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Cantidad de caminos
Sea A la matriz de adyacencia de G ,
Ak dice de cuantas forma se puede ir de i a j usandoexactamente k aristas.∑k
i=1 Ai resuelve el problema.
Prop:∑2k−1
i=0 Ai = (Ak + I ) ·∑k−1
i=0 Ai
Se puede resolver con Divide & Conquer o programacion dinamica.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problema - Laberinto
Fausto se encuentra atrapado en un laberinto(como el de la Figura 1). Se pide calcular lamenor cantidad de movimientos (Norte, Sur,Este u Oeste) necesarios para que Faustoalcance la salida (marcada con “o”) dado queinicialmente se encuentra en el punto marcadocon “*”.
#######
#....o#
#.#####
#.#...#
#...#*#
#######
(Figura 1)
Descripcion: “#” es una pared, “.” es un espacio libre, “o” es lasalida y “*” es el punto donde estamos parados.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problema - Laberinto
Fausto puede estar en cualquiera de las casillas (estado).
Estando en algunas casillas es posible alcanzar otras con unmovimiento (transicion de estados).
Estos dos conceptos definen un grafo.
La cantidad mınima de movimientos para escapar se traduce aun camino mınimo en el grafo.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problema - Laberinto
Representacion del grafo, en un tablero de r × c .
V (G ) = [0, r)× [0, c)
(u, v) ∈ E (G )⇔ libre(u) ∧ libre(v) ∧ dist(u, v) == 1
Un nodo v se representa con dos enteros “i , j”.
El grafo se representa con dos enteros (r y c) y un mapa decasillas libres.
int r, c;
char mapa[MAX_R][MAX_C];
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problema - Laberinto
Vecinos de un nodo “i , j”:
const int ddi[4] = {-1, 1, 0, 0};
const int ddj[4] = { 0, 0, -1, 1};
forn(d, 4) {
int ii=i+ddi[d];
int jj=j+ddj[d];
if (enrango(ii, jj) && mapa[ii][jj] != ’#’) {
/* ii,jj es vecino */
}
}
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problema
Google Code Jam 2009 - Qualification Round - Problema B: http://code.google.com/codejam/contest/dashboard?c=90101
V (G ) = [0,H)× [0,W )
Un nodo v se representa con dos enteros “i , j”.
Cada nodo tiene a lo sumo un vecino donde vierte el agua(segun las reglas del problema).
Cada nodo tiene a lo sumo cuatro vecinos que vierten agua enel.
Se desea identificar las componentes conexas de ese grafo.
PAP Grafos
Definiciones y estructurasCamino mınimo
Arbol generador mınimoProblemas
Cantidad de caminosProblemas en grafos implıcitosProblemas
Problemas de hoy
SPOJ Brasil - 1759 - FFO Cubo -http://br.spoj.pl/problems/CUBO/ (Dijkstra)
ACM-ICPC UVA - 3985 - Board Games -http://acmicpc-live-archive.uva.es/nuevoportal/
data/problem.php?p=3985 (Floyd)
ACM-ICPC UVA - 4299 - Randomly-priced Tickets -http://acmicpc-live-archive.uva.es/nuevoportal/
data/problem.php?p=4299 (Floyd)
ACM-ICPC UVA - 3652 - Lazy Jumping Frog -http://acmicpc-live-archive.uva.es/nuevoportal/
data/problem.php?p=3652 (BFS por pisos)
PAP Grafos
top related