Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Tamanho: px
Começar a partir da página:

Download "Eduardo Camponogara. DAS-9003: Introdução a Algoritmos"

Transcrição

1 Caminhos Mínimos Com Uma Fonte 1/74 Caminhos Mínimos Com Uma Fonte Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: a Algoritmos

2 Caminhos Mínimos Com Uma Fonte 2/74 Sumário Algoritmo Bellman-Ford Algoritmo de Dijkstra Grafos Acíclicos

3 Caminhos Mínimos Com Uma Fonte 3/74 Sumário Algoritmo Bellman-Ford Algoritmo de Dijkstra Grafos Acíclicos

4 Caminhos Mínimos Com Uma Fonte 4/74 Cenário Um motorista deseja encontrar o caminho mais curto da cidade de Florianópolis/SC a Marilha/SP. Dado um mapa das rodovias brasileiras, no qual pares de cidades adjacentes são marcados, como podemos determinar a rota mais curta?

5 Caminhos Mínimos Com Uma Fonte 5/74 Cenário Um motorista deseja encontrar o caminho mais curto da cidade de Florianópolis/SC a Marilha/SP. Dado um mapa das rodovias brasileiras, no qual pares de cidades adjacentes são marcados, como podemos determinar a rota mais curta? Uma possibilidade consiste em enumerarmos todos os possíveis caminhos de Florianópolis a Marilha. Adicionar as distâncias em cada rota. Selecionar a rota mais curta.

6 Caminhos Mínimos Com Uma Fonte 6/74 Questão O método é satisfatório?

7 Caminhos Mínimos Com Uma Fonte 7/74 Desenvolvimentos Veremos como resolver problemas deste tipo de forma eficaz. Em problemas de caminhos mínimos, nos é dado um grafo direcionado G = (V,E) cujas arestas têm pesos. Os pesos são induzidos por uma função w : E R. O peso de um caminho p = (v 0,v 1,...,v k ) é a soma dos pesos das arestas: k 1 w(p) = w(v i,v i+1 ) i=0

8 Caminhos Mínimos Com Uma Fonte 8/74 Definição Definimos o peso (comprimento) do caminho de menor peso (mais curto) de um vértice u para v como: { min{w(p) : p é caminho de u v} δ(u,v) = + se não existir caminho

9 Caminhos Mínimos Com Uma Fonte 9/74 No exemplo do problema Florianópolis-Marilha, podemos modelar o mapa como um grafo: os vértices representam as cidades as arestas representam as rodovias, estradas, etc. os pesos das arestas representam as distâncias entre duas cidades

10 Caminhos Mínimos Com Uma Fonte 10/ 74 Variantes 1. Caminhos mínimos com um destino Encontre o caminho mais curto para um vértice t a partir de cada vértice u V. 2. Caminho mínimo entre um par de vértices Encontre o caminho mais curto de u para v 3. Todos os caminhos mínimos Encontre o caminho mínimo entre cada par u,v V

11 Caminhos Mínimos Com Uma Fonte 11/ 74 Pesos negativos Pesos negativos Em algumas instâncias do problema de caminhos mínimos com fonte única, podem existir arestas com pesos negativos. Se o grafo G = (V,E) não tiver ciclo com peso negativo alcançável a partir da fonte s, então δ(s,v) permanece bem definido para todo v V, mesmo se o grafo contiver algum ciclo negativo.

12 Caminhos Mínimos Com Uma Fonte 12/ 74 Pesos negativos Pesos negativos

13 Caminhos Mínimos Com Uma Fonte 13/ 74 Pesos negativos Pesos negativos Alguns algoritmos, como o algoritmo de Dijkstra, assumem que todos os pesos são não-negativos. Algoritmos como Bellman-Ford e Floyd-Warshall, entretanto, podem operar com arestas de peso negativo, desde que não existam ciclos de peso negativo. Tipicamente, estes algoritmos detectam a presença de ciclo negativo.

14 Caminhos Mínimos Com Uma Fonte 14/ 74 Representação Representação Estamos interessados não apenas na distância do caminho mais curto, mas também no caminho em si. A representação do caminho mais curto é similar àquela usada na busca em largura (breadth-first search) Dado um grafo G = (V,E), mantemos para cada vértice v V o seu predecessor π[v] que é outro vértice ou nil. Os algoritmos de caminhos mínimos definem os atributos π de maneira que a cadeia de predecessores originada em v, de trás pra frente, nos dá o caminho mais curto de s para v.

15 Caminhos Mínimos Com Uma Fonte 15/ 74 Representação Representação O grafo predecessor G π = (V π,e π ) induzido por π, após o término do algoritmo, produz a árvore de caminhos mínimos. G π é definido como segue: V π = {v V : π[v] nil} {s} E π = {(π[v],v) : v V π {s}}

16 Caminhos Mínimos Com Uma Fonte 16/ 74 Relaxações Relaxações Algoritmos de caminhos mínimos usam a técnica de relaxação, que decresce um limite superior (upper bound) para a distância mínima para cada vértice. Até que o limite superior se torne a própria distância: δ 1 (u) δ 2 (u)... δ k (u) = δ(s,u) Os algoritmos também exploram a propriedade de que o caminho mais curto entre dois vértices também é formado de caminhos mais curtos.

17 Caminhos Mínimos Com Uma Fonte 17/ 74 Relaxações Relaxações Lema Dado um grafo direcionado com peso nas arestas, G = (V,E), e a função peso nas arestas w : E R. Seja p = (v 1,v 2,...,v k ) um caminho mais curto de v 1 para v k em G. Para quaisquer 1 i < j k, seja p ij = (v i,v i+1,...,v j ) o subcaminho de p de v i para v j. Então, p ij é um caminho mínimo de v i para v j.

18 Caminhos Mínimos Com Uma Fonte 18/ 74 Relaxações Relaxações Lema Seja dado um grafo direcionado com peso nas arestas, G = (V,E), e a função peso nas arestas w : E R. Seja s um vértice correspondente à fonte. Então, para toda aresta (u,v) E, δ(s,v) δ(s,u)+w(u,v)

19 Caminhos Mínimos Com Uma Fonte 19/ 74 Relaxações Relaxações Vários algoritmos são baseados na técnica de relaxação. Para cada vértice v V, mantemos um atributo d[v], que é um limite superior (upper bound) no comprimento do caminho mais curto de s para v: d[v] δ(s,v) d[v] é uma estimativa para δ(s,v)

20 Caminhos Mínimos Com Uma Fonte 20/ 74 Relaxações Relaxações Initialize-Single-Source(G, s) 1) for each v V[G] 2) do d[v] 3) π[v] nil 4) d[s] = 0 Após a inicialização, π[v] = nil para todo v V, d[s] = 0, d[v] = para todo v V {s}.

21 Caminhos Mínimos Com Uma Fonte 21/ 74 Relaxações Relaxações Relax(u,v) 1) if d[v] > d[u]+w(u,v) 2) then d[v] d[u]+w(u,v) 3) π[v] u O propósito de relaxar uma aresta (u,v) consiste de testar se podemos melhorar a estimativa do caminho mais curto para v encontrado até então, por meio do caminho até u.

22 Caminhos Mínimos Com Uma Fonte 22/ 74 Relaxações Relaxações 5 u 2 v 9 5 u 2 v 6 Relax(u,v) Relax(u,v)

23 Caminhos Mínimos Com Uma Fonte 23/ 74 Propriedades Propriedades A corretude de algoritmos de caminhos mínimos é baseada em propriedades de caminhos mínimos e das relaxações.

24 Caminhos Mínimos Com Uma Fonte 24/ 74 Propriedades Desigualdade triangular Lema Para cada aresta (u,v) E, temos δ(s,v) δ(s,u)+w(u,v)

25 Caminhos Mínimos Com Uma Fonte 25/ 74 Propriedades Limite superior Lema Sempre temos d[v] δ(s,v) para todo vértice v V, e uma vez que d[v] = δ(s,v), a estimativa d[v] não muda.

26 Caminhos Mínimos Com Uma Fonte 26/ 74 Propriedades Inexistência de caminho Lema Se não existe caminho de s para v, então sempre temos d[v] = δ(s,v) = +

27 Caminhos Mínimos Com Uma Fonte 27/ 74 Propriedades Convergência Lema Se s u v é um caminho em G para certos vértices u,v V, e se d[u] = δ(s,u) em qualquer momento antes de relaxarmos a aresta (u,v), então após a relaxação da aresta (u,v) temos d[v] = δ(s,v) daí pra frente.

28 Caminhos Mínimos Com Uma Fonte 28/ 74 Propriedades Propriedade de relaxação de caminho Lema Seja p = (v 0,v 1,...,v k ) um caminho mais curto de s = v 0 para v k e as arestas de p são relaxadas na ordem (v 0,v 1 ), (v 1,v 2 ),..., (v k 1,v k ). Então d[v k ] = δ(s,v k ) Esta propriedade é garantida independentemente de quaisquer passos de relaxação ocorridos, até mesmo se eles são intermediários aos passos de relaxação das arestas em p.

29 Caminhos Mínimos Com Uma Fonte 29/ 74 Propriedades Subgrafo predecessor Lema Uma vez que d[v] = δ(s,v) para todo v V, o grafo predecessor G π é uma árvore de caminhos mínimos com raiz em s.

30 Caminhos Mínimos Com Uma Fonte 30/ 74 Algoritmo Bellman-Ford Sumário Algoritmo Bellman-Ford Algoritmo de Dijkstra Grafos Acíclicos

31 Caminhos Mínimos Com Uma Fonte 31/ 74 Algoritmo Bellman-Ford Algoritmo Bellman-Ford O algoritmo de Bellman-Ford resolve o problema de caminhos mínimos com uma fonte no caso geral, onde as arestas podem possuir peso negativo. O algoritmo retorna um valor Booleano indicando se foi ou não encontrado um ciclo de comprimento negativo alcançável a partir de s. Se não há ciclo negativo alcançável a partir de s, o algoritmo produz a árvore de caminhos mínimos com raiz em s e os seus respectivos comprimentos (pesos).

32 Caminhos Mínimos Com Uma Fonte 32/ 74 Algoritmo Bellman-Ford Algoritmo Bellman-Ford Bellman-Ford(G,w,s) 1) Initialize-Single-Source(G, s) 2) for i 1 to V[G] 1 3) do for each (u,v) E[G] 4) do Relax(u,v) 5) for each (u,v) E[G] 6) do if d[v] > d[u]+w(u,v) 7) then return FALSE 8) return TRUE

33 Caminhos Mínimos Com Uma Fonte 33/ 74 Algoritmo Bellman-Ford Grafo 6 t 5 2 x s y 9 z

34 Caminhos Mínimos Com Uma Fonte 34/ 74 Algoritmo Bellman-Ford Bellman-Ford: inicialização 6 t 5 2 x s y 9 z

35 Caminhos Mínimos Com Uma Fonte 35/ 74 Algoritmo Bellman-Ford Bellman-Ford: iteração 1 6 t x s y 9 z

36 Caminhos Mínimos Com Uma Fonte 36/ 74 Algoritmo Bellman-Ford Bellman-Ford: iteração 2 6 t x s y 9 2 z

37 Caminhos Mínimos Com Uma Fonte 37/ 74 Algoritmo Bellman-Ford Bellman-Ford: iteração 3 6 t x s y 9 2 z

38 Caminhos Mínimos Com Uma Fonte 38/ 74 Algoritmo Bellman-Ford Bellman-Ford: iteração 4 6 t x s y 9 2 z

39 Caminhos Mínimos Com Uma Fonte 39/ 74 Algoritmo Bellman-Ford Tempo de execução do algoritmo Bellman-Ford Fezendo V = n e E = m, podemos verificar que: Passo 1: O(n) Passo 2: Θ(n) Passo 3-4: Θ(1) Logo, o laço 2-4 leva Θ(nm) Laço 5-7 leva O(m) Conclusões: Portanto, Bellman-Ford executa em tempo Θ(nm). Para um grafo denso, m = Θ(n 2 ), o tempo de execução do algoritmo é Θ(n 3 ).

40 Caminhos Mínimos Com Uma Fonte 40/ 74 Algoritmo Bellman-Ford Bellman-Ford: corretude Lema Seja G = (V,E) um grafo direcionado com peso nas arestas Seja s V a fonte Seja w : E R a função peso Assuma que G não contém ciclos de peso negativo alcançáveis a partir de s Então, após V 1 passos do laço 2-4 do algoritmo Bellman-Ford, teremos d[v] = δ(s,v) para todo vértice v alcançável a partir de s.

41 Caminhos Mínimos Com Uma Fonte 41/ 74 Algoritmo Bellman-Ford Bellman-Ford: corretude Corolário Seja G = (V,E) um grafo direcionado com peso nas arestas Seja s V a fonte Seja w : E R a função peso Assuma que G não contém ciclos de peso negativo alcançáveis a partir de s Então, então para cada v V, existe um caminho de s para v se e somente se Bellman-Ford termina com d[v] < quando ele é aplicado sobre G.

42 Caminhos Mínimos Com Uma Fonte 42/ 74 Algoritmo Bellman-Ford Bellman-Ford: corretude Teorema Suponha que o algoritmo de Bellman-Ford executa sobre um grafo direcionado, G = (V,E), com função peso das arestas w : E R e tendo s como fonte. Se G não contém ciclos negativos, alcançáveis a partir de s, então: o algoritmo retorna TRUE; d[v] = δ(s,v) para todo v V; e o subgrafo predecessor Gπ é uma árvore de caminhos mínimos com raiz em s. Se G contém um ciclo negativo (alcançável a partir de s), então o algoritmo retorna FALSE.

43 Caminhos Mínimos Com Uma Fonte 43/ 74 Algoritmo de Dijkstra Sumário Algoritmo Bellman-Ford Algoritmo de Dijkstra Grafos Acíclicos

44 Caminhos Mínimos Com Uma Fonte 44/ 74 Algoritmo de Dijkstra Algoritmo de Dijkstra Princípios O algoritmo de Dijkstra resolve o problema de caminhos mínimos com uma fonte em um grafo direcionado G = (V,E), cujas arestas apresentam pesos não-negativos. O algoritmo mantém um conjunto S de vértices para os quais a distância do caminho mais curto a partir de s já foi computada. Ou seja, para todo v S, temos d[v] = δ(s,v). O algoritmo iterativamente seleciona um vértice u V S que possua a menor estimativa de distância, d[u] = min{d[v] : v V S}, e insere u em S. Ao mesmo tempo que relaxa as arestas que emanam de u.

45 Caminhos Mínimos Com Uma Fonte 45/ 74 Algoritmo de Dijkstra Algoritmo de Dijkstra S V S v 1 u 1 v 2 u 2 u 3 v 3 u 4

46 Caminhos Mínimos Com Uma Fonte 46/ 74 Algoritmo de Dijkstra Algoritmo de Dijkstra Dijkstra(G,w,s) 1) Initialize-Single-Source(G, s) 2) S 3) Q = V[G] 4) while Q 5) do u Extract min(q) 6) S S {u} 7) for each (u,v) Adj[u] 8) do Relax(u,v,w)

47 Caminhos Mínimos Com Uma Fonte 47/ 74 Algoritmo de Dijkstra Algoritmo de Dijkstra Uma vez que o algoritmo de Dijkstra sempre escolhe o vértice de V S mais próximo do conjunto S, dizemos que o algoritmo faz uso de uma técnica gulosa. Algoritmos gulosos tipicamente produzem soluções subótimas. No caso do problema de caminhos mínimos com uma fonte, o algoritmo guloso obtém a solução ótima. A chave para mostrar que o algoritmo produz uma solução ótima é o fato que quando u é inserido em S, d[u] = δ(s,u).

48 Caminhos Mínimos Com Uma Fonte 48/ 74 Algoritmo de Dijkstra Corretude do algoritmo de Dijkstra S V S p 1 π[u] u s p 3 p 2 x y

49 Caminhos Mínimos Com Uma Fonte 49/ 74 Algoritmo de Dijkstra Corretude do algoritmo de Dijkstra Teorema Se executarmos o algoritmo de Dijkstra em um grafo direcionado G = (V,E), onde w : E R +, Então, quando o algoritmo termina, d[v] = δ(s,v) para todo v V.

50 Caminhos Mínimos Com Uma Fonte 50/ 74 Algoritmo de Dijkstra Corretude do algoritmo de Dijkstra Demonstração Vamos mostrar que para cada u V, temos d[u] = δ(s,u) no momento em que u é inserido em S, e esta igualdade permanece. Com o propósito de contradição, suponha que u é o primeiro vértice tal que d[u] δ(s,u). Seja p = (p 1,π[u],u) o caminho produzido pelo algoritmo. Seja p = ( p 2,x,y, p 3 ) um caminho mais curto de s até u. y é o primeiro vértice em p que não pertence a S. Temos que w( p) < w(p).

51 Caminhos Mínimos Com Uma Fonte 51/ 74 Algoritmo de Dijkstra Corretude do algoritmo de Dijkstra Demonstração Sabemos que d[x] = δ(s,x). Caso contrário, u não seria o primeiro vértice com distância incorreta. Uma vez que y pertence a um caminho mais curto, temos que d[y] = δ(s,y) no momento em que x foi inserido em s. A aresta (x,y) foi relaxada no momento em que x foi inserido em S, fazendo com que d[y] se tornasse δ(s,y).

52 Caminhos Mínimos Com Uma Fonte 52/ 74 Algoritmo de Dijkstra Corretude do algoritmo de Dijkstra Demonstração Contudo, temos que: δ(s,u) < d[u] δ(s,y)+w( p 3 ) < d[u] d[y]+w( p 3 ) < d[u] [pois δ(s,y) = d[y]] d[y] < d[u] w( p 3 ) d[y] < d[u] [pois w( p 3 ) 0] Mas isto é uma contradição. O algoritmo teria escolhido y como o próximo vértice a ser inserido em S, não teria escolhido u.

53 Caminhos Mínimos Com Uma Fonte 53/ 74 Algoritmo de Dijkstra Análise do algoritmo de Dijkstra Vetor como fila de prioridades Neste caso, extract-min leva tempo O(n) e há n operações extract-min, com n = V e m = E. Uma vez que cada aresta é examinada no máximo uma vez, a operação relax é executada no máximo uma vez, levando tempo O(1). Podemos concluir que o algoritmo leva tempo O(n 2 +m) = O(n 2 ).

54 Caminhos Mínimos Com Uma Fonte 54/ 74 Algoritmo de Dijkstra Análise do algoritmo de Dijkstra Heap binário como fila de prioridades Quando o grafo é esparso, entretanto, é mais prático utilizarmos uma fila de prioridades implementada com heap binário. Neste caso, extract-min leva tempo O(lgn) e há n operações extract-min, com n = V e m = E. Cada aresta (u,v) é examinada uma vez, forçando uma operação relax(u,v,w) que custa no máximo O(lgn), quando a distância d[v] for reduzida. Portanto o algoritmo executa em tempo O(nlgn+mlgn) = O(mlgn) assumindo que m n.

55 Caminhos Mínimos Com Uma Fonte 55/ 74 Algoritmo de Dijkstra Análise do algoritmo de Dijkstra Heap Fibonacci como fila de prioridades Neste caso, extract-min leva tempo O(lgn) e há n operações extract-min, com n = V e m = E. Cada aresta (u,v) é examinada uma vez, forçando uma operação relax(u,v,w) que custa no máximo O(1) (tempo amortizado), quando a distância d[v] for reduzida. Portanto o algoritmo executa em tempo amortizado O(nlgn+m). Quando o grafo é denso, temos m = n 2 e o algoritmo executa em tempo O(n 2 ). Quando o grafo é esparso, temos O(nlgn) já que m = Θ(n).

56 Caminhos Mínimos Com Uma Fonte 56/ 74 Algoritmo de Dijkstra Dijkstra: grafo u 1 v 10 s x 2 y

57 Caminhos Mínimos Com Uma Fonte 57/ 74 Algoritmo de Dijkstra Dijkstra: iteração 1 u 1 v 10 s x 2 y

58 Caminhos Mínimos Com Uma Fonte 58/ 74 Algoritmo de Dijkstra Dijkstra: iteração 2 u 10 1 v 10 s x 2 y

59 Caminhos Mínimos Com Uma Fonte 59/ 74 Algoritmo de Dijkstra Dijkstra: iteração 3 8 u 1 v s x 2 7 y

60 Caminhos Mínimos Com Uma Fonte 60/ 74 Algoritmo de Dijkstra Dijkstra: iteração 4 u 1 v s x 2 7 y

61 Caminhos Mínimos Com Uma Fonte 61/ 74 Algoritmo de Dijkstra Dijkstra: iteração 5 8 u 1 9 v 10 s x 2 7 y

62 Caminhos Mínimos Com Uma Fonte 62/ 74 Algoritmo de Dijkstra Dijkstra: iteração 6 8 u 1 9 v 10 s x 2 7 y

63 Caminhos Mínimos Com Uma Fonte 63/ 74 Grafos Acíclicos Sumário Algoritmo Bellman-Ford Algoritmo de Dijkstra Grafos Acíclicos

64 Caminhos Mínimos Com Uma Fonte 64/ 74 Grafos Acíclicos Grafos Acíclicos Relaxando as arestas segundo a ordem topológica de um grafo direcionado acíclico G = (V,E), leva ao cômputo da árvore de caminhos mínimos em tempo Θ( V + E ). Caminhos mínimos são sempre definidos em grafos acíclicos, pois mesmo na presença de arestas com pesos negativos, não existe ciclo de comprimento negativo.

65 Caminhos Mínimos Com Uma Fonte 65/ 74 Grafos Acíclicos Algoritmo Dag-Shortest-Paths(G, w, s) 1) topologically sort the vertices of G 2) Initialize-Single-Source(G, s) 3) for each u taken in topologically sorted order 4) do for each vertex v Adj[u] 5) do Relax(u,v,w)

66 Caminhos Mínimos Com Uma Fonte 66/ 74 Grafos Acíclicos Tempo de Execução Ordenação topológica pode ser realizada em tempo Θ( V + E ) utilizando o algoritmo de busca em profundidade. Cada vértice é examinado exatamente uma vez, quando sua lista de adjacência é examinada e a operação Relax é executada. Logo, o laço 3-5 executa em tempo Θ( V + E ). O tempo total de execução é, portanto, Θ( V + E ).

67 Caminhos Mínimos Com Uma Fonte 67/ 74 Grafos Acíclicos Exemplo 6 1 r s t u v x

68 Caminhos Mínimos Com Uma Fonte 68/ 74 Grafos Acíclicos Vértice r 6 1 r s t u v x

69 Caminhos Mínimos Com Uma Fonte 69/ 74 Grafos Acíclicos Vértice s 6 1 r s t u v x

70 Caminhos Mínimos Com Uma Fonte 70/ 74 Grafos Acíclicos Vértice t 6 1 r s t u v x

71 Caminhos Mínimos Com Uma Fonte 71/ 74 Grafos Acíclicos Vértice u 6 1 r s t u v x

72 Caminhos Mínimos Com Uma Fonte 72/ 74 Grafos Acíclicos Vértice v 6 1 r s t u v x

73 Caminhos Mínimos Com Uma Fonte 73/ 74 Grafos Acíclicos Vértice x 6 1 r s t u v x

74 Caminhos Mínimos Com Uma Fonte 74/ 74 Grafos Acíclicos Conclusões Fim! Obrigado pela presença

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Caminhos Mais Curtos com Fonte Única [CLRS, Cap. 24] 2014/2015 Contexto Revisão [CLRS, Cap.1-13] Fundamentos; notação; exemplos Algoritmos em Grafos [CLRS, Cap.21-26] Algoritmos

Leia mais

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos Grafos Caminhos mais curtos de única origem Conteúdo Subestrutura ótima Inicialização Propriedades de caminhos mais curtos Algoritmos Algoritmo de Bellman-Ford Caminhos mais curtos de única origem em gaos

Leia mais

AULA 13 PROJETO E ANÁLISE DE ALGORITMOS. Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado

AULA 13 PROJETO E ANÁLISE DE ALGORITMOS. Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado AULA 13 PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado Roteiro Motivação Relaxamento Algoritmo de Dijkstra Motivação Suponha que você

Leia mais

Caminhos mínimos de única origem

Caminhos mínimos de única origem Caminhos mínimos de única origem Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Introdução

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Projeto e Análise de Algoritmos. Método Guloso

Projeto e Análise de Algoritmos. Método Guloso Projeto e Análise de Algoritmos Método Guloso Altigran Soares da Silva Universidade Federal do Amazonas Departamento de Ciência da Computação Árvore Geradora Um árvore geradora de um grafo G é um subgrafo

Leia mais

Grafos e Algoritmos de Busca

Grafos e Algoritmos de Busca Grafos e Algoritmos de Busca /65 Grafos e Algoritmos de Busca Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-93: Introdução a Algoritmos Grafos e Algoritmos

Leia mais

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford. O problema tem subestrutura óptima

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford. O problema tem subestrutura óptima Caminho mais curto a partir de um nó Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford Fernando Lobo Algoritmos e Estrutura de Dados II Input: Um grafo com pesos nos arcos G =

Leia mais

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford

Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford Caminho mais curto a partir de um nó Algoritmos de Dijkstra e Bellman-Ford Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 28 Caminho mais curto a partir de um nó Input: Um grafo com pesos nos arcos

Leia mais

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22 Análise e Síntese de Algoritmos Algoritmos em Grafos CLRS, Cap. 22 Mudança no Horário Aulas Teóricas de 4ª feira 10:30 12:00 Sala: FA1 12:00 13:30 Sala: FA1 Deixa de haver aula teórica às 9:00 por troca

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 33 Definição do Problema Dado: um grafo ponderado G = (V, E), orientado ou não, onde d : E R + define as distâncias

Leia mais

Grafos: caminhos mínimos

Grafos: caminhos mínimos Grafos: caminhos mínimos SCE-8 Algoritmos e Estruturas de Dados Thiago A. S. Pardo Maria Cristina Gustavo Batista O problema do menor caminho Um motorista deseja encontrar o caminho mais curto possível

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Algoritmos Elementares em Grafos [CLRS, Cap. 22] 24/25 Contexto Revisão [CLRS, Cap.-3] Fundamentos; notação; exemplos Algoritmos em Grafos [CLRS, Cap.2-26] Algoritmos elementares

Leia mais

06 Grafos: Caminhos Mínimos SCC0503 Algoritmos e Estruturas de Dados II

06 Grafos: Caminhos Mínimos SCC0503 Algoritmos e Estruturas de Dados II 06 Grafos: Caminhos Mínimos SCC050 Algoritmos e Estruturas de Dados II Paulo H. R. Gabriel Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 011/1 Paulo H.

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Caminhos Mais Curtos para Todos os Pares CLRS, Cap. 25 Contexto Algoritmos Elementares em Grafos (CLR, Cap. 22) BFS & DFS Ordenação Topológica & SCCs Árvores Abrangentes

Leia mais

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos Caminhos Mínimos entre Todos os Vértices 1/ 48 Caminhos Mínimos entre Todos os Vértices Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: Introdução

Leia mais

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma Grafos Árvores espalhadas mínimas Conteúdo Introdução Como construir uma árvore geradora miníma Algoritmos Referências Introdução Dado um grafo conectado não orientado G = (V, E) e uma função peso w :

Leia mais

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de todos os pares

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de todos os pares Grafos Caminhos mais curtos de todos os pares Conteúdo Algoritmos Baseado em multiplicação de matrizes Algoritmo de Floyd-Warshall Agoritmo de Johnson para grafos esparsos Referências Dado um grafo orientado

Leia mais

O grau de saída d + (v) de um vértice v é o número de arcos que tem

O grau de saída d + (v) de um vértice v é o número de arcos que tem Grafos Direcionados Definição (Grau de Entrada) O grau de entrada d (v) de um vértice v é o número de arcos que tem v como cabeça. Definição (Grau de Saída) O grau de saída d + (v) de um vértice v é o

Leia mais

Caminhos mínimos de todos os pares

Caminhos mínimos de todos os pares Caminhos mínimos de todos os pares Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Introdução

Leia mais

INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO

INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO BACHARELADO EM SISTEMAS DE INFORMAÇÃO ANTONIO CARLOS GOMES BASILIO EVANDRO DAS VIRGENS SCARPATI MARCOS AURÉLIO MELO DIAS RENAN COSMO PROBLEMA DO CAMINHO MÍNIMO

Leia mais

Problema do Caminho Mínimo

Problema do Caminho Mínimo Departamento de Engenharia de Produção UFPR 63 Problema do Caminho Mínimo O problema do caminho mínimo ou caminho mais curto, shortest path problem, consiste em encontrar o melhor caminho entre dois nós.

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 06 Busca em Profundidade e Busca em Largura Edirlei Soares de Lima Grafos (Revisão) G = (V, A) G: grafo; V: conjunto de vértices; A: conjunto

Leia mais

Grafos Caminhos mais Curtos

Grafos Caminhos mais Curtos ALGORITMOS E ESTRUTURAS DE DADOS II Grafos Caminhos mais Curtos Profa. Elaine Parros Machado de Sousa adaptações: Cris.na Dutra de Aguiar Ciferri Material baseado em aulas dos professores: Gustavo Basta,

Leia mais

Algoritmo de Dijkstra (um para todos ; arestas de peso não negativo ; guloso)

Algoritmo de Dijkstra (um para todos ; arestas de peso não negativo ; guloso) Algoritmo de Dijkstra (um para todos ; arestas de peso não negativo ; guloso) 1º passo: iniciam-se os valores: para todo v V[G] d[v] π[v] -1 d[s] 0 V[G] é o conjunto de vértices(v) que formam o Grafo G.

Leia mais

Grafos Parte 2. SCC-603 Algoritmos e Estruturas de Dados II. Profª. Rosane Minghim / Baseado em material de professores dos anos anteriores

Grafos Parte 2. SCC-603 Algoritmos e Estruturas de Dados II. Profª. Rosane Minghim / Baseado em material de professores dos anos anteriores Grafos Parte 2 SCC-603 Algoritmos e Estruturas de Dados II Profª. Rosane Minghim / 2012 Baseado em material de professores dos anos anteriores Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Algoritmos em Grafos Aula 2 Caminho Mínimo: Algoritmo de Bellman-Ford Prof. Humberto César Brandão de Oliveira humberto@bcc.unifal-mg.edu.br Caminho Mínimo Suponha que você

Leia mais

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

PAA-DCC-UFAM. Grafos. Universidade Federal do Amazonas Departamento de Eletrônica e Computação Grafos Universidade Federal do Amazonas Departamento de Eletrônica e Computação Grafos () Um grafo é composto por um conjunto de vértices e um conjunto de arestas Cada aresta liga dois vértices do grafo

Leia mais

Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011. *Baseado em material de professores dos anos anteriores

Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011. *Baseado em material de professores dos anos anteriores Grafos parte 2* Algoritmos e Estruturas de Dados II SCC-203 Rosane 2010/2011 *Baseado em material de professores dos anos anteriores Divisão do Arquivo 1ª parte Percorrendo um grafo Eficiência, Correção

Leia mais

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem

Leia mais

Grafos parte 2. Percorrendo um grafo. Correção. Eficiência. Percorrendo um Grafo. Percorrendo um Grafo. Percorrendo um Grafo

Grafos parte 2. Percorrendo um grafo. Correção. Eficiência. Percorrendo um Grafo. Percorrendo um Grafo. Percorrendo um Grafo Percorrendo um grafo Grafos parte 2 SCC-203 Algoritmos e Estruturas de Dados 2 Rosane 2010 Baseado em material de professores dos anos anteriores Percorrendo um Grafo Percorrer um grafo é um problema fundamental

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 35 Teoria dos Grafos - Relembrando Árvore Um grafo G é uma árvore se é conexo e não possui ciclos (acíclico).

Leia mais

Grafos: caminhos mínimos em Listas de Adjacência. Profa. Graça Nunes

Grafos: caminhos mínimos em Listas de Adjacência. Profa. Graça Nunes Grafos: caminhos mínimos em Listas de Adjacência Profa. Graça Nunes Caminhos mínimos O problema do caminho mínimo consiste em determinar um menor caminho entre um vértice de origem e um vértice de destino

Leia mais

Algoritmo Floyd-Warshall. Problema dos caminhos mínimos entre todos os pares. Programação dinâmica

Algoritmo Floyd-Warshall. Problema dos caminhos mínimos entre todos os pares. Programação dinâmica Algoritmo Floyd-Warshall S. Problema dos caminhos mínimos entre todos os pares Problema: Dado um digrafo com custo nos arcos, determinar, para cada par de vértices s, t o custo de um caminho mínimo de

Leia mais

Teoria dos Grafos Aula 22

Teoria dos Grafos Aula 22 Teoria dos Grafos Aula 22 Aula passada Caminho mais curto entre todos os pares Algoritmo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto Algoritmo de Bellman Ford Melhorias Caminho

Leia mais

Teoria dos Grafos Aula 5

Teoria dos Grafos Aula 5 Teoria dos Grafos Aula Aula passada Explorando grafos Mecanismos genéricos Ideias sobre BFS, DFS Aula de hoje Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Busca em Grafos Problema

Leia mais

Busca em Largura. Adaptado de Humberto C. B. Oliveira

Busca em Largura. Adaptado de Humberto C. B. Oliveira Busca em Largura Adaptado de Humberto C. B. Oliveira Últimas aulas Introdução: História Aplicações Conceitos Básicos: Grafo simples Grafo completo/vazio Grafo não orientado: Arestas laço Arestas paralelas

Leia mais

Sub-grafo. Árvore Geradora Mínima

Sub-grafo. Árvore Geradora Mínima Comentários da aula anterior Componentes Fortemente Conectados (algoritmo) 1. Chama BuscaEmProfundidade (G) para obter os tempos de término (t[u], ou f[u]) para todos os vértices de G, isto é, enquanto

Leia mais

GRAFOS Aula 07 Algoritmos de Caminho Mínimo: Bellman-Ford / Floyd-Warshall Max Pereira

GRAFOS Aula 07 Algoritmos de Caminho Mínimo: Bellman-Ford / Floyd-Warshall Max Pereira Ciência da Computação GRAFOS Aula 07 Algoritmos de Caminho Mínimo: Bellman-Ford / Floyd-Warshall Max Pereira Algoritmo de Bellman-Ford Arestas com valores negativos podem parecer inúteis, mas elas podem

Leia mais

Teoria dos Grafos Aula 24

Teoria dos Grafos Aula 24 Teoria dos Grafos Aula 24 Aula passada Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto em grafos Algoritmo de Bellman Ford Algoritmo

Leia mais

Algoritmo de Dijkstra em LISP

Algoritmo de Dijkstra em LISP Algoritmo de Dijkstra em LISP Léo Willian Kölln 10 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico

Leia mais

Algoritmos em Grafos: Caminho Mínimo

Algoritmos em Grafos: Caminho Mínimo Algoritmos em Grafos: Caminho Mínimo Letícia Rodrigues Bueno UFABC Problema 2: Menor caminho entre duas cidades Dado um mapa de cidades, contendo as distâncias entre cidades, qual o menor caminho entre

Leia mais

Grafos COM11087-Tópicos Especiais em Programação II

Grafos COM11087-Tópicos Especiais em Programação II Grafos COM11087-Tópicos Especiais em Programação II edmar.kampke@ufes.br Introdução Grafos são estruturas muito estudadas na Ciência da Computação para modelagem de problemas Euler (1736) em Königsberg

Leia mais

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32 Grafos - Introdução Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 1 / 32 Conceito Definição de Grafo Formalmente, um grafo é: Um conjunto de nós/vértices (V).

Leia mais

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Um grafo é uma estrutura que generaliza árvores, sendo formado por nós e arestas. Cada nó em um grafo pode ser conectado a vários outros nós por

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos // DI, PUC-Rio Estruturas de Dados Avançadas. Aplicações de grafos grafo vértices arestas Cronograma tarefas restrições de preferência Malha viária interseções

Leia mais

Busca em Profundidade e em Largura

Busca em Profundidade e em Largura Busca em Profundidade e em Largura Grafos e Algoritmos Computacionais Prof. Flávio Humberto Cabral Nunes fhcnunes@yahoo.com.br 1 Mais sobre Caminhos TEOREMA: Se um grafo possui exatamente 2 vértices de

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 0 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA Caminhos mais curtos Caminhos mais curtos Encontrar um caminho mais curto entre dois nós

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Grafos Slides baseados em: ZIVIANI, N. Projetos de Algoritmos - com implementações em Java e C++. Thomson Learning, 2007. Cap 7. CORMEN, H.T.; LEISERSON, C.E.; RIVEST,

Leia mais

Análise e Síntese de Algoritmos. Caminhos Mais Curtos para Todos os Pares CLRS, Cap. 25

Análise e Síntese de Algoritmos. Caminhos Mais Curtos para Todos os Pares CLRS, Cap. 25 Análise e Síntese de Algoritmos Caminhos Mais Curtos para Todos os Pares CLRS, Cap. 25 Contexto Algoritmos Elementares em Grafos (CLR, Cap. 22) BFS & DFS Ordenação Topológica & SCCs Árvores Abrangentes

Leia mais

Grafos: algoritmos de busca

Grafos: algoritmos de busca busca em grafos como caminhar no grafo de modo a percorrer todos os seus vértices evitando repetições desnecessárias do mesmo vértice? e por onde começar? solução: necessidade de recursos adicionais que

Leia mais

Árvores Árvores Geradoras de Custo Mínimo 0/16

Árvores Árvores Geradoras de Custo Mínimo 0/16 Conteúdo 1 Árvores 2 Árvores Geradoras de Custo Mínimo Árvores Árvores Geradoras de Custo Mínimo 0/16 Árvores Definição (Grafo Acíclico) Um grafo acíclico é um grafo que não contém ciclos. Árvores Árvores

Leia mais

Grafos: caminhos (matriz adjacência)

Grafos: caminhos (matriz adjacência) Grafos: caminhos (matriz adjacência) Algoritmos e Estruturas de Dados 2 Graça Nunes 1 O problema do menor caminho Um motorista deseja encontrar o caminho mais curto possível entre duas cidades do Brasil

Leia mais

grafo nós vértices arcos arestas

grafo nós vértices arcos arestas GRAFOS E APLICAÇÕES 1. INTRODUÇÃO 1) Um grafo G = (V, E) consiste num conjunto de nós (ou vértices) V e num conjunto de arcos (ou arestas) E. Cada arco é representado por um par de nós. No seguinte exemplo,

Leia mais

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos Letícia Rodrigues Bueno UFABC Problema : Menor caminho entre duas cidades Dado um mapa de cidades, contendo as distâncias entre cidades, qual

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 12 Prof. Dr. Sylvio Barbon Junior Sumário - Árvore Geradora Mínima - Teorema pare reconhecer arestas seguras; - Algoritmo de Prim; - Algoritmo

Leia mais

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado.

ESTRUTURAS DISCRETAS (INF 1631) GRAFOS. 1. O que é um grafo? Defina um grafo orientado. Defina um grafo não-orientado. PUC-Rio Departamento de Informática Profs. Marcus Vinicius S. Poggi de Aragão Período: 0. Horário: as-feiras e as-feiras de - horas de maio de 0 ESTRUTURAS DISCRETAS (INF 6) a Lista de Exercícios Procure

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF Estruturas de Dados Avançadas Grafos //8 DI, PUC-Rio Estruturas de Dados Avançadas. Primeiro uso conhecido 7 Euler: pontes de Königsberg //8 DI, PUC-Rio Estruturas de Dados Avançadas. Primeiro uso

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 09 Árvore Geradora Mínima Edirlei Soares de Lima Árvore Geradora Mínima Dado um grafo não direcionado conectado G, uma árvore T é chamada de

Leia mais

Distâncias Mínimas. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/ / 27

Distâncias Mínimas. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/ / 27 Distâncias Mínimas Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/2015 1 / 27 Distâncias Mínimas Uma das aplicações mais típicas em grafos é o cálculo de distâncias.

Leia mais

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Leia mais

Problemas de Fluxo em Redes

Problemas de Fluxo em Redes CAPÍTULO 7 1. Conceitos fundamentais de grafos Em muitos problemas que nos surgem, a forma mais simples de o descrever, é representá-lo em forma de grafo, uma vez que um grafo oferece uma representação

Leia mais

Busca em Profundidade. Componentes Conexos. Grafos. Maria Adriana Vidigal de Lima. Fevereiro

Busca em Profundidade. Componentes Conexos. Grafos. Maria Adriana Vidigal de Lima. Fevereiro Fevereiro - 009 Definição de Grafo Listas de Adjacências de Técnicas da Classificação das Arestas Aplicação do de de 4 Grafo Transposto Definição de Grafo Listas de Adjacências de Exemplos de Aplicação

Leia mais

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Grafos com pesos, caminhos e distâncias Ideia e algoritmo de Dijkstra Dijkstra o próprio Aula de hoje Corretude de Dijkstra Fila de prioridades e Heap Dijkstra eficiente

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra ES- Algoritmos e Estruturas de Dados arlos Alberto Alonso Sanches Juliana de Melo ezerra ES- rafos onceitos gerais e representações Algoritmos em grafos Exploração sistemática em largura aminhos mais curtos

Leia mais

CAMINHOS, CIRCUITOS, CAMINHOS MÍNIMOS E CONEXIDADE

CAMINHOS, CIRCUITOS, CAMINHOS MÍNIMOS E CONEXIDADE CAPíTULO 2 CAMINHOS, CIRCUITOS, CAMINHOS MÍNIMOS E CONEXIDADE Neste captulo tratamos de tr^es classes especiais de grafos. Na primeira sec~ao apresentamos a classe dos caminhos e noc~oes que permeiam essa

Leia mais

Algoritmos de Caminho Mínimo Parte 1

Algoritmos de Caminho Mínimo Parte 1 Algoritmos de Caminho Mínimo Parte 1 A journey of a thousand miles starts with a single step and if that step is the right step, it becomes the last step. Index 1. Introduction 2. Applications 3. Tree

Leia mais

Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno

Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno UFABC Problemas de Caminho Mínimo Caminho mínimo de fonte única: algoritmo de Dijsktra; Problemas de Caminho Mínimo Caminho

Leia mais

Teoria dos Grafos. Árvores

Teoria dos Grafos.  Árvores Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Silvio A. de Araujo Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br, saraujo@ibilce.unesp.br Preparado a partir

Leia mais

Algoritmo de Dijkstra Wikipédia, a enciclopédia livre

Algoritmo de Dijkstra Wikipédia, a enciclopédia livre 1 de 8 26/08/2013 23:10 Algoritmo de Dijkstra Origem: Wikipédia, a enciclopédia livre. O algoritmo de Dijkstra, concebido pelo cientista da computação holandês Edsger Dijkstra em 1956 e publicado em 19591

Leia mais

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina

Grafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina Grafos: Busca SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é um problema fundamental Deve-se ter uma forma sistemática

Leia mais

Grafos: árvores geradoras mínimas. Graça Nunes

Grafos: árvores geradoras mínimas. Graça Nunes Grafos: árvores geradoras mínimas Graça Nunes 1 Motivação Suponha que queremos construir estradas para interligar n cidades Cada estrada direta entre as cidades i e j tem um custo associado Nem todas as

Leia mais

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST)

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST) Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45 Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST) Alguns problemas de otimização combinatória podem ser formulados

Leia mais

Grafos Direcionados. > Grafos Direcionados Representações Computacionais 1/36

Grafos Direcionados. > Grafos Direcionados Representações Computacionais 1/36 Grafos Direcionados > Grafos Direcionados Representações Computacionais 1/36 Grafos Direcionados Em muitas aplicações, é importante ter direção nas arestas: Ruas de mão única Grafos modelando páginas da

Leia mais

Estruturas de Dados Grafos

Estruturas de Dados Grafos Estruturas de Dados Grafos Prof. Eduardo Alchieri (introdução) Grafo é um conjunto de pontos e linhas que conectam vários pontos Formalmente, um grafo G(V,A) é definido pelo par de conjuntos V e A, onde:

Leia mais

Algoritmos Combinatórios: Backtracking com Bounding

Algoritmos Combinatórios: Backtracking com Bounding Algoritmos Combinatórios: Backtracking com Bounding lucia@site.uottawa.ca UFSC, Fevereiro, 2010 Backtracking com bounding Backtracking com bounding Quando aplicamos backtracking para um problema de otimização,

Leia mais

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Aula -Grafos Uma figura vale por mil palavras A representação de dados e ou informações utilizando de recursos visuais é, em muitos casos,

Leia mais

Árvores: Conceitos Básicos e Árvore Geradora

Árvores: Conceitos Básicos e Árvore Geradora Árvores: Conceitos Básicos e Árvore Geradora Grafos e Algoritmos Computacionais Prof. Flávio Humberto Cabral Nunes fhcnunes@yahoo.com.br 1 Introdução No dia a dia aparecem muitos problemas envolvendo árvores:

Leia mais

Desafios de Programação TCC Turma A-1

Desafios de Programação TCC Turma A-1 Desafios de Programação TCC-00.254 Turma A-1 Conteúdo Grafos Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2015.1/tcc-00.254

Leia mais

Algoritmos em Grafos

Algoritmos em Grafos Algoritmos em Grafos Baseado em: The Algorithm Design Manual Steven S. Skiena IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/42 Introdução (1) Um grafo G=(V,E)

Leia mais

Algoritmo de Dijkstra Estudo e Implementação

Algoritmo de Dijkstra Estudo e Implementação Teoria dos Grafos 0/0 Algoritmo de Dijkstra Estudo e Implementação Professora: Claudia Boeres Alunos: José Alexandre Macedo Maycon Maia Vitali Problema do Caminho Mínimo Qual o caminho mínimo entre um

Leia mais

Fluxo Máximo a Custo Mínimo

Fluxo Máximo a Custo Mínimo Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Programa de Educação Tutorial (PET) Demontiê Junior (demontie@dsc.ufcg.edu.br) Fluxo

Leia mais

Caminho mais curto e o algoritmo de Dijkstra

Caminho mais curto e o algoritmo de Dijkstra Caminho mais curto e o algoritmo de Dijkstra Márcia R. Cerioli Departamento de Ciência da Computação - IM e PESC - COPPE UFRJ Algoritmos e Grafos Dezembro de 05 Problema do Caminho mais Curto Problema

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes Grafos: Busca Algoritmos e Estruturas de Dados Graça Nunes Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é uma tarefa fundamental Pense no caso de se procurar uma certa informação associada

Leia mais

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron

Leia mais

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Grafos com pesos, caminhos e distâncias Ideia e implementação de alg. de Dijkstra Aula de hoje Corretude de Dijkstra Fila de prioridades e Heap Dijkstra eficiente

Leia mais

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Grafos: componentes fortemente conexos, árvores geradoras mínimas Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1 Componentes fortemente conexos Um componente fortemente

Leia mais

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste material e a resolução (por parte do aluno) de todos os

Leia mais

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3 Algoritmo Aproximado Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3 Heurísticas para Problemas N P- Completo Heurística: algoritmo que pode produzir um bom resultado (ou até a solução ótima),

Leia mais

AED2 - Aula 22 Busca em largura, cálculo de distâncias

AED2 - Aula 22 Busca em largura, cálculo de distâncias AED2 - Aula 22 Busca em largura, cálculo de distâncias Relembrando a busca genérica, usando um versão alternativa: marque todos os vértices como não encontrados. marque s como encontrado. coloque s no

Leia mais

Conceitos Básicos Isomorfismo de Grafos Subgrafos Passeios em Grafos Conexidade

Conceitos Básicos Isomorfismo de Grafos Subgrafos Passeios em Grafos Conexidade Conteúdo 1 Teoria de Grafos Conceitos Básicos Isomorfismo de Grafos Subgrafos Passeios em Grafos Conexidade > Teoria de Grafos 0/22 Conceitos Básicos Inicialmente, estudaremos os grafos não direcionados.

Leia mais

Algoritmos e Estruturas de Dados. Grafos Semestre de Inverno 13/14

Algoritmos e Estruturas de Dados. Grafos Semestre de Inverno 13/14 Algoritmos e Estruturas de Dados Grafos Semestre de Inverno 13/14 1 Grafo - Definição } Um grafo G=(V,E) é um par de dois conjuntos não vazios em que V é um conjunto finito e E é uma relação binária em

Leia mais

Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira

Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira Algoritmo de Prim Simulação S. Algoritmos em Grafos º sem / Franja A franja (= fringe) de uma subárvore T é o conjunto de todas as arestas que têm uma ponta em T e outra ponta fora Exemplo: As arestas

Leia mais

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação SCC-203 ALGORITMOS E ESTRUTURAS DE DADOS II Prova - Gabarito Nome: Nro. USP ) O matemático

Leia mais

2 Relação entre soma dos graus e número de arestas

2 Relação entre soma dos graus e número de arestas Rio de Janeiro, 24 de Outubro de 2011. LISTA DE ESTRUTURAS DISCRETAS PROFESSOR: EDUARDO LABER OBSERVAÇÕES: Exercícios marcados com são mais complicados. 1 Isomorfismo 1. Seja G =(V,E) um grafo simples.

Leia mais

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I edmar.kampke@ufes.br Introdução Teoria dos Grafos é o estudo das propriedades e estruturas dos grafos. O objetivo é, após modelar um problema

Leia mais

Caminho mais curto. 1 - Caminho não pesado

Caminho mais curto. 1 - Caminho não pesado Caminho mais curto Dado um grafo pesado G = (V, E) e um vértice s, obter o caminho pesado mais curto de s para cada um dos outros vértices em G Exemplo: rede de computadores, com custo de comunicação e

Leia mais