Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AnalisisAlgs 10-Grafos Jes
AnalisisAlgs 10-Grafos Jes
Análisis de Algoritmos 1
Grafos
2
Análisis de Algoritmos
Matriz de adyacentas
Esta representación es muy útil para grafos densos (aquellos grafos con
muchas aristas, usualmente |E| = O(|V| 2) ).
Análisis de Algoritmos 3
Lista de adyacencias
Esta representación es útil cuando los grafos son dispersos
(aquellos grafos con pocas aristas, normalmente |E| = O(|V| ) ).
Análisis de Algoritmos 4
Dos ejemplos de representaciones de grafos
5
Grafos dirigidos
6
Ejercicio
• Representar el siguiente grafo con una lista de
adyacencias y una matriz de adyacencias.
r s t u
v w x y
7
r s t u
v w x y
r s t u v w x y
r 0 1 0 0 1 0 0 0 r v s
s 1 0 0 0 0 1 0 0 s r w
t 0 0 0 1 0 1 1 0 t w x u
u 0 0 1 0 0 0 1 1 u t x y
v 1 0 0 0 0 0 0 0 v r
w 0 1 1 0 0 0 1 0 w s t x
x 0 0 1 1 0 1 0 1 x w t u y
y 0 0 0 1 0 0 1 0 y x u
8
Ejercicio
u v w
x y z
Análisis de Algoritmos 9
Busqueda en anchura
Análisis de Algoritmos 10
Busqueda en anchura
Análisis de Algoritmos 11
Busqueda en anchura
12
Análisis de Algoritmos
Busqueda en anchura
Análisis de Algoritmos 13
Busqueda en anchura
r v s r s t u
s r w
t w x u
u t x y
v r
w s t x
x w t u y
v w x y
y x u
Análisis de Algoritmos 14
Variables
Q es una cola tipo “el primero que entra es el primero que sale” que sirve para
guardar temporalmente los vértices grises.
Análisis de Algoritmos 15
Algoritmo BFS
Lista de adyacencia
r v s
s r w
t w x u
u t x y
Inicialización de variables
v r
w s t x
x w t u y
y x u
Examina vecinos de
vértices grises
Actualiza variables
Análisis de Algoritmos 16
Busqueda en anchura (Ejemplo)
r s t u
∞ 0 ∞ ∞
∞ ∞ ∞ ∞
v w x y
Q s
Análisis de Algoritmos 17
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞ ∞
∞ 11 ∞ ∞
v w x y
Q w
s r
u=s
Análisis de Algoritmos 18
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
∞ 11 ∞
2 ∞
v w x y
Q r t x
u=w
Análisis de Algoritmos 19
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
∞2 11 ∞
2 ∞
v w x y
Q t x v
u=r
Análisis de Algoritmos 20
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
v w x y
Q xvu
u=t
Análisis de Algoritmos 21
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
3
v w x y
Q vu y
u=x
Análisis de Algoritmos 22
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
3
v w x y
Q u y
u=v
Análisis de Algoritmos 23
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
3
v w x y
Q y
u=u
Análisis de Algoritmos 24
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
3
v w x y
Q
u=y
Análisis de Algoritmos 25
Búsqueda en anchura (Ejemplo)
r s t u
1 0 ∞2 ∞
3
∞2 11 ∞
2 ∞
3
v w x y
Q NIL
Análisis de Algoritmos 26
Búsqueda en anchura (Ejemplo)
r s t u
s
1 0 ∞2 ∞
3
0
r 1 1
w
t ∞2 11 ∞
2 ∞
3
∞2 ∞
2 2 v w x y
v x
3 3
y u
Análisis de Algoritmos 27
Tiempo de ejecución
O(|V|+|E| )
O(|V|)
O(1)
O(1)
O(1)
O(|V|)
O(|E|)
O(1)
O(1)
Análisis de Algoritmos 28
Búsqueda en profundidad
Análisis de Algoritmos 29
Búsqueda en profundidad
Análisis de Algoritmos 30
Búsqueda en profundidad
Análisis de Algoritmos 31
Algoritmo DFS
Inicialización de variables
Inicia el crecimiento
de un árbol
Procesa vértice
descubierto
Continúa la búsqueda en
profundidad
32
Análisis de Algoritmos
Búsqueda en profundidad (Ejemplo)
u v w
x y z
Análisis de Algoritmos 33
Búsqueda en profundidad (Ejemplo)
u v w
x y z
Análisis de Algoritmos 34
Búsqueda en profundidad (Ejemplo)
u|v x
u v w
1/
x y z
Análisis de Algoritmos 35
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
x y z
v
Análisis de Algoritmos 36
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
3/
x y y|x
z
v y
Análisis de Algoritmos 37
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
4/ 3/
x y y|x
z
v y
x
Análisis de Algoritmos 38
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
4/ 3/
x x|v
y y|x
z
v y
x
NO!
v != white
Análisis de Algoritmos 39
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
4/ 3/
x x|v
y y|x
z
v y
x
Análisis de Algoritmos 40
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
4/5 3/
x x|v
y y|x
z
v y
x
Análisis de Algoritmos 41
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/
4/5 3/6
x x|v
y y|x
z
v y
Análisis de Algoritmos 42
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/7
4/5 3/6
x x|v
y y|x
z
v
Análisis de Algoritmos 43
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/7
4/5 3/6
x x|v
y y|x
z
Análisis de Algoritmos 44
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/ 2/7
NO!
x != white
4/5 3/6
x x|v
y y|x
z
Análisis de Algoritmos 45
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/8 2/7
4/5 3/6
x x|v
y y|x
z
Análisis de Algoritmos 46
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/8 2/7
4/5 3/6
x x|v
y y|x
z
Análisis de Algoritmos 47
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w
1/8 2/7
4/5 3/6
x x|v
y y|x
z
v != white
w == white
x != white
y != white z == white
Análisis de Algoritmos 48
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
1/8 2/7 9/
4/5 3/6
x x|v
y y|x
z
w
Análisis de Algoritmos 49
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
1/8 2/7 9/
x x|v
y y|x
z z|z
w z
Análisis de Algoritmos 50
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
1/8 2/7 9/
x x|v
y y|x
z z|z
w z
Análisis de Algoritmos 51
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
1/8 2/7 9/
x x|v
y y|x
z z|z
w z
Análisis de Algoritmos 52
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
x x|v
y y|x
z z|z
w
Análisis de Algoritmos 53
Búsqueda en profundidad (Ejemplo)
u|v x
u v v|y
w w|y z
x x|v
y y|x
z z|z
Análisis de Algoritmos 54
Tiempo de ejecución
O(|V|)
.
O(1)
O(|V|+|E| )
O(|V|)
O(1)
O(|E|)
O(1)
Análisis de Algoritmos 55
Clasificación de aristas
Aristas del árbol. ( ) Son aquellas que pertenecen al bosque de
profundidad. La arista (u,v) es una arista del árbol si v fue
descubierta por primera vez al explorar la arista (u,v).
B
Aristas traseras( ) La arista (u,v) conecta u con un ancestro v en
un árbol de profundidad. En grafos dirigidos, los auto ciclos son
aristas traseras.
F
Aristas delanteras ( ) La arista (u,v) conecta u con un
descendiente v en un árbol de profundidad.
C
Aristas cruzadas( ) Son aristas que van entre vértices del mismo
árbol siempre y cuando no haya relación acenstro-descendiente entre
los vértices. También son aquellas aristas que tienen sus extremos en
árboles de profundidad distintos.
Análisis de Algoritmos 56
57
Propiedades
Análisis de Algoritmos 59
Propiedades
Ordenamiento topológico
Asigna a cada vértice un orden, de tal forma que si G
tiene a la arista (u,v), entonces u aparece antes que v
en el ordenamiento. Se pueden ordenar los vértices
topológicamente si y solo si el grafo acíclico es dirigido.
Análisis de Algoritmos 60
Propiedades
Análisis de Algoritmos 61
Propiedades
Análisis de Algoritmos 62
Ejercicio
Hacer un ordenamiento topológico empezando de socks
63
Propiedades
Análisis de Algoritmos 64
Propiedades
Los intervalos [u.d, u.f] y [v.d, v.f] son disjuntos y ninguno de ellos, u o v, es un
descendiente del otro en el bosque de profundidad.
El intervalo [u.d, u.f] está contenido completamente dentro del intervalo [v.d, v.f] , y u es
un descendiente de v en un árbol de profundidad.
El intervalo [v.d, v.f] está contenido completamente dentro del intervalo [u.d, u.f] , y v es
un descendiente de u en un árbol de profundidad.
Análisis de Algoritmos 65
Propiedades
Análisis de Algoritmos 66
Ejercicio
Análisis de Algoritmos 67