Professional Documents
Culture Documents
Campina Grande, existem vrios tanques de armazenamento e Campina Grande, existem vrios tanques de armazenamento e tratamento da gua que vem do Aude de Boqueiro. Como tratamento da gua que vem do Aude de Boqueiro. Como interligar os tanques (em princpio, qulalquer par de tanques pode interligar os tanques (em princpio, qulalquer par de tanques pode ser interligado), de modo a garantir o correto abastecimento e ser interligado), de modo a garantir o correto abastecimento e que o custo seja mnimo? que o custo seja mnimo?
rvore de Cobertura
rvore de cobertura
Um grafo pode ter mais de uma rvore de cobertura? Um grafo pode ter mais de uma rvore de cobertura? Um grafo no conectado pode ter uma rvore de cobertura? Um grafo no conectado pode ter uma rvore de cobertura?
rvore de cobertura
Um grafo pode ter mais de uma rvore de cobertura? Um grafo pode ter mais de uma rvore de cobertura? Um grafo no conectado pode ter uma rvore de cobertura? Um grafo no conectado pode ter uma rvore de cobertura?
Como Encontrar uma rvore de Cobertura? Para encontrar uma rvore de cobertura: Para encontrar uma rvore de cobertura:
Se o grafo G no tem ciclos, G uma rvore de Se o grafo G no tem ciclos, G uma rvore de cobertura. cobertura. Se G tem ciclo, necessrio remover Se G tem ciclo, necessrio remover recursivamente arestas (at achar uma rvore), recursivamente arestas (at achar uma rvore), mantendo o grafo conectado. mantendo o grafo conectado.
d 14
9 e
d 14
9 e
Aresta Segura
4 a 8
b 11 7 h
8 2 i 6
7 4
d 14
9 e 10
Algoritmo de Kruskal
1. A 1. A 2. for cada vrtice v V[G] 2. for cada vrtice v V[G] 3. do Make-Set(v) 3. do Make-Set(v) 4. Ordene as arestas de E (ordem crescente por peso w) 4. Ordene as arestas de E (ordem crescente por peso w) 5. edge (u,v) E, (considerando a ordem) 5. edge (u,v) E, (considerando a ordem) 6. if Find-Set(u) Find-Set(v) 6. if Find-Set(u) Find-Set(v) 7. then A A {(u,v)} 7. then A A {(u,v)} 8. Union(u,v) 8. Union(u,v) 9. return A 9. return A
Algoritmo de Prim
1. for cada vrtice u V[G] 1. for cada vrtice u V[G] 2. do chave[u] // chave[u] o custo de u para vrtice da rvore 2. do chave[u] // chave[u] o custo de u para vrtice da rvore 3. [u] NIL 3. [u] NIL // rr a raiz da rvore 4. chave[r] 0 // a raiz da rvore 4. chave[r] 0 5. Q V[G] // Q contm todos os vrtices que ainda no esto na rvore 5. Q V[G] // Q contm todos os vrtices que ainda no esto na rvore 6. while Q 6. while Q 7. do u Extract-Min[Q] 7. do u Extract-Min[Q] 8. for cada v Adj[u] 8. for cada v Adj[u] 9. do if v Q w(u,v) < chave[v] 9. do if v Q w(u,v) < chave[v] 10. then [v] u 10. then [v] u 11. chave[v] w(u,v) 11. chave[v] w(u,v)