A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmo de PRIM para MST

Apresentações semelhantes


Apresentação em tema: "Algoritmo de PRIM para MST"— Transcrição da apresentação:

1 Algoritmo de PRIM para MST
Disciplina Análise de Algoritmos Bacharelado em CC

2 Algoritmo de PRIM Utiliza a seguinte estratégia para construir o corte a cada etapa: S = conjunto de vértices de Xk-1 Utiliza uma estratégia análoga ao do Algoritmo de Dijkstra para pegar a aresta de menor custo a cada etapa, atravessando o corte.

3 Algoritmo de Dijkstra Input: Grafo G (dirigido ou não), vértice S, cada aresta e tem uma dist(e) associada. Output: para cada vértice v, dist(v) de S a v, distância do menor caminho entre S e v. Para todo vértice u dist(u) = infinito prev(u) = nil dist(S) = 0 Constrói H = fila com prioridade contendo os vértices de G (prioridade é a menor distância a raiz S) While H ≠ u = deletemin(H) Para cada aresta uv se dist(v) > dist(u) + dist(u,v) dist(v) = dist(u) + dist(u,v) recoloca(H,v) (v é recolocado na fila segundo sua prioridade)

4 Algoritmo de PRIM Input: Grafo G (dirigido ou não), vértice S, cada aresta e tem um custo(e) associada. Output: MST de G Para todo vértice u custo(u) = infinito prev(u) = nil Escolhe vértice inicial u0 Custo(u0) = 0 Constrói H = fila com prioridade contendo os vértices de G (prioridade é o custo do vértice) While H ≠ u = deletemin(H) Para cada aresta uv se custo(v) > custo(u,v) custo(v) = custo(u,v) recoloca(H,v) (v é recolocado na fila segundo sua prioridade)

5 Análise de Complexidade de PRIM
A mesma do algoritmo de Dijkstra Esquema geral: |V|.insert + |V|.deletemin + |E|.recoloca Fila implementada como array: |V|.O(1) + |V|.|V| + |E|.O(1) = O(|V|2) + O(|V|+|E|) = O(|V|2) Fila implementada como heap binário: |V|.log(|V|) + |V|.log(|V|) + |E|.log(|V|) = (|E| + |V|).log(|V|)

6 Exemplo de Aplicação S A B C D E F { } 0/nil /nil 6 5 A C E 4 1 3 5 2
Fila com prioridade H S A B C D E F { } 0/nil /nil Etapa 0

7 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A 6 5
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A Etapa 0 Etapa 1

8 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A {A,D} 2/D 4/D Etapa 0 Etapa 1 Etapa 2

9 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A {A,D} 2/D 4/D {A,D,B} 1/B Etapa 0 Etapa 1 Etapa 2 Etapa 3

10 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A {A,D} 2/D 4/D {A,D,B} 1/B {A,D,B,C} 5/C 3/C Etapa 0 Etapa 1 Etapa 2 Etapa 3 Etapa 3 Etapa 4

11 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A {A,D} 2/D 4/D {A,D,B} 1/B {A,D,B,C} 5/C 3/C {A,D,B,C,F} 4/F Etapa 0 Etapa 1 Etapa 2 Etapa 3 Etapa 3 Etapa 4 Etapa 5

12 Exemplo de Aplicação S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A
1 3 5 2 4 B D F 2 4 Fila com prioridade H S A B C D E F { } 0/nil /nil {A} 5/A 6/A 4/A {A,D} 2/D 4/D {A,D,B} 1/B {A,D,B,C} 5/C 3/C {A,D,B,C,F} 4/F Etapa 0 Etapa 1 Etapa 2 Etapa 3 Etapa 3 Etapa 4 Etapa 5


Carregar ppt "Algoritmo de PRIM para MST"

Apresentações semelhantes


Anúncios Google