Upload
adjacicx
View
237
Download
0
Embed Size (px)
DESCRIPTION
algoritmos
Citation preview
Algoritmos Elementares
Leandro G. M. Alvim
Busca em Largura
Caminho Mnimo s at todos os outros Grafo com pesos unitrios
Busca em Largura
r s t u
v w x y
0 s
0
Busca em Largura
w r1 1
r s t u
v w x y
01
1
Busca em Largura
xr21
r s t u
v w x y
01
1
t2
2
2
Busca em Largura
x2
r s t u
v w x y
01
1
t2
v2
2
2
2
Busca em Largura
v2
r s t u
v w x y
01
1
x2
u3
2
2
2
3
Busca em Largura
u3
r s t u
v w x y
01
1
v2
y3
2
2
2
3
3
Busca em Largura
u3
r s t u
v w x y
01
1
y3
2
2
2
3
3
Busca em Largura
r s t u
v w x y
01
1
y3
2
2
2
3
3
Busca em Largura
r s t u
v w x y
01
1 2
2
2
3
3
rvore de Busca em Largura
rvore de Busca em Largura
Gpred = (Vpred,Epred), Vpred = {v e V | pred[v] nil} u {s} Epred = {(pred[v],v) | v e Vpred - {s}}
Para cada u e V[G] - {s} faa
cor[u] = branca
dist[u] = inf
pred[u] = nil
cor[s] = azul
dist[s] = 0
pred[s] = nil
fila = {s}
Enquanto fila != {} Faa
u = cabea(fila)
Para cada v e Adj[u] Faa
If cor[v] == branca Ento
cor[v] = cinza
d[v] = d[u] + 1
pred[v] = u
enfila(fila,v)
desenfila(fila)
cor[u] = azul
Caminho Mnimo
Imprime_caminho(G,s,v)
Se v = s ento
imprimir s
Seno Se pred[v] = nil ento
imprimir Sem caminho de ,s, para , v
Seno
imprime_caminho(G,s,pred[v])
imprimir v
Imprimindo Caminho Mnimo
Anlise de Desempenho
Inicializao Marcar os vrtices O(|V|)
Fila Enfilar, Desenfilar O(1)
Vizinhos Estrutura de Adjacncia O(|E|) Matriz de Adjacncia O(|V|^2)
Estrutura de Adjacncia O(|V|+|E|) Matriz de Adjacncia O(|V|^2)
Anlise de Desempenho
Problemas
Componente conexa pertencente a v Caminho Mnimo (pesos unitrios) Busca por chave
Busca em Profundidade
u v w
x y z
u
1/
Busca em Profundidade
u v w
x y z
u
1/ 2/
v
Busca em Profundidade
u v w
x y z
u
1/ 2/
v
3/
y
Busca em Profundidade
u v w
x y z
u
1/ 2/
v
3/
y
4/
x
Busca em Profundidade
u v w
x y z
u
1/ 2/
v
3/
y
4/5
B
Busca em Profundidade
u v w
x y z
u
1/ 2/
v
3/64/5
B
Busca em Profundidade
u v w
x y z
u
1/ 2/7
3/64/5
B
Busca em Profundidade
u v w
x y z
u
1/ 2/7
3/64/5
BF
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
BF
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
B
w
9/
F
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
B
w
9/
CF
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
B
w
9/
C
10/
z
F
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
B
w
9/
C
10/11
F
Busca em Profundidade
u v w
x y z
1/8 2/7
3/64/5
B
9/12
C
10/11
Floresta
F
Busca em Profundidade
Floresta
Gpred = (V,Epred), Epred = {(pred[v],v) e V | pred[v] nil}
Busca em Profundidade
Arestas Forward (F) Arestas que conectam v a um descendente
da rvore
Back (B) Arestas que conectam v a um ancestral da
rvore
Busca em Profundidade
Arestas
Tree (T) Arestas que pertencem a floresta
Cross (C) Demais arestas
Busca em Profundidade Aplicao Um grafo sem ciclos aquele que no
possui arestas do tipo B
Busca em Profundidade Aplicaes Estrutura de parnteses Tempo de descoberta e tempo final
Ordenao topolgica Deteco de ciclos Busca
Busca em Profundidade
busca_profundidade(G)Para cada u e G.v faa
cor[u] = branco
pred[u] = nil
tempo = 0
Para cada u e G.v faa
Se cor[u] = branco ento
visita(G,u)
Busca em Profundidadevisita(G,u)
tempo = tempo +1
d[u] = tempo
cor[u] = cinza
Para cada v e G.Adj[v] faa
Se cor[v] = branco ento
pred[v] = u
visita(G,v)
cor[u] = preto
tempo = tempo + 1
f[u] = tempo
Anlise de Desempenho
Inicializao Marcar os vrtices O(|V|)
Vizinhos Estrutura de Adjacncia O(|E|) Matriz de Adjacncia O(|V|^2)
Estrutura de Adjacncia O(|V|+|E|) Matriz de Adjacncia O(|V|^2)
Anlise de Desempenho