Algoritmos sobre Grafos - Departamento de Ciencias e Ingeniería ...
Algoritmos sobre Grafos - Departamento de Ciencias e Ingeniería ...
Algoritmos sobre Grafos - Departamento de Ciencias e Ingeniería ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Lema<br />
Introducción<br />
Recorridos<br />
Or<strong>de</strong>namiento topológico<br />
Componentes fuertemente conexos<br />
Puntos <strong>de</strong> articulación y puentes<br />
Flujo máximo<br />
Recorrido por Niveles<br />
Recorrido por profundidad<br />
el Nivel <strong>de</strong> cada nodo es la distancia (cantidad <strong>de</strong> arcos) que<br />
<strong>de</strong>ben recorrerse en la foresta para llegar <strong>de</strong>s<strong>de</strong> la raíz al nodo<br />
correspondiente<br />
se representa por un arreglo adicional nivel[1..n], inicializado<br />
en 0<br />
se <strong>de</strong>be recordar que la raíz es en principio un nodo arbitrario<br />
se pue<strong>de</strong>n calcular esta información adicional al mismo tiempo<br />
que se hace el recorrido; esto no agrega tiempo adicional al<br />
or<strong>de</strong>n <strong>de</strong>l algoritmo<br />
Pablo R. Fillottrani <strong>Algoritmos</strong> y Complejidad<br />
Introducción<br />
Recorridos<br />
Or<strong>de</strong>namiento topológico<br />
Componentes fuertemente conexos<br />
Puntos <strong>de</strong> articulación y puentes<br />
Flujo máximo<br />
Recorrido por Niveles<br />
Recorrido por profundidad<br />
se pue<strong>de</strong>n probar las siguientes propieda<strong>de</strong>s <strong>sobre</strong> los recorridos<br />
por nivel<br />
Si el grafo es conexo, entonces la foresta <strong>de</strong> recorrido es un árbol<br />
Lema<br />
en el caso <strong>de</strong> un grafo dirigido, conexo significa que existe un<br />
camino <strong>de</strong> ida y <strong>de</strong> vuelta entre cada par <strong>de</strong> nodos<br />
al finalizar un recorrido BF, nivel[v] contiene la mínima distancia<br />
<strong>de</strong>s<strong>de</strong> la raíz <strong>de</strong>l árbol <strong>de</strong> v en la foresta <strong>de</strong> recorrido hasta v<br />
ejercicio: comparar con el algoritmo <strong>de</strong> Dijkstra<br />
Pablo R. Fillottrani <strong>Algoritmos</strong> y Complejidad<br />
Introducción<br />
Recorridos<br />
Or<strong>de</strong>namiento topológico<br />
Componentes fuertemente conexos<br />
Puntos <strong>de</strong> articulación y puentes<br />
Flujo máximo<br />
Recorrido por Niveles<br />
Recorrido por profundidad<br />
PROCEDURE visitarBF(G,Q)<br />
WHILE no Q.esVacía()<br />
u::=Q.primero()<br />
IF existe w adyacente a u<br />
tal que color[w]=blanco<br />
color[w]::=gris<br />
padre[w]::=u; nivel[w]::=nivel[u]+1<br />
Q.insertar(w)<br />
ELSE<br />
color[u]::=negro<br />
Q.sacarDeCola()<br />
ENDIF<br />
ENDWHILE<br />
Pablo R. Fillottrani <strong>Algoritmos</strong> y Complejidad<br />
Introducción<br />
Recorridos<br />
Or<strong>de</strong>namiento topológico<br />
Componentes fuertemente conexos<br />
Puntos <strong>de</strong> articulación y puentes<br />
Flujo máximo<br />
Recorrido por Niveles<br />
Recorrido por profundidad<br />
el recorrido permite clasificar los arcos <strong>de</strong>l grafo en las siguientes<br />
categorías:<br />
arcos <strong>de</strong> la foresta son los arcos (padre[v],v) utilizados en el<br />
recorrido<br />
arcos hacia atrás son arcos (u,v) en don<strong>de</strong> v es un ancestro <strong>de</strong><br />
u en la foresta <strong>de</strong>l recorrido<br />
arcos hacia a<strong>de</strong>lante son arcos (u,v) en don<strong>de</strong> v es<br />
<strong>de</strong>scendiente <strong>de</strong> u en la foresta <strong>de</strong>l recorrido<br />
arcos que cruzan son los <strong>de</strong>más arcos que no entran en las otras<br />
categorías. Los extremos pue<strong>de</strong>n estar en el mismo árbol o en<br />
árboles diferentes<br />
Pablo R. Fillottrani <strong>Algoritmos</strong> y Complejidad