51
Prof. Yandre Maldonado - 1 GRAFOS GRAFOS Introdu Introdu ç ç ão; ão; Representa Representa ç ç ão em Mem ão em Mem ó ó ria; ria; Algoritmo de Algoritmo de Dijkstra Dijkstra . . Prof. Yandre Maldonado e Gomes da Costa UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

› ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

1

•• GRAFOSGRAFOS•• IntroduIntroduçção;ão;

•• RepresentaRepresentaçção em Memão em Memóória;ria;

•• Algoritmo de Algoritmo de DijkstraDijkstra..

Prof. Yandre Maldonado e Gomes da Costa

UNIVERSIDADE ESTADUAL DE MARINGÁDEPARTAMENTO DE INFORMÁTICA

Page 2: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

2

GRAFOS

• Definição:– G (V, E), onde:

• V é um conjunto de vértices (ou nodos);– |V| denota o número de elementos de V;

• E é uma coleção de pares de V, chamados de aresta (ou arco);

– |E| denota o número de elementos de E;

– As arestas descrevem relações entre os vértices;

– Exemplo: relações de co-autoria;Goodrich Tamassia

Preparata

Di Battista

Chiang

Page 3: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

3

GRAFOS

• Terminologia:– Incidência: a aresta (u,v) é dita incidente à u e a v;– Adjacência: dois vértices u e v são adjacentes se

existe aresta (u,v);– Grau do vértice: o grau de um vértice é igual ao

número de arestas que incidem a ele;

• Representação geométrica de grafos:

ab

ed

c

Page 4: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

4

GRAFOS

• Terminologia (cont.):– Caminho: um caminho do vértice v1 ao vértice

vk é uma seqüência de vértices v1...vk tal que (vj,vj+1) pertence a E, 1<=j<=k-1;

– Comprimento de um caminho: número de arestas percorridas no caminho;

• Neste exemplo d, e, b, a é um caminho de comprimento igual a 3;

ab

ed

c

Page 5: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

5

GRAFOS

• Terminologia (cont.):– Ciclo: é um caminho v1, v2 ... vk, vk+1, onde

v1 = vk+1 e k>=3;• Neste exemplo b, c, e, b é um caminho;

– Grafo acíclico: grafo sem ciclos;

ab

ed

c

Page 6: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

6

GRAFOS

• Grafo conexo: grafo que possui caminho entre cada par de vértices de V;

• Grafo desconexo: grafo não conexo;

ab

ed

c ab

e d

c

Conexo Desconexo

Page 7: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

7

GRAFOS

• Grafo completo: grafo que possui uma aresta entre cada par de seus vértices;

a

b

e d

c

Page 8: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

8

GRAFOS

• Subgrafo: G2 (V2,E2) é subgrafo de G1(V1,E1) se:– V2 está contido em V1;– E2 está contido em E1;

ab

ed

c

G1

ab

e

c

G2

G2 é subgrafo de G1

Page 9: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

9

GRAFOS

• Grafo Direcionado (ou Dígrafo)– Grafo em que as arestas são pares

ordenados;– Neste caso (u,v) é diferente de (v,u);– Exemplo:

• V={a, b, c, d, e}• E={(a,b), (a,e), (c,b), (d,e), (e,b), (e,c), (e,d)}

ab

ed

c

Page 10: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

10

GRAFOS

• Grafo Direcionado– Exemplo de aplicação: representação de

malha aérea (linhas entre aeroportos).

MGF

LDB

POA

CWB

CGH

GOL-378

TAM-828

RSL-126 BRA-453GOL-396

TAM-524

TAM-704

RSL-122

Page 11: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

11

GRAFOS

• Grafo Direcionado:– Grau de entrada de v: número de arestas

convergentes a v;• O grau de entrada de b é 3;

– Grau de saída de v: número de arestas divergentes de v;

• O grau de saída de a é 2;

ab

ed

c

Page 12: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

12

GRAFOS

• Grafo ponderado: grafo em que se associa um valor (ou peso) a cada aresta;– O peso de uma aresta e é denotado por w(e)

• w(Maringá, Paranavaí)=70

Maringá

MandaguariParanavaí

Cianorte

70

7570

35

Page 13: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

13

GRAFOS

• Representação de grafos:– Matriz de adjacências;– Matriz de incidências;– Lista de adjacências;

Page 14: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

14

GRAFOS

• Matriz de adjacências– Para um grafo G (V,E):

• Cria-se uma matriz M com dimensões |V| x |V|;• Cada linha i e cada coluna j é associada à um vértice

do grafo e:

– M[i,j]=1 se (vi, vj) ∈ E;– M[i,j]=0 se (vi, vj) ∉ E;

– Desvantagem: ocupa |V|2 posições na memória;– Vantagem: acesso rápido à informação sobre

uma aresta;

Page 15: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

15

GRAFOS

• Exemplo de Matriz de adjacências

• Observe que:– Em grafo não direcionado a matriz é simétrica;– O número de 1’s é igual a 2 |E|;

ab

ed

c

01111e

10000d

10010c

10101b

10010a

edcba

Page 16: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

16

GRAFOS

• Matriz de adjacências para um dígrafo

• Observe que:– O número de 1’s é igual a |E|;

01110e

10000d

00010c

00000b

10010a

edcba

ab

ed

c

Page 17: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

17

GRAFOS

• Matriz de adjacências para um grafo ponderado:– Coloca-se em M[i,j] o valor de w(ei,ej);

Maringá

MandaguariParanavaí

Cianorte

70

7570

35

070070PVI

7003575MGA

03500MRI

707500CNE

PVIMGAMRICNE

Page 18: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

18

GRAFOS

• Matriz de incidências– Para um grafo G (V,E):

• Cria-se uma matriz M com dimensões |V| x |E|;• Associa-se cada linha i e com um vértice e cada

coluna j com uma aresta do grafo e:– M[i,j]=1 se j incide em i;– M[i,j]=0 caso contrário;

– Desvantagem: é preciso conhecer antecipadamente o número de vértices e arestas do grafo;

Page 19: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

19

GRAFOS

• Exemplo de Matriz de incidências

• Observe que:– Em cada coluna da matriz existem

dois 1’s;– Em cada linha da matriz o número de

1’s é igual ao grau do vértice;

111010e

100000d

010100c

001101b

000011a

654321

ab

ed

c1 3

24 5

6

Neste caso estes números não são pesos, são identificadores das arestas.

Page 20: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

20

GRAFOS

• Matriz de incidências para dígrafo

-1-11010e

10-1000d

010-100c

000101b

0000-1-1a

654321

Neste caso estes números não são pesos, são identificadores das arestas.

ab

ed

c1

25

3

6

4

Page 21: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

21

GRAFOS

• Lista de adjacências– Consiste em um vetor com |V| listas encadeadas;– Cada lista corresponde à um vértice, e armazena os

vértices que são adjacentes a ele;– Exemplo:

– Gasto de memória: |V| + 2|E|

ab

ed

c

e

d

c

b

a b e

a c e

b e

e

a b c d

Page 22: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

22

GRAFOS

• Lista de adjacências para dígrafos– Exemplo:

– Gasto de memória: |V| + |E|

e

d

c

b

a b e

b

e

b c d

ab

ed

c

Page 23: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

23

• Um problema clássico em grafos:– Menor caminho de origem única:

• Para grafos sem pesos: busca em amplitude (ou em largura);

• Para grafos ponderados e sem pesos negativos: algoritmos de Dijkstra;

GRAFOS

Page 24: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

24

GRAFOS

• Busca em Amplitude– Encontra o menor caminho a partir de um

vértice inicial para qualquer outro vértice do grafo;

– Algoritmo da busca em amplitude:1. Inicialmente marca-se o vértice de origem como

visitado;2. Coloca-se todos os seus vértices adjacentes ainda

não visitados em uma fila F;3. Retira-se o primeiro vértice da fila, marcando-o

como visitado. Repete-se o processo a partir do passo 2, até que não haja mais vértice ainda não visitado.

Page 25: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

25

GRAFOS

• Exemplo de busca em amplitude:– Grafo sem pesos;– Utilizaremos um vetor auxiliar P para

identificar os predecessores de cada vértice marcado;

– Os vértices já visitados serão identificados com sombreamento.

ab

fe

cd

g

h

Page 26: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

26

GRAFOS

• Exemplo de busca em amplitude:– Vértice de origem: a;

ab

fe

cd

g

h

-aa---a#

hgfedcbaP

gfbFila

Page 27: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

27

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

-aa--ba#

hgfedcbaP

cgfFila

Page 28: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

28

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

-aaf-ba#

hgfedcbaP

ecgFila

Page 29: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

29

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

gaaf-ba#

hgfedcbaP

hecFila

Page 30: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

30

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

gaaf-ba#

hgfedcbaP

heFila

Page 31: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

31

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

gaafeba#

hgfedcbaP

dhFila

Page 32: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

32

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

gaafeba#

hgfedcbaP

dFila

Page 33: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

33

GRAFOS

• Exemplo de busca em amplitude:

ab

fe

cd

g

h

gaafeba#

hgfedcbaP

FilaTérmino: fila vazia e todos os vértices visitados.

Page 34: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

34

GRAFOS

• Descobre-se o menor caminho a partir de P, da seguinte forma:– Caminho de a até d: seqüência inversa dos

predecessores a partir de d até chegar em a;

gaafeba#

hgfedcbaP

d – e – f – a

a – f – e - d

Page 35: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

35

GRAFOS

• Algoritmo de Dijkstra– Desenvolvido por Edsger Dijkstra em 1959;– Aplicações:

• Distribuição de pacotes em rede de computadores com a melhor velocidade possível;

• Encontrar o caminho mais curto entre cidades;

Page 36: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

36

• Algoritmos de Dijkstra:– Para encontrar o menor caminho de origem

única;– Para um grafo:

• Conexo;• Ponderado (com pesos positivos);

– Encontra o caminho entre v e qualquer outro vértice do grafo com a menor soma acumulada de pesos;

GRAFOS

Page 37: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

37

• No grafo descrito a seguir:

– O menor caminho entre Maringá e Londrina teria comprimento 100;

– Mesmo que houvesse uma aresta ei ligando diretamente as duas cidades com w(ei)>100;

Astorga

LondrinaMaringá

Mandaguari

50

6535

70

120

GRAFOS

Page 38: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

38

GRAFOS

• Exemplo:– Aplicação do algoritmo de Dijkstra para

encontrar menor distância entre cidades.

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

∞∞

∞∞

170

Page 39: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

39

• Encontrar a menor distância entre UMUARAMA e outra cidade:– Serão utilizados três vetores:

UMUPVIMGALDACPRCNECMOAPUS

∞∞∞∞∞∞∞∞D

--------P

GRAFOS

S – conjunto com todos os vértices do grafo, inicialmente todos devemser checados. Na medida em que forem checados serão marcados comsombreamento.

D – distância entre cada vértice e a origem do caminho. Inicialmente infinita.

P – lista dos predecessores de cada vértice no caminho mais curto.Inicialmente vazia.

Page 40: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

40

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140∞∞∞80170∞D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

170

0

140

∞∞

∞∞

170

#UMU---UMUUMU-P

Primeiro passo:-Marca-se o vértice de origem vo como checado;-A sua distância éconsiderada zero;-Coloca-se no vetor de distâncias as distâncias entre vo e os seus adjacentes.

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 41: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

41

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140155∞∞80160∞D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155∞

∞∞

170

#UMUCNE--UMUCNE-P

Repetir:-Marca-se o vértice com menor D[u] como checado.-Identifica-se em P o seu predecessor.-Atualiza-se D[v] para todo v adjacente àalgum u já checado.Até que todos os vértices sejam checados.

UMUPVIMGALDACPRCNECMOAPUS

“RELAXAMENTO”se D[u]+w(u,z) < D[z] então

D[z] ← D[u]+w(u,z);

GRAFOS

Page 42: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

42

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140155∞∞80160∞D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155∞

∞∞

170

#UMUCNE--UMUCNE-P

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 43: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

43

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140155245∞80160215D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155215

245∞

170

#UMUCNEMGA-UMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 44: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

44

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140155245∞80160215D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155215

245∞

170

#UMUCNEMGA-UMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 45: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

45

• Encontrar a menor distância entre UMUARAMA e outra cidade:

0140155245∞80160215D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155215

245∞

170

#UMUCNEMGA-UMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 46: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

46

• Encontrar a menor distância entre UMUARAMA e outra cidade:

014015524530580160215D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155215

245305

170

#UMUCNEMGALDAUMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

GRAFOS

Page 47: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

47

• Encontrar a menor distância entre UMUARAMA e outra cidade:

014015524530580160215D

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

80

160

0

140

155215

245305

170

#UMUCNEMGALDAUMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

Todos os vértices já checados: FIM.

GRAFOS

Page 48: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

48

• Encontrar a menor distância entre UMUARAMA e outra cidade:– Interpretando os resultados:

• O vetor D tem as menores distâncias desde Umuarama;• Retrocedendo nos predecessores a partir de um vértice de

forma encadeada, obtêm-se a seqüência invertida do caminho.• Exemplo: caminho de UMU até CPR:

014015524530580160215D

#UMUCNEMGALDAUMUCNEMGAP

UMUPVIMGALDACPRCNECMOAPUS

CPR – LDA – MGA – CNE - UMU

UMU – CNE – MGA – LDA - CPR

GRAFOS

Page 49: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

49

GRAFOS

• O algoritmo de Dijkstra:

– Entrada: um grafo G ponderado, conexo e sem pesos negativos; um vértice v de G (vértice de origem).

– Saída: menores distâncias a partir de v, incluindo os seus caminhos;

– D[v] ← 0;– v é visitado;– Enquanto houver algum vértice em S ainda não visitado faça

• Marque, entre os adjacentes dos vértices checados, o vértice u com menor valor D[u] que ainda não foi checado;

• Coloque em P o predecessor de u;• Para cada vértice z adjacente a u faça

Se D[u]+w((u,z))<D[z] então // relaxamentoD[z] ← D[u]+w((u,z));

– Retorne os vetores D e P.

Page 50: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

50

GRAFOS

• Exercício:– Dado o seguinte grafo, mostre a seqüência

de evolução dos valores dos vetores D, P e S ao se executar o algoritmo de Dijkstraconsiderando “Cornélio Procópio” como vértice de origem.

UMUARAMA

PARANAVAÍ

LONDRINA

APUCARANA

MARINGÁ

CIANORTE

CAMPO MOURÃO

50

90

60

9080

100

70

75

140

80

CORNÉLIO PROCÓPIO

60

170

Page 51: › ~yandre › AEDEP › grafos-grande.pdf · GRAFOS - Plone site2008-09-17 · Prof. Yandre Maldonado-24 GRAFOS • Busca em Amplitude – Encontra o menor caminho a partir de um

Prof. Y

andre M

aldonado-

51

Bibliografia

• Ziviani, Nivio. Projeto de Algoritmos – com implementações em Java e C++. Editora Thomson, 2007;

• Tenenbaum, Langsam e Augenstein. Estruturas de Dados Usando C. Editora Makron Books, 1995;

• Moraes, Celso Roberto. Estruturas de Dados e Algoritmos. Editora Berkley, 2001;

• Goodrich e Tamassia. Projeto de Algoritmos. Editora Bookman, 2002.