Академический Документы
Профессиональный Документы
Культура Документы
Camino mnimo
Arbol
generador mnimo
Problemas
13 de Abril de 2010
Alejandro Deymonnaz
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Menu del da
1
Definiciones y estructuras
Grafos
Arboles
Camino mnimo
Breadth-first search (BFS)
Dijkstra
Bellman-Ford
Floyd-Warshall
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Estructura de datos
Arbol
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Grafos
Un grafo se define como la pareja (V , E ), de vertices (o nodos, o
puntitos) y ejes (o aristas, o rayitas, o flechitas), donde
E V V.
Se usan para modelar muchos problemas que involucran puntitos y
rayitas.
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.
Implcitamente, por otra estructura.
En adelante, n es la cantidad de vertices (|V |) y m es la cantidad
de aristas (|E |).
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
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 pareja
ordenada.
Hay muchas propiedades sobre grafos:
Con o sin ciclos (dirigidos o no dirigidos)
Conexos o no conexos.
Completos, vacos, triviales.
Hamiltonianos, euclideanos, cactus, etc.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Grafos - definiciones
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Arboles
Arbol
Un arbol es un grafo conexo y sin ciclos.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
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 (caso
particular).
Un vertice con solo un vecino se llama hoja.
Algunas propiedades:
Hay un u
nico camino entre todo par de vertices.
m =n1
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Grafos
Arboles
Arboles
con raz (rooted trees)
Arbol
con raz
Un arbol con raz es un arbol con un vertice distinguido, llamado
raz.
Tambien se puede representar como un grafo (y un vertice
distinguido).
Tienen la nocion de padre e hijo, de acuerdo a la cercana a la
raz.
Admiten una representaci
on recursiva: Un arbol es
una raz
un conjunto de sub-arboles, hijos de esa raz
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Camino mnimo
Problema de Camino mnimo
Dado un grafo G con pesos en las aristas, el problema de camino
mnimo entre dos nodos u y v consiste en encontrar un camino
entre esos nodos cuyo peso sea menor o igual que el peso de
cualquier otro camino entre u y v .
Hay variantes:
Se puede calcular el camino mnimo entre todo par de nodos.
El peso de un camino puede ser la suma de los pesos
individuales, el producto, el mayor, etc.
El grafo puede ser dirigido o no dirigido.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Algoritmo
BFS
Breadth-first search (BFS) o b
usqueda en ancho es un algoritmo
para recorrer los nodos de un grafo en un orden especfico.
Comienza por un vertice distinguido
Por cada vertice visitado, marca en una cola todos sus vecinos
no 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).
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
for each
q g .vecinos(p)
do
if marcadosq
do
then marcar (q)
Algorithm 2.2: marcar(Nodo v )
marcadosv TRUE
cola.push(v )
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Arbol
de BFS
El recorrido BFS determina un arbol con raz.
Cada vez que se marca un vecino se usa esa arista para el
arbol.
1
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Extendiendo BFS
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
d distp
do for each
q g .vecinos(p)
if distq =
do
then marcar (q, d + 1)
Algorithm 2.4: marcar(Nodo v , Dist d)
distv d
cola.push(v )
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Problema - Is it a tree
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
BFS - Invariante
Invariantes y propiedades del algoritmo:
Hay tres estados disjuntos para los vertices:
No marcado
Marcado, pero no visitado
Marcado y visitado
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
marcar
(v
)
while
cola.empty
()
cola.pop()
then
for each
q g .vecinos(p)
do
if marcadosq
do
then marcar (q)
Algorithm 2.6: marcar(Nodo v )
marcadosv TRUE
cola.push(v )
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Condiciones particulares:
Grafo dirigido
Todos los pesos iguales y positivos
Camino mnimo
El camino mnimo de un nodo u a todos los demas se puede
resolver con un BFS desde u.
Complejidad: O(n + m)
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
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 de
distancia al origen.
El siguiente nodo a visitar lo elige como el mas cernano al
origen (no visitado anteriormente).
Al visitar un nodo actualiza (marca) sus vecinos.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Dijkstra
Hay dos clases de implementaciones:
Guardando la lista de distancias en un array
Mnimo: O(n)
Actualizaci
on: O(1)
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
vistop TRUE
do for each
q g .vecinos(p)
do
then distq distp + costop,q
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Dijkstra - Invariante
Invariantes y propiedades del algoritmo:
Hay tres estados disjuntos para los vertices:
no marcado No se conoce ning
un camino.
marcado Se conoce alg
un camino tentativo.
visitado Se conoce un camino mnimo con certeza.
Nota: El primer grupo se puede incorporar al segundo grupo como si
tuvieran un camino de longitud .
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Dijkstra - Explicacion
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
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.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
distp
distv
for i
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Bellman-Ford - Invariante
Al finalizar la itearcion i:
distu tiene la distancia del camino mas corto de v hasta u que
usa i o menos aristas.
Propiedades
Al finalizar, distu tiene la distancia mnima entre v y u que
usa n o menos aristas.
Si se itera n + 1 veces y se mejora dist a
un en la u
ltima
iteracion, entonces hay un ciclo negativo.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
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.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Floyd-Warshall - Codigo
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Floyd-Warshall - Invariante
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
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 relaci
on.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
Arbol
generador mnimo
Definicion
Dado un grafo G conexo con pesos en las aristas, un arbol
generador mnimo es un subgrafo de G que es un arbol de |V (G )|
vertices, cuya suma de pesos es la menor posible.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
p argminvistoj {distj }
vistop TRUE
if distq >
costop,q
distq costop,q
do
then
desdeq p
v es cualquier vertice inicial.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
Prim
Hay dos clases de implementaciones:
Guardando la lista de distancias en un array
Mnimo: O(n)
Actualizaci
on: O(1)
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
Kruskal
Algorithm 3.2: kruskal(Grafo g , Nodo v )
T
ordenar g .aristas segun costop,q de menor a mayor
for each
(p, q) g .aristas
if T {(p, q)} es sin ciclo
do
then T T {(p, q)}
return (T )
Es conveniente representar G por definici
on (lista de aristas).
T {(p, q)} es sin ciclo puede ser costoso de implementar.
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
Union-find
Defincion
Union-find es una estructura de datos que representa una particion
de 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 en
O(min(|conj(u)|, |conj(v )|)), o bien, O(log (n)) amortizado.
Lista de puntero al padre. Consulta en O(n), junta en O(1).
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Prim
Kruskal
Kruskal - Union-find
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Cantidad de caminos
Problema
Dado un grafo dirigido G , De cuantas formas se puede ir de u a v
usando k o menos aristas?
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Cantidad de caminos
Problema
Dado un grafo dirigido G , De cuantas formas se puede ir de u a v
usando k o menos aristas?
Caso particular:
De cuantas formas se puede ir de u a v usando una arista?
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Cantidad de caminos
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Cantidad de caminos
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Problema - Laberinto
Fausto se encuentra atrapado en un laberinto
(como el de la Figura 1). Se pide calcular la
menor cantidad de movimientos (Norte, Sur,
Este u Oeste) necesarios para que Fausto
alcance la salida (marcada con o) dado que
inicialmente se encuentra en el punto marcado
con *.
#######
#....o#
#.#####
#.#...#
#...#*#
#######
(Figura 1)
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Problema - Laberinto
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Problema - Laberinto
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
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 */
}
}
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
Problema
Sabi
Grafos
Definiciones y estructuras
Camino mnimo
Arbol
generador mnimo
Problemas
Cantidad de caminos
Problemas en grafos implcitos
Problemas
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)
Sabi
Grafos