62
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Embed Size (px)

Citation preview

Page 1: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Anjolina Grisi de Oliveiraobs: muitos slides foram cedidos por

Adolfo Almeida Duran (UFBA)

2005

Page 2: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 2

• Determine se os seguintes grafos são bipartidos

Page 3: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 3

Grafo bipartido?

v1

v2v4

v3

Page 4: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 4

Determine se os seguintes grafos são bipartidos

Page 5: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 5

Grafo cíclico (ou simplesmente Ciclo)Um grafo conectado que é regular de grau 2 é um grafo cíclico (= ciclo)

Cn é um grafo cíclico com n vértices

Outros tipos de grafos

C6

Page 6: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 6

Grafo rodaO grafo obtido a partir de Cn-1 através da ligação de cada vértice a um novo vértice v é um grafo roda em n vértices, Wn

C5 W6

Page 7: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 7

Grafos n-cúbicos

Os grafos n-cúbicos, denotados por Qn, são grafos cujos vértices representam as 2n cadeias de bits de tamanho n.

Dois vértices são adjacentes se e somente se as cadeias de bits que eles representam diferem em exatamente uma posição de bit.

Page 8: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 8

Grafos Orientados ou Dígrafos

Um dígrafo G(V,A) é um conjunto finito não vazio V de vértices, e um conjunto A de pares ordenados de elementos de V. Chamamos o conjunto A de arcos (também podemos chamar de arestas).

Multigrafo Orientado G(V,A)

Consiste de um conjunto V não vazio de vértices, um conj. A de arestas e uma função f de A em {(u,v) | u,vV}.As arestas e1 e e2 são múltiplas se f(e1) = f(e2).

Page 9: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 9

Revisando

Tipo Arestas Múltiplas? Laços?

-------------------------------------------------------------------

Simples não dir. Não Não

Multigrafo não dir. Sim Não

Pseudografo não dir, Sim Sim

Direcionado dir. Não Sim

Multigrafo dir. dir. Sim Sim

Page 10: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 10

• Os vértices de um dígrafo possuem:

– Grau de entrada: número de arcos que chegam no vértice (grauent(v))

– Grau de saída: número de arcos que partem do vértice (grausai(v))

Proposição

grauent(vi) = grausai(vi) = | A |

Page 11: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 11

Embora seja conveniente a representação de grafos através de

diagramas de pontos ligados por linhas, tal representação é

inadequada se desejamos armazenar grandes grafos em um computador

Representação de grafos

Page 12: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 12

Lista de adjacência

Uma maneira simples de armazenar grafos, é listando os vértices adjacentes a cada vértice do grafo

u: v,yv: u,y,ww: v,x,yx: w,yy: u,v,w,x

u

y v

x w

Page 13: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 13

Lista de adjacência em grafos direcionados

Tabela com vértices iniciais e finais (terminais)

Inic. Terminaisu: u,vv: w: vx: y,wy:

y

x

wv

u

Page 14: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 14

Matriz de adjacência

Se G é um grafo com vértices {1,2,3,...,n}, sua matriz de adjacência é a matriz n X n cujo elemento ij é o número de arestas ligando o vértice i ao vértice j

Page 15: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 15

Matriz de adjacência

Se G é um grafo direcionado com vértices {1,2,3,...,n}, sua matriz de adjacência é a matriz n X n cujo elemento ij é o 1 se existe uma arestas onde vi é o vértice inicial e vj é o vértice final.Já estudamos esse tipo de matriz na representação de relações. Se G é um multigrafo direcionado com vértices {1,2,3,...,n}, sua matriz de adjacência é a matriz n X n cujo elemento ij é o número de arestas onde vi é o vértice inicial e vj é o vértice final.A matriz de adjacência para grafos com direção não é necessariamente simétrica.

Page 16: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 16

Matriz de incidência

Se G é um grafo com vértices {1,2,3,...,n} e arestas {1,2,3,...,m}, sua matriz de incidência é a matriz n X m cujo elemento ij é igual a

– 1 se a aresta ej é incidente ao vértice vi, ou– 0, caso contrário

Arestas múltiplas são representadas usando colunas com entradas idênticas.

Laços são representados usando colunas com extamente uma entrada igual a 1.

Page 17: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 17

Caminho em um grafo não orientado– Um caminho de tamanho n de u para v, onde n é um

inteiro positivo, em um grafo não orientado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) = {x0,x1}, f(e2) = {x1,x2}...f(en)={xn-1,xn}, onde x0=u e xn=v.

G1

Conectividade

Se o grafo é simples, denotamos o caminho por sua seqüência de vértices: x0, x1 ,...xn

Page 18: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 18

• Caminho em um multigrafo direcionado– Um caminho de tamanho n de u para v, onde n é um

inteiro positivo, em um multigrafo direcionado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) =(x0,x1), f(e2) = (x1,x2)...f(en)=(xn-1,xn), onde x0=u e xn=v.

Quando não existem arestas múltiplas, o caminho pode se denotado por um seqüência de vértices: (x2, x5, x4, x1)

Conectividade

Page 19: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 19

Circuito ou ciclo

– Um caminho é um circuito se ele começa e termina no mesmo vértice.

G1

Conectividade

Circuito: x1,x2,x5,x4,x1

Page 20: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 20

Exemplos de ciclos

1 2

3 4

1 2

3 4

Ciclo de tamanho 31 2 4 1

Ciclo de tamanho 31 2 3 1

Page 21: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 21

• Ciclo (ou circuito)

A seqüência de vértices (x1, x2, x5, x4, x1)

é um exemplo de ciclo

Page 22: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 22

Caminho (ou circuito) simples

Um caminho ou circuito é chamado de simples se ele não contem a mesma aresta mais de uma vez.

Page 23: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 23

Definição para grafos não orientados– Um grafo não orientado é chamado de conexo

(ou conectado) se existe um caminho entre cada par de vértices distintos do grafo.

G1

Conectividade

Em uma rede de computadores, quaisquer dois computadores podem se comunicar se e somente se o grafo da rede é conexo.

Page 24: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 24

• Grafo desconexo

– O grafo mostrado a seguir não é conexo pois, por exemplo, não existe um caminho entre x3 e x5.

Page 25: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 25

• Componente conexa

– Um grafo G(V,A) desconexo é formado por pelo menos dois subgrafos conexos, disjuntos em relação aos vértices

– Cada um destes subgrafos conexos é dito ser uma componente conexa de G.

Page 26: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 26

Vértice de corte (ou pontos de articulação)Um vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) produz um grafo com mais componentes conexos. (se o grafo original é conexo, ele se torna desconexo).

X2 é um vértice de corte

Page 27: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 27

PonteUma aresta é dita ser uma ponte se sua remoção produz um grafo com mais componentes conexos.

(X1,X4) é uma ponte

Page 28: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 28

• Grafo fortemente conexo– No caso de grafos orientados (digrafos), um grafo é dito ser fortemente

conexo se existe um caminho de a para b e de b para a, para cada par a,b de vértices do grafo.

– ou seja, se cada par de vértices participa de um circuito. – Isto significa que cada vértice pode ser alcançável partindo-se de

qualquer outro vértice do grafo.

Page 29: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 29

•Grafo fracamente conexoUm grafo direcionado G(V,A) é chamado de fracamente conexo se existe um caminho entre cada par de vértices no grafo não orientado subjacente.

Cada um destes subgrafos é fortemente conexo. No entanto, o grafo todo é apenas fracamente conexo.

Page 30: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 30

Um circuito euleriano em um grafo G é um circuito simples que contem cada aresta de G.

Circuito Euleriano

Page 31: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 31

Teorema (Euler 1736)Um multigrafo conectado G possui um circuito euleriano se e somente se o grau de cada vértice de G é par.

Prova:

Ida: Seja G um grafo euleriano. Por cada ocorrência de vértice do circuito euleriano, existe uma aresta que chega nesse vértice e outra que sai desse vértice. Como toda aresta faz parte do circuito, isto é, nenhuma aresta fica fora do ciclo, necessariamente o número de arestas por cada vértice é par.

Page 32: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 32

Volta: Suponhamos que todos os vértices possuem grau par. Seja vi um vértice do grafo. Tentemos, a partir

de vi, construir um caminho que não passa duas vezes

pela mesma aresta, e até que não seja possível continuar. Como todos os vértices possuem um grau par, sempre será possível entrar e sair de um vértice. A única exceção é o vértice vi onde o caminho vai

terminar. Se esse caminho, que chamaremos C1,

contém todas as arestas de G, temos um ciclo euleriano. Senão, retiramos de G todas as arestas que fazem parte de C1. No grafo resultante G', todos os

vértices também possuem grau par e necessariamente um deles faz parte de C1, senão o grafo não seria

conexo.

Page 33: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 33

Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C1,

obtendo assim um novo circuito C2. A figura abaixo

mostra que dois circuitos que têm um vértice em comum podem formar um circuito único: chegando no vértice comum em um dos dois circuitos, continuamos o percurso no outro circuito. Continuando esse processo, necessariamente obteremos um circuito único que contém todas as arestas de G.

Page 34: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 34

Algoritmo de HierholzerAlgoritmo para a construção de um ciclo euleriano

sugerido a partir da prova do teorema de Euler

Comece em qualquer vértice u e percorra aleatoriamente as arestas ainda não visitadas a cada vértice visitado até fechar um ciclo

Se sobrarem arestas não visitadas, recomece a partir de um vértice do ciclo já formado

Se não existem mais arestas não visitadas, construa o ciclo euleriano a partir dos ciclos formados, unindo-os a partir de um vértice comum

Page 35: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 35

Algoritmo de HierholzerAlgoritmo para a construção de um ciclo euleriano

sugerido a partir da prova do teorema de Euler

Page 36: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 36

• As pontes de Königsberg

É possível sair de uma das ilhas, passar uma única vez por cada uma das pontes e retornar ao ponto de origem ?

Page 37: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 37

• As pontes de Königsberg

Como nem todos os vértices têm grau par, o grafo não é euleriano. Logo, é impossível atravessar todas as pontes uma só vez e voltar ao lugar de partida

Page 38: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 38

Algoritmo de FleuryAlgoritmo para a construção de um ciclo euleriano

em um grafo euleriano

Comece em qualquer vértice u e percorra as arestas de forma aleatória, seguindo sempre as seguintes regras:

I – apague as arestas depois de passar por elasII – se aparecer algum vértice isolado, apague-o tambémIII – passe por uma ponte somente se não houver outra alternativa

Page 39: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 39

Algoritmo de FleuryAlgoritmo para a construção de um ciclo euleriano

em um grafo euleriano

Page 40: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 40

Um caminho (ou circuito) em um grafo G(V,E) é dito ser hamiltoniano se ele passa exatamente uma vez em cada um dos vértices de G

Caminhos, circuitos Hamiltonianos

Apenas caminho hamiltoniano

Caminho e circuito hamiltoniano

Page 41: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 41

Mais exemplos

Circuito e caminho caminho não hamiltoniano

Page 42: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 42

Grafo hamiltoniano

Não existe uma caracterização para identificar grafos hamiltonianos como existe para os eulerianos

A busca de tal caracterização é um dos maiores problemas ainda não solucionados da teoria dos grafos

Page 43: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 43

Grafo hamiltoniano

Muito pouco é conhecido dos grafos hamiltonianos

A maioria dos teoremas existentes são da forma: “Se G possui arestas suficientes, então G é hamiltoniano”

Page 44: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 44

Circuito hamiltoniano em grafos completos

Todo grafo completo, que contém mais de 2 vértices contem um circuito hamiltoniano

Seja v1,v2,...,vn os vértices de G. Como existe uma aresta entre qualquer par de vértices, é possivel, a partir de v1 percorrer essa sequência até vn e voltar para v1

Page 45: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 45

Teorema (Dirac 1952)Uma condição suficiente, mas não necessária,

para que um grafo conexo simples G com n (>2) vértices tenha um circuito hamiltoniano é que o

grau de todo vértice de g seja n/2

O grafo abaixo, possui um circuito hamiltoniano mas não respeita a condição do teorema de Dirac

Page 46: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 46

Teorema (Ore 1960)Uma condição suficiente, mas não necessária, para que um grafo simples G com n (>2) vértices tenha um circuito hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo n.

Permite identificar mais grafos com circuitos hamiltonianos que o anterior, mas demora muito para efetuar os

cálculos. Uma busca por tentativa e erro pode ser mais eficiente em alguns casos

Page 47: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 47

O adjetivo "hamiltoniano" deve-se ao matemático irlandês Sir William Rowan Hamilton (1805-1865). Diz-se que ele inventou um jogo que envolve um dodecaedro (sólido regular com 20 vértices, 30 arestas e 12 faces). Hamilton rotulou cada vértice do dodecaedro com o nome de uma cidade conhecida. O objetivo do jogo era que o jogador viajasse "ao redor do mundo" ao determinar uma viagem circular que incluísse todas as cidades exatamente uma vez, com a restrição de que só fosse possível viajar de uma cidade a outra se existisse uma aresta entre os vértices correspondentes.

Page 48: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 48

A figura abaixo mostra um grafo que representa este problema, ou seja os vértices e arestas de um dodecaedro.

Page 49: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 49

Como explorar um grafo

Como obter um processo sistemático para caminhar pelos vértices e arestas de um grafo?

Como caminhar no grafo de modo a visitar todos os vértices e arestas evitando repetições desnecessárias de visitas a um mesmo vértice ou aresta?

Que recursos adicionais são necessários?

Alguns Problemas

Page 50: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 50

Como explorar um grafoNecessidade de ‘’marcar’’ quando um vértice e uma aresta já foram visitados ou não

Busca Geral G(V,E)1. Escolher e marcar um vértice inicial;2. Enquanto existir algum vértice v marcado e incidente a uma aresta (v,w), não explorada, efetuar:    a) escolher o vértice v;    b) explorar a aresta (v,w). Se w não é marcado então marcar w.

Algoritmo Geral

Page 51: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 51

O problema do Caminho mais curto

Um motorista deseja encontrar o caminho, mais curto possível, entre duas cidades do Brasil

Caso ele receba um mapa das estradas de rodagem do Brasil, no qual a distância entre cada par adjacente de cidades está exposta, como poderíamos determinar uma rota mais curta entre as cidades desejadas?

Uma maneira possível é enumerar todas as rotas possíveis que levam de uma cidade à outra, e então selecionar a menor.

Page 52: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 52

O problema do menor caminho consiste em determinar um menor caminho entre um vértice de origem s V e todos os vértices v de V.

     

Page 53: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 53

O problema do Caminho mais curtoUma maneira mais eficiente:

Percorra o grafo, partindo do vértice de origem s, associando a cada vértice um número l(v) indicando a menor distância entre s e v.

Isso significa que quando chegamos ao vértice v, na figura abaixo, l(v) será min ( l(u)+6 , l(x)+4 )

6

5

u

3s

6

2 7

v

x y

4123

Page 54: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 54

6

5

u

3

s

6

2 7

v

x y

412

3

0

5

3

11

9

Grafos com pesos: - Cada aresta possui um número associado (peso) - O tamanho do caminho é a soma dos pesos das arestas do caminho

Page 55: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 55

Como obter um caminho mínimo partindo de s para y?

6

5

u

3

s

6

2 7

v

x y

412

3

0

5

3

11

9

Page 56: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 56

Outra possibilidade:

6

5

u

3

s

6

2 7

v

x y

412

3

0

5

3

11

9

Page 57: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 57

O algoritmo de Dijkstra

O algoritmo de Dijkstra aqui descrito identifica o menor caminho entre dois vértices de um grafo não orientado.

Se desejamos calcular o menor caminho de a para z em um grafo conexo simples com pesos, primeiro encontramos um menor caminho entre a e um primeiro vértice, depois entre a e um segundo vértice, esse procedimento é repetido até que seja encontrado um menor caminho entre a e z.

Page 58: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 58

O algoritmo de Dijkstra

Um conjunto S de vértices é construído inserindo-se um vértice a cada iteração.

A cada iteração também é adotado um procedimento para rotular vértices: um vértice w é rotulado com o tamanho do menor caminho de a até ele, e que contem somente vértices do conjunto S.

O vértice a ser inserido em S é aquele com o menor rótulo.

Page 59: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 59

O algoritmo de Dijkstra

O algoritmo começa rotulando a com 0 e os demais vértices com . Usamos a notação L0(a)=0 e L0(v)= . (na iteração 0).

A notação Sk é usada para denotar o conjunto S após a iteração k. Começamos com S0=. O conjunto Sk é formado a partir de Sk-1 adicionado-se um vértice u que não está em Sk-1 e possui o menor rótulo.

Após a inclusão de u em Sk, atualizamos os rótulos de todos os vértices que não estão nesse conjunto da seguinte maneira: L k(v) é o tamanho do menor caminho de a até v que contem apenas os vértices de Sk.

.

Page 60: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 60

O algoritmo de Dijkstra

Seja v um vértice que não está em Sk. Para atualizar o rótulo de v, observe que Lk(v) é o tamanho do menor caminho de a para v e que contém apenas os vértices que estão em Sk..

Esse caminho ou é o menor caminho que contem apenas os elementos de Sk-1 (sem a inclusão de u) ou éo menor caminho de a até u no passo k-1 com adição da aresta (u,v).

Lk(v) =   min(Lk-1(v),Lk-1(u)+ peso(u,v))

Page 61: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 61

O algoritmo de Dijkstraprocedimento Dijkstra

Para i := 1 até n:L(v)= .

L(a) = 0 S=Enquanto z S

u :=   Elemento que S e L(u) é mínimo S :=   S {u} Para cada vértice v S :

Se L(u) + peso(u,v) < L(v) entãoL(v) = L(u) + peso(u,v)

(observe que L(v) =   min(L(v),L(u)+ peso[u,v]) Retornar L(z)

Page 62: Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005

Matemática Discreta/Grafos CIn-UFPE 62

Exemplo: Menor caminho de A até D0: L(A)=0 e todos os outro é ; S=;1: S={A}; L(B)=4; L(F)=2;2: S={A,F}; L(B)=3; L(C)=10; L(E)=12;3: S={A,F,B}; L(C)=8; 4: S={A,F,B,C}; L(D)=14; L(E)=10;5: S={A,F,B,C,E}; L(D)=13;6: S={A,F,B,C,E,D}

A

F

B C

D

E

1 8 2

54

10

2

6

3