Algoritmo de Prim - UFG

24
1 Algoritmos em Grafos Algoritmo de Prim

Transcript of Algoritmo de Prim - UFG

Page 1: Algoritmo de Prim - UFG

1Algoritmos em Grafos

Algoritmo de Prim

Page 2: Algoritmo de Prim - UFG

Algoritmo de Prim

Universidade Federal de Goiás Campus de Catalão

Disciplina de Teoria dos Grafos

Alunos:Cicero MauricioEdson GomesFernanda NeivaJander DiegoRaina Marques Simone AlbertoVinicios

Page 3: Algoritmo de Prim - UFG

Criação do algoritmo

Em 1930 foi descoberto por um matemático: Vojtěch Jarník.

Em 1957 por um cientista da computação: Robert Clay Prim .

Em 1959 redescoberto pelo matemático: Edsger Dijkstra.

3

Page 4: Algoritmo de Prim - UFG

Robert Clay Prim

Nasceu em 1921na cidade deSweetwater noTexas.

4

Page 5: Algoritmo de Prim - UFG

Formação Profissional

Formou-se em matemática e ciência da computação.

Em 1941 recebeu seu BS em Engenharia Elétrica da Universidade de Princeton .

Em 1949 recebeu seu Ph.D. em Matemática da Universidade de Princeton.

5

Page 6: Algoritmo de Prim - UFG

De 1948 a 1949 trabalhou na Universidade de Princeton como um associado de pesquisa.

Segunda Guerra Mundial(1941-1944) trabalhou como engenheiro.

De 1944 até 1949 trabalhou para United States Naval como engenheiro.

6

Formação profissional

Page 7: Algoritmo de Prim - UFG

Formação profissional

De 1958-1961 atuou como diretor de pesquisa da matemática Bell Laboratoriesperiodo que criou o algoritmo de Prim.

Em 1962 tornou-se vice-presidente de pesquisa da Sandia NationalLaboratories.

7

Page 8: Algoritmo de Prim - UFG

Descrição do algoritmo

O algoritmo de Prim ou DJP ou algoritmo de Prim-Jarník é uma aplicação em Teoria dos Grafos e sua função é encontrar a árvore geradora mínima para um grafo conexo com pesos.

8

Page 9: Algoritmo de Prim - UFG

Descrição do AlgoritmoComeça em um vértice até atar todos os

vértices.

Analisa a cada nó todas as possibilidades de transição e seus custos e escolhe o menor deles.

Vai analisando a cada iteração o menorcaminho e guarda-o na solução que seráretornada no final.

9

Page 10: Algoritmo de Prim - UFG

10

Características:Tabelinha da

salvação.

Page 11: Algoritmo de Prim - UFG

Algoritmo Características

Prim

-Possui um ponto de partida;-Não pode ser orientado;-Os pesos podem ser iguais;-Combinação linear entre os vértices-Grafo Conexo;-Acíclico;

Dijkstra

-Possui um ponto de partida;-Pode ser orientado ou não;-O Custo das arestas não podem ser negativos;-Grafo Conexo

Kruskal-Não possui um ponto de partida;-Não pode ser orientado;-Acíclico;

Boruvka

-Pesos distintos;-Alta velocidade de convergência;-Otimização combinatória;-Pode ser orientado ou não;-Não possui ponto de partida;-Busca a MST a partir da construção de uma floresta; 11

Page 12: Algoritmo de Prim - UFG

Aplicações:

O algoritmo MENTOR para o projecto topológico de redes de telecomunicaçõesCelso Lemos, Rui Valadas (REVISTA DO DETUA, VOL. 2, Nº 3, SETEMBRO 1998).

Projeto do LAC/INPE voltado para a implementação de algoritmos em Sistemas Geográficos de Informação, como o software ARC-INFO (ESRI), em uso no projeto.

12

Page 13: Algoritmo de Prim - UFG

Algoritmo de prim em um mapa.

13

Page 14: Algoritmo de Prim - UFG

Imagem de satélite das rodovias feita pelo algoritmo

prim

14

Page 15: Algoritmo de Prim - UFG

Casos em que o Prim não funciona:

• grafos desconexos.

• grafos direcionais.

15

Page 16: Algoritmo de Prim - UFG

Como funciona?

16

Page 17: Algoritmo de Prim - UFG

Como funciona?

17

Page 18: Algoritmo de Prim - UFG

Como funciona?

18

Page 19: Algoritmo de Prim - UFG

19

Árvore Geradora de Peso Mínimo

Exemplo:

c(F) = 1

H

A

B

J

C

EM L

G

D

I

F

4

7

4

3

7

5

6

22

3

1

4

2

3

8

6

4

c(F) = 3c(F) = 6c(F) = 9c(F) = 11c(F) = 13c(F) = 17c(F) = 21c(F) = 25c(F) = 28c(F) = 33

Page 20: Algoritmo de Prim - UFG

PseudocódigoFunção Prim(Grafo): inteiro{Declare:

V[]: inteiroE[]: inteiroi: inteirok: inteiron_acabou: booleanomenor: inteirocusto: inteiroaux: inteirototal: inteiro

i<-0k<-1V[0]<-0

20

Page 21: Algoritmo de Prim - UFG

PseudocódigomontaMatrizAdjacência();Enquanto(n_acabou) faça{

menor<- +∞

aux <- 0Enquanto(aux < k) faça

{para j<-V[aux]+1 até tam-1

{se((E[V[aux]][j] < menor) E (j não

pertencer a V) então{

menor<-jcusto<-A[V[aux]][j]

}fim-se 21

Page 22: Algoritmo de Prim - UFG

Pseudocódigoaux<-aux + 1

}fim-paraV[k]<-menorE[k-1]<-custok<-k + 1se(k = tam) então

n_acabou<-falsosenão

i<-menor}fim-enquanto

}fim-enquantopara n<-0 até tam-2 faça

total <- total + E[n]retorne total;}FIM

22

Page 23: Algoritmo de Prim - UFG

Bibliografia

• Preiss, Bruno R. Estruturas de dados e algoritmos: Padrões de projetos orientados a objeto com java; tradução de Elizabeth Ferreira. Rio de Janeira: Campus, 2000. 519-521p.

• Goodrich, Michael T.; Tamassia, Robert. Estrutura de dados e algoritmos em java; tradução de Bernardo Copstein e João Batista Oliveira. 2 ed. Porto Alegre: Bookman, 2002. 549-550p.

23

Page 24: Algoritmo de Prim - UFG

OBRIGADO

24