- Definiciones básicas y Algoritmos elementales

Anuncio
Grafos
Deniciones básicas y Algoritmos elementales
Andrés Becerra Sandoval
Motivación
I Los grafos nos sirven para representar:
I automatas
I redes de comunicación
I circuitos
I modelos de lenguaje
I dependencias entre entidades
I lugares y conexiones entre ellos
I ...
Búsquedas
I En amplitud
BFS - Breadth First Search
DFS - Depth First Search
I En profundidad
DFS
DFS(G,s)
1
2
for each vertex ∈ [ ]
do
[ ] ← BLANCO
u
color u
3
4
5
6
7
V G
π[u ] ← NIL
←0
each vertex u ∈ V [G ]
do if color [u ] = BLANCO
then DFS-VISIT(u )
tiempo
for
DFS-visit
DFS-visit(G , s )
1
2
3
4
5
6
7
8
9
10
[ ] ← GRIS
time ← time + 1
d [u ] ← time
for each v ∈ Adj [u ]
do if color [v ] = BLANCO
then π[v ] ← u
DFS-VISIT(v )
color [u ] ← NEGRO
time ← time + 1
f [u ] ← time
color u
Análisis
I
V
operaciones
I La suma de los elementos de todas las listas es
I Conclusión:
(
O V
+ A)
A
Propiedades
Para toda pareja de vértices u , v se cumple:
I Los intervalos
[ [d [u ], f [u ] ]
y
[ [d [v ], f [v ] ]
son disjuntos y no
hay descendencia entre ellos
[d [u ], f [u ]
[ [d [v ], f [v ] ] y u es
I El intervalo
de
está contenido completamente dentro
descendiente de v en el bosque de
búsqueda por profundidad
[d [v ], f [v ]
[ [d [u ], f [u ] ] y v es
I El intervalo
de
está contenido completamente dentro
descendiente de u en el bosque de
búsqueda por profundidad
Corolario:
I
v
es un descendiente propio de u en el bosque de búsqueda
por profundidad
sii [
[ ] < d [v ] < f [v ] < f [u ]
d u
Mas propiedades
Theorem
Ruta blanca
En un árbol de búsqueda por profundidad v es descendiente de u sii
[ ]
en el tiempo d u
en que se descubre u, el vértice v puede
alcanzarse desde u a través de una ruta compuesta de vértices
blancos unicamente.
Clasicación de arcos
I Arcos del árbol [llega a un nodo BLANCO]
I Arcos hacia atrás (hacia un ancestro) [llega a un nodo GRIS]
I Arcos hacia adelante (hacia un descendiente) [llega a un nodo
NEGRO]
I Arcos cruzados [llega a un nodo NEGRO]
Theorem
Para un grafo no dirigido no hay arcos hacia adelante ni cruzados.
Ordenamiento topológico
TOPOLOGICAL-SORT(G )
1
2
3
llamar a DFS(G)
calcula f[v] para todo v
a medida que naliza cada vértice se pone en el inicio de una lista
return la lista enlazada
Componentes fuertemente conectados
Componentes-Fuertemente-Conectados(G )
1
llamar a DFS(G)
2
calcular G
3
llamar a DFS(G
4
con los vértices de cada árbol del bosque se forma un componente
T
T)
calcula f[v] para todo v
considerando los vértices por f[u] decreciente
Descargar