Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26

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

Download "Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26"

Transcrição

1 Análise e Síntese de Algoritmos Fluxos Máximos em Grafos CLRS, Cap. 26

2 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap ] Algoritmos elementares Árvores abrangentes Caminhos mais curtos Fluxos máximos Programação Linear [CLRS, Cap. 29] Técnicas de Síntese de Algoritmos [CLRS, Cap ] Programação dinâmica Algoritmos greedy Tópicos Adicionais [CLRS, Cap ] Emparelhamento de Cadeias de Caracteres Complexidade Computacional Algoritmos de Aproximação 2007/2008 Análise e Síntese de Algoritmos 2

3 Resumo Fluxos Máximos em Grafos Motivação Definições & Propriedades Método de Ford-Fulkerson Teorema do Fluxo-Máximo Corte-Mínimo Análise do algoritmo genérico Algoritmo de Edmonds-Karp Análise do algoritmo de Edmonds-Karp Emparelhamento Bipartido Máximo Algoritmos baseados em Pré-Fluxos Fluxos de Custo Mínimo 2007/2008 Análise e Síntese de Algoritmos 3

4 Um Problema: fornecer água a Lisboa Pretende-se determinar qual o volume de água máximo (por segundo), que é possível fazer chegar a Lisboa a partir da Barragem do Castelo do Bode Existe uma rede de condutas de água que permitem o envio da água do Castelo do Bode para Lisboa Cada conduta apresenta uma capacidade limite, de metros cúbicos por segundo Encontrar um algoritmo eficiente para resolver este problema 2007/2008 Análise e Síntese de Algoritmos 4

5 Fluxos Máximos em Grafos Dado um grafo dirigido G=(V, E): Com um vértice fonte s e um vértice destino t Em que cada arco (u,v) é caracterizado por uma capacidade não negativa c(u,v) A capacidade de cada arco (u,v) indica o valor limite de fluxo que é possível enviar de u para v através do arco (u,v) Pretende-se calcular o valor máximo de fluxo que é possível enviar do vértice fonte s para o vértice destino t, respeitando as restrições de capacidade dos arcos Exemplo 2007/2008 Análise e Síntese de Algoritmos 5

6 Fluxo Máximo em Grafos Aplicações Envio de materiais em rede de transportes Água, petróleo ou gás Contentores Electricidade Bytes 2007/2008 Análise e Síntese de Algoritmos 6

7 Fluxo Máximo em Grafos Aplicações Para redes de fluxo com múltiplas fontes e/ou destinos Definir super-fonte que liga a todas as fontes Definir super-destino ao qual ligam todos os destinos Capacidades infinitas entre super-fonte e fontes, e entre destinos e super-destino 2007/2008 Análise e Síntese de Algoritmos 7

8 Fluxo Máximo em Grafos Definições Uma rede de fluxo G = (V, E) é um grafo dirigido em que cada arco (u,v) tem capacidade c(u, v) 0 Se (u,v) E, então c(u,v) = 0 Dois vértices especiais: fonte s e destino t Todos os vértices de G num caminho de s para t Grafo ligado, E V - 1 Um fluxo G = (V, E) é uma função f : V V R tal que: f(u, v) c(u, v) para u, v V (restrição de capacidade) f(u, v) = - f(v, u) para u, v V (simetria) para u V - { s, t }: f u,v = (conservação de fluxo) v V ( ) /2008 Análise e Síntese de Algoritmos 8

9 Fluxo Máximo em Grafos Definições Valor de um fluxo: f = v V f ( s,v ) Problema do Fluxo Máximo: Dada rede de fluxo G com fonte s e destino t, calcular o fluxo de valor máximo de s para t Exemplo: 5/10 s 5/10 u v 1/5 4/10 6/ /2008 Análise e Síntese de Algoritmos 9 t Valor do fluxo: 10 Fluxo máximo: 20

10 Fluxo Máximo em Grafos Propriedades Dados conjuntos de vértices X e Y: f ( X,Y) = f( x,y) x X y Y Rede de fluxo G = (V, E); f fluxo em G; X, Y, Z V: f(x,x) = 0 (cancelamento de termos) f(x,y) = -f(y,x) Se X Y = : f(x Y,Z) = f(x,z) + f(y,z) f(z,x Y) = f(z,x) + f(z,y) (expansão do somatório) (expansão do somatório) 2007/2008 Análise e Síntese de Algoritmos 10

11 Método de Ford-Fulkerson Definições: Perspectiva Redes residuais Caminhos de aumento Cortes em redes de fluxo Teorema do Fluxo-Máximo Corte-Mínimo Método de Ford-Fulkerson Algoritmo Complexidade Problemas de convergência 2007/2008 Análise e Síntese de Algoritmos 11

12 Método Genérico Ford-Fulkerson-Method(G,s,t) inicializar fluxo f a 0 while existe caminho de aumento p aumentar fluxo f utilizando p return f 2007/2008 Análise e Síntese de Algoritmos 12

13 Redes Residuais Dado G = (V, E), um fluxo f, e u,v V capacidade residual de (u,v): Fluxo líquido adicional que é possível enviar de u para v c f (u,v) = c(u,v) - f(u,v) rede residual de G: G f = (V, E f ), onde E f = { (u,v) V V : c f (u,v) > 0 } Cada arco (residual) de G f permite apenas fluxo líquido positivo Exemplo 2007/2008 Análise e Síntese de Algoritmos 13

14 Redes Residuais (Cont.) G = (V, E), f um fluxo, G f rede residual; f fluxo em G f Fluxo de soma f + f definido para cada par u,v V: (f + f )(u,v) = f(u,v) + f (u,v) Fluxo de soma é um fluxo com valor f + f = f + f Propriedades de um fluxo são verificadas: restrição de capacidade, simetria e conservação de fluxo Obs: f é definido em G f e é um fluxo Cálculo do valor de fluxo: f + f' = f = = = v V v V v V f ( + f' )( s,v ) ( f( s,v ) + f' ( s,v )) f + ( s,v ) + f' ( s,v ) f' 2007/2008 Análise e Síntese de Algoritmos 14 v V

15 Caminhos de Aumento Dado G = (V, E) e um fluxo f caminho de aumento p: caminho simples de s para t na rede residual G f capacidade residual de p: c f (p) = min { c f (u,v) : (u,v) em p } c f (p) permite definir fluxo f p em G f, f p = c f (p) > 0 f = f + f p é um fluxo em G, com valor f = f + f p > f Exemplos 2007/2008 Análise e Síntese de Algoritmos 15

16 Cortes em Redes de Fluxo Um corte (S, T) de G = (V, E) é uma partição de V em S e T = V - S, tal que s S e t T fluxo líquido do corte (S, T): f(s,t) = f( u,v ) capacidade do corte (S, T): c(s,t) = u S v T u S v T c ( u,v ) Se G = (V, E) com fluxo f, então o fluxo líquido através de um corte (S, T) é f(s,t) = f T = V - S; f(s,t S) = f(s,t) + f(s,s); f(s,t) = f(s,v) - f(s,s) f(s,t) = f(s,v) - f(s,s) = f(s,v) = f(s,v) + f(s - s,v) = f(s,v) = f Obs: para u S - s, f(u, V) = /2008 Análise e Síntese de Algoritmos 16

17 Cortes em Redes de Fluxo (Cont.) Qualquer valor de fluxo é limitado superiormente pela capacidade de qualquer corte de G (S,T) qualquer corte, e f um fluxo: f = f ( S,T) = f( u,v ) c( u,v ) u S v T u S v T = c(s,t) S T 2007/2008 Análise e Síntese de Algoritmos 17

18 Fluxo-Máximo Corte-Mínimo Seja G = (V, E), com fonte s e destino t, e um fluxo f. Então as proposições seguintes são equivalentes: 1. f é um fluxo máximo em G 2. A rede residual G f não contém caminhos de aumento 3. f = c(s,t) para um corte (S,T) de G Admitir que f é fluxo máximo em G mas que G f tem caminho de aumento Então é possível definir um novo fluxo f + f p com valor f + f p > f ; uma contradição 2007/2008 Análise e Síntese de Algoritmos 18

19 Fluxo Máximo Corte Mínimo (Cont.) 1. f é um fluxo máximo em G 2. A rede residual G f não contém caminhos de aumento 3. f = c(s,t) para um corte (S,T) de G S = { v V : existe caminho de s para v em G f }; T = V - S; s S e t T Com u S e v T, temos f(u,v) = c(u,v), pelo que f = f(s,t) = c(s,t) Dado que f c(s,t), para qualquer corte (S,T) de G Como f = c(s,t) (definido acima), então f é fluxo máximo 2007/2008 Análise e Síntese de Algoritmos 19

20 Recapitular Fluxos Máximos em Grafos Definições Capacidades (dos arcos) Fluxos Capacidades residuais Redes residuais Caminhos de aumento Para aumento de fluxo Método de Ford-Fulkerson Teorema do fluxo máximo corte mínimo 2007/2008 Análise e Síntese de Algoritmos 20

21 A Seguir Fluxos Máximos em Grafos Método de Ford-Fulkerson Análise do algoritmo genérico Algoritmo de Edmonds-Karp 2007/2008 Análise e Síntese de Algoritmos 21

22 Algoritmo de Ford-Fulkerson Básico Ford-Fulkerson(G,s,t) foreach (u,v) E[G] f[u,v] = 0 f[v,u] = 0 while existe caminho de aumento p na rede residual G f calcular c f (p) foreach (u,v) p f[u,v] = f[u,v] + c f (p) // Incrementar valor do fluxo f[v,u] = - f[u,v] 2007/2008 Análise e Síntese de Algoritmos 22

23 Análise do Algoritmo Básico Número de aumentos de fluxo pode ser elevado u u s v t s v t rede de fluxo caminho de aumento com capacidade residual = 1 Fluxo máximo = No pior caso: número de caminhos de aumento é /2008 Análise e Síntese de Algoritmos 23

24 Análise de Algoritmo Básico (Cont.) Para valores racionais das capacidades Converter todas as capacidades para valores inteiros Número de caminhos de aumento limitado por valor máximo do fluxo f* Complexidade: O(E f* ) Por exemplo: DFS para encontrar caminho de aumento Para valores irracionais das capacidades Algoritmo básico pode não terminar Algoritmo básico pode convergir para valor incorrecto 2007/2008 Análise e Síntese de Algoritmos 24

25 Algoritmo de Edmonds-Karp Escolher caminho de aumento mais curto no número de arcos Utilizar BFS em G f para identificar caminho mais curto Complexidade: O(V E 2 ) Exemplos 2007/2008 Análise e Síntese de Algoritmos 25

26 Algoritmo de Edmonds-Karp Análise Definições: δ f (s,v): distância mais curta de s para v na rede residual G f δ f (s,v): distância mais curta de s para v na rede residual G f Sequência de acontecimentos considerada: f G f BFS p f G f BFS p Resultados: δ f (s,v) cresce monotonamente com cada aumento de fluxo Número de aumentos de fluxo é O(V E) Tempo de execução é O(V E 2 ) O(E) devido a BFS e aumento de fluxo a cada passo 2007/2008 Análise e Síntese de Algoritmos 26

27 Algoritmo de Edmonds-Karp Análise δ f (s,v) cresce de forma monótona com cada aumento de fluxo Prova por contradição: considere-se o primeiro v V tal que, após aumento de fluxo (de f para f ), a distância do caminho mais curto diminui, δ f (s,v) < δ f (s,v) Seja p= s,,u,v o caminho mais curto de s para v em G f δ f (s,u) = δ f (s,v)-1 δ f (s,u) δ f (s,u) (v é o primeiro que falha) (u,v) E f : δ f (s,v) δ f (s,u)+1 δ f (s,u)+1 = δ f (s,v) (u,v) E f e (u,v) E f : aumento de fluxo de v para u Aumento sempre pelo caminho mais curto, então o caminho mais curto entre s e u em G f tem como último arco (v,u): δ f (s,v) = δ f (s,u)-1 δ f (s,u)-1 = δ f (s,v)-2 Contradição! 2007/2008 Análise e Síntese de Algoritmos 27

28 Algoritmo de Edmonds-Karp Análise Número de aumentos de fluxo é O(V E) arco (u,v) na rede residual G f é crítico se capacidade residual de p é igual à capacidade residual do arco arco crítico desaparece após aumento de fluxo Quantas vezes pode arco (u,v) ser arco crítico? Como caminhos de aumento são caminhos mais curtos, δ f (s,v) = δ f (s,u) + 1 (u,v) só volta à rede residual após arco (v,u) aparecer em caminho de aumento (com fluxo f ) Como, δ f (s,u) = δ f (s,v) + 1 Dado que, δ f (s,v) δ f (s,v) (resultado anterior) Obtém-se, δ f (s,u) = δ f (s,v) + 1 δ f (s,v) + 1 = δ f (s,u) /2008 Análise e Síntese de Algoritmos 28

29 Algoritmo de Edmonds-Karp Análise Distância de s a u aumenta pelo menos de duas unidades entre cada par de vezes que (u,v) é crítico No limite, distância de s a u é não superior a V - 2 Pelo que arco (u,v) pode ser crítico O(V) vezes Existem O(E) pares de vértices Na execução do algoritmo de Edmonds-Karp o número total de vezes que arcos podem ser críticos é O(V E) Como cada caminho de aumento tem um arco crítico Existem O(V E) caminhos de aumento Complexidade de Edmonds-Karp é O(V E 2 ) Complexidade de BFS é O(V+E) = O(E) (dado V = O(E)) Aumento de fluxo em O(E) 2007/2008 Análise e Síntese de Algoritmos 29

30 Recapitular Fluxos Máximos em Grafos Método de Ford-Fulkerson Análise do algoritmo genérico Complexidade (valores inteiros): O(E f* ) Com valores irracionais pode não terminar Algoritmo de Edmonds-Karp Análise da complexidade O(V E 2 ) 2007/2008 Análise e Síntese de Algoritmos 30

31 A Seguir Fluxos Máximos em Grafos Emparelhamento Bipartido Máximo 2007/2008 Análise e Síntese de Algoritmos 31

32 Emparelhamento Bipartido Máximo G = (V, E) não dirigido Emparelhamento: M E, tal que para qualquer vértice v V não mais do que um arco em M é incidente em v Emparelhamento Máximo: Emparelhamento cardinalidade máxima (na dimensão de M) Grafo Bipartido: Grafo pode ser dividido em V = L R, em que L e R são disjuntos e em que todos os arcos de E estão entre L e R Emparelhamento Bipartido Máximo: Emparelhamento máximo em que G é bipartido 2007/2008 Análise e Síntese de Algoritmos 32

33 Emparelhamento Bipartido Máximo Construir G : V = V {s, t} E' = {( s,u) :u L} {( u,v) :u L,v R, e ( u,v) E} {( v,t) : v R} Atribuir capacidade unitária a cada arco de E Emparelhamento bipartido máximo em G equivale a encontrar fluxo máximo em G Exemplo 2007/2008 Análise e Síntese de Algoritmos 33

34 Emparelhamento Bipartido Máximo Dados G e G : 1. Se M é um emparelhamento em G, existe um fluxo f de valor inteiro em G, com f = M Seja M um emparelhamento, e (u,v) M. Definir f utilizando arcos de M, f(s,u) = f(u,v) = f(v,t) = 1. Para restantes arcos (u,v) E, f(u,v) = 0 Os caminhos s u v t para todo o (u,v) M são disjuntos em termos dos vértices, com excepção de s e t Como existem M caminhos, cada um com uma contribuição de uma unidade de fluxo para o fluxo total f, f = M 2007/2008 Análise e Síntese de Algoritmos 34

35 Emparelhamento Bipartido Máximo Dados G e G : 2. Se f é um fluxo de valor inteiro em G, existe um emparelhamento M em G, com f = M Definir M = {(u,v): u L, v R e f(u,v) > 0} Para cada u L, existe no máximo um v R tal que f(u,v)=1 Apenas um arco incidente com capacidade 1 Capacidades são inteiras De forma simétrica para v R Logo M é um emparelhamento M = f(l,r) = f(s,l) = f(s,v ) = f 2007/2008 Análise e Síntese de Algoritmos 35

36 Emparelhamento Bipartido Máximo Se todas as capacidades têm valor inteiro, então para fluxo máximo f, f é inteiro Indução no número de iterações do algoritmo genérico de Ford-Fulkerson Emparelhamento bipartido máximo M em G corresponde a f, em que f é o fluxo máximo de G Se M é emparelhamento máximo em G, e f não é máximo em G, então existe f que é máximo f é inteiro, f > f e f corresponde a emparelhamento M, com M > M ; contradição 2007/2008 Análise e Síntese de Algoritmos 36

37 Emparelhamento Bipartido Máximo A aplicação do algoritmo genérico de Ford-Fulkerson tem complexidade O(E f* ) Emparelhamento bipartido máximo é não superior a min( L, R ) = O(V) e tem valor inteiro i.e., no caso do emparelhamento máximo, f* = O(V) Complexidade de identificação do emparelhamento bipartido máximo é O(V E) 2007/2008 Análise e Síntese de Algoritmos 37

38 Recapitular Fluxos Máximos em Grafos Definições e Propriedades Método de Ford-Fulkerson Algoritmo de Edmonds-Karp Emparelhamento Bipartido Máximo 2007/2008 Análise e Síntese de Algoritmos 38

39 A Seguir Fluxos Máximos em Grafos Algoritmos de Pré-Fluxo (push-relabel) Correcção do algoritmo genérico Análise do algoritmo genérico Algoritmo Relabel-To-Front Análise do algoritmo Relabel-To-Front 2007/2008 Análise e Síntese de Algoritmos 39

40 Fluxo Máximo Utilizando Pré-Fluxos Motivação & Intuição Operações Básicas Algoritmo Genérico Correcção do Método Análise do Método 2007/2008 Análise e Síntese de Algoritmos 40

41 Pré-Fluxos Intuição Operação mais localizada do que Ford-Fulkerson Não identificar caminhos de aumento Propriedade da conservação de fluxo não é mantida durante execução do algoritmo Cada vértice u contém reservatório de fluxo Representa excesso de fluxo e(u) Começar por enviar todo o fluxo possível de s para vértices adjacentes Noção de altura de cada vértice, que evolui com aplicação do algoritmo Envio de fluxo só de vértices mais altos para vértices mais baixos Fazer subir altura de vértices em caso de necessidade de envio de fluxo 2007/2008 Análise e Síntese de Algoritmos 41

42 Pré-Fluxos Definições Pré-Fluxo: f : V V R Verifica restrições de capacidade, simetria e f(v, u) 0 para vértices u V - { s } Não verifica necessariamente conservação de fluxo Excesso de fluxo: e(u) = f(v, u) u V - { s, t } transborda se e(u) > 0 Uma função h : V N é uma função de alturas se h(s) = V, h(t) = 0, e h(u) h(v) + 1 para todo o arco residual (u,v) E f Função de alturas permite estabelecer condições para ser possível enviar fluxo de u para v 2007/2008 Análise e Síntese de Algoritmos 42

43 Pré-Fluxos Operações Básicas Enviar fluxo de u para v: Push(u,v) d f (u,v) = min(e[u], c f [u,v]) f[u,v] = f[u,v] + d f (u,v) f[v,u] = - f[u,v] e[u] = e[u] - d f (u,v) e[v] = e[v] + d f (u,v) Aplica-se quando u transborda, c f [u,v] > 0, e h[u] = h[v] + 1 Subir altura de u: Relabel(u) h[u] = 1 + min{h[v] : (u,v) E f } Aplica-se quando u transborda, e (u,v) E f implica h[u] h[v] 2007/2008 Análise e Síntese de Algoritmos 43

44 Pré-Fluxos Operações Básicas Operação de envio de fluxo de u para v, Push(u, v): Saturating push: arco (u, v) fica saturado após aplicação da operação Push (i.e., f(u,v) = c(u,v) c f (u,v)=0) Caso contrário: Nonsaturating push OBS: Após um nonsaturating Push(u, v), u deixa de transbordar (i.e., e(u)=0) 2007/2008 Análise e Síntese de Algoritmos 44

45 Pré-Fluxos Operações Básicas Initialize-Preflow(G, s) foreach v V[G] h[u] = 0 e[u] = 0 foreach (u,v) E[G] f[u,v] = 0 f[v,u] = 0 h[s] = V[G] foreach u Adj[s] f[s,u] = c(s,u) f[u,s] = -c(s,u) e[u] = c(s,u) h ( u ) = V se u = s 0 caso contrário 2007/2008 Análise e Síntese de Algoritmos 45

46 Pré-Fluxos Algoritmo Genérico Generic-Push-Relabel(G) Initialize-Preflow(G, s) while existe operação de Push ou Relabel aplicável seleccionar e executar operação de Push ou Relabel return f Exemplo 2007/2008 Análise e Síntese de Algoritmos 46

47 Pré-Fluxos Correcção do Método G = (V, E), rede de fluxo com fonte s e destino t, f um pré-fluxo, e h uma função de alturas para f. Se vértice u transborda, então u pode ser sujeito a uma operação de Relabel ou de Push h é função de alturas, pelo que h(u) h(v) + 1 Se operação de Push não aplicável a u, então para qualquer arco residual (u, v), h(u) < h(v) + 1, pelo que h(u) h(v) Assim, operação de Relabel pode ser aplicada a u 2007/2008 Análise e Síntese de Algoritmos 47

48 Pré-Fluxos Correcção do Método h[u] nunca decresce; se operação de Relabel é aplicada, h[u] aumenta de pelo menos 1 unidade Valor de h[u] apenas alterado em Relabel Aplicar Relabel se, para todo o (u, v) E f, h[u] h[v] h[u] < 1 + min { h[v] : (u,v) E f } Pelo que valor de h[u] aumenta (de pelo menos 1 unidade) após Relabel 2007/2008 Análise e Síntese de Algoritmos 48

49 Pré-Fluxos Correcção do Método Durante a execução do algoritmo genérico o valor de h é mantido como função de alturas Inicialmente h é uma função de alturas Relabel(u) mantém h como função de alturas Arco (u, v) em E f h[u] h[v] + 1 após Relabel, pela definição de Relabel Arco (w, u) em E f h[w] h[u] + 1 antes de Relabel implica h[w] < h[u] + 1 após Relabel de u Push(u,v) mantém h como função de alturas (v, u) incluído em E f h[v] = h[u] 1 < h[u] + 1 (u, v) removido de E f deixa de existir restrição em h devido a (u, v) 2007/2008 Análise e Síntese de Algoritmos 49

50 Pré-Fluxos Correcção do Método Recapitular G = (V, E), rede de fluxo com fonte s e destino t, f um préfluxo, e h uma função de alturas para f. Se vértice u transborda, então u pode ser sujeito a uma operação de Relabel ou de Push h[u] nunca decresce; se operação de Relabel é aplicada, h[u] aumenta de pelo menos 1 unidade Durante a execução do algoritmo genérico valor de h é mantido como função de alturas 2007/2008 Análise e Síntese de Algoritmos 50

51 Pré-Fluxos Correcção do Método Em G f não existe caminho de s para t Prova por contradição Admitir caminho p = v 0, v 1,, v k de s para t em G f, com v 0 =s e v k =t Podemos admitir p caminho simples, k < V i = 0, 1,, k-1 (v i, v i+1 ) E f, e h[v i ] h[v i+1 ] + 1 Pelo que, h[s] h[t] + k Como h[t] = 0, então h[s] k < V Mas h[s] = V ; uma contradição! (função de alturas) 2007/2008 Análise e Síntese de Algoritmos 51

52 Pré-Fluxos Correcção do Método Se algoritmo genérico termina, o pré-fluxo calculado é o fluxo máximo para G Inicialmente temos um pré-fluxo Devido a Initialize-Preflow Algoritmo mantém a existência de pré-fluxo invariante Push e Relabel não alteram invariante Se algoritmo termina, e[u] = 0 para qualquer vértice u Caso contrário poderia aplicar-se Push ou Relabel! Nesta situação, pré-fluxo é um fluxo Porque não existem vértices a transbordar! E não existe caminho de s para t na rede residual Porque h é função de alturas! Pelo teorema do fluxo máximo corte mínimo, f é o fluxo máximo!! 2007/2008 Análise e Síntese de Algoritmos 52

53 Pré-Fluxos Análise do Método Para cada vértice u que transborda existe um caminho simples de u para s em G f OBS: Fluxo enviado tem de poder ser cancelado h[u] 2 V -1 para u V h[s] e h[t] são constantes Relabel a u apenas aplicado quando vértice u transborda Existe caminho simples p de u para s p = v 0, v 1,, v k, v 0 = u, v k = s, k V -1 h[v i ] h[v i+1 ] + 1, i = 0, 1,, k h[u] = h[v 0 ] h[v k ] + k h[s] + ( V -1) = 2 V /2008 Análise e Síntese de Algoritmos 53

54 Pré-Fluxos Análise do Método O número de operações de Relabel é não superior a 2 V -1 para cada vértice e a (2 V - 1)( V - 2) < 2 V 2 no total Relabel apenas pode ser aplicado a vértices em V - {s, t}, i.e. V -2 vértices Relabel faz subir valor de h[u] em pelo menos 1 unidade Para u V - {s, t}, valores possíveis para h[u] entre 0 e 2 V -1 Relabel aplicado a u não mais do que 2 V - 1 vezes Número total de operações de Relabel não superior a: (2 V - 1)( V - 2) < 2 V /2008 Análise e Síntese de Algoritmos 54

55 Pré-Fluxos Análise do Método O número de saturating pushes é < 2 V E Analisar saturating pushes de u para v e de v para u Após Push(u,v), Push(v,u) requer aumento em h[v] de pelo menos 2 unidades Como 0 h[v] 2 V -1, o número máximo de vezes que a altura de v pode aumentar é V Esses V aumentos de h[v] podem implicar o mesmo número de aumentos de h[u], portanto para o par de vértices (u,v) o número total de saturating pushes é < 2 V Para todos os pares de vértices obtemos < 2 V E 2007/2008 Análise e Síntese de Algoritmos 55

56 Pré-Fluxos Análise do Método O número de nonsaturating pushes é 4 V 2 ( V + E ) Seja X V o conjunto de vértices que transborda Seja Φ = h v v X [ ] Cada operação de Relabel(u) aumenta Φ em menos de 2 V Limitação da máxima altura possível para um vértice Cada Saturating Push aumenta Φ em menos de 2 V Apenas um novo vértice pode ficar a transbordar e alturas não variam Nonsaturating Push (u,v) decrementa Φ em pelo menos 1 u deixa de transbordar; v pode passar a transbordar e h[v] - h[u] = -1 O total de aumento de Φ é < 2 V (2 V 2 ) + 2 V (2 V E ) = 4 V 2 ( V + E ) 2007/2008 Análise e Síntese de Algoritmos 56

57 Pré-Fluxos Análise do Método Como Φ 0, número de nonsaturating pushes é menor do que 4 V 2 ( V + E ) Número de operações elementares é O(V 2 E) Utilizar resultados anteriores Número de operações limitado pelo número de nonsaturating pushes Complexidade do algoritmo genérico é O(V 2 E) O(V) para operação Relabel (calcular novo valor de h) O(1) para operação Push (actualizar valores) 2007/2008 Análise e Síntese de Algoritmos 57

58 Algoritmo Relabel-To-Front Complexidade: O(V 3 ) Descarga de um vértice u: Enviar todo o fluxo em excesso para os vértices vizinhos de u Lista de vizinhos de u: N[u] v em lista N[u] se: (u,v) E ou (v,u) E i.e. vértices para os quais um arco residual (u, v) pode existir Primeiro vizinho: head[n[u]] Próximo vizinho de u (a seguir a v): next-neighbor[v] 2007/2008 Análise e Síntese de Algoritmos 58

59 Algoritmo Relabel-To-Front Operação de descarga de um vértice: Discharge (u) while e[u] > 0 v = current[u] if v = NIL Relabel(u) current[u] = head[n[u]] else if c f (u,v) > 0 and h[u] = h[v] + 1 Push(u,v) else current[u] = next-neighbor[v] 2007/2008 Análise e Síntese de Algoritmos 59

60 Algoritmo Relabel-To-Front Relabel-To-Front(G, s, t) Initialize-Preflow(G, s) L = V - {s, t} por qualquer ordem foreach u V - {s, t} current[u] = head[n[u]] u = head[l] while u NIL oldh = h[u] Discharge(u) if h[u] > oldh colocar u na frente da lista L u = next[u] return f 2007/2008 Análise e Síntese de Algoritmos 60

61 Análise de Relabel-To-Front Complexidade do ciclo principal: O(V 3 ) Não contabilizando o tempo de Discharge Fase: tempo entre operações de relabel Número de fases = número de operações de Relabel = O(V 2 ) O(V 2 ) para qualquer algoritmo de Pré-Fluxo Cada fase consiste de O(V) execuções de Discharge Total de execuções de Discharge é O(V 3 ) Complexidade (sem contabilizar Discharge) é O(V 3 ) 2007/2008 Análise e Síntese de Algoritmos 61

62 Análise de Relabel-To-Front Complexidade acumulada das operações de Discharge: Operações Relabel: Complexidade: Actualizações de current[u]: O(V E) para O(V 2 ) operações de Relabel Executadas O(degree(u)) vezes após Relabel de u Executadas O(V degree(u)) no total para cada vértice u (cada vértice pode ser sujeito a O(V) operações de relabel) Total: O(V E) Operações Push: Saturating pushes: O(V E) Nonsaturating pushes: Limitado pelo número de operações Discharge, porque retorna após nonsaturating push, i.e. O(V 3 ) 2007/2008 Análise e Síntese de Algoritmos 62

63 Análise de Relabel-To-Front Complexidade do algoritmo: Complexidade (total) das operações de Discharge O(V 3 ) Complexidade do algoritmo sem operações de Discharge O(V 3 ) Complexidade do algoritmo Relabel-To-Front: O(V 3 ) 2007/2008 Análise e Síntese de Algoritmos 63

64 Revisão Fluxos Máximos em Grafos Definições & Propriedades Método de Ford-Fulkerson Teorema do Fluxo Máximo Corte Mínimo Análise do algoritmo genérico Algoritmo de Edmonds-Karp Análise do algoritmo de Edmonds-Karp Emparelhamento Bipartido Máximo Algoritmos baseados em Pré-Fluxos A seguir: Programação Linear (CLRS, Cap. 29) 2007/2008 Análise e Síntese de Algoritmos 64

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Fluxos Máximos em Grafos CLRS, Cap. 26 Contexto Algoritmos elementares em grafos (CLR, Cap. 22) Árvores abrangentes de menor custo (CLR, Cap. 23) Caminhos mais curtos com

Leia mais

Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26

Análise e Síntese de Algoritmos. Fluxos Máximos em Grafos CLRS, Cap. 26 Análise e Síntese de Algoritmos Fluxos Máximos em Grafos CLRS, Cap. 26 Contexto Algoritmos elementares em grafos (CLR, Cap. 22) Árvores abrangentes de menor custo (CLR, Cap. 23) Caminhos mais curtos com

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 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

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

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Fluxo máximo Aula 23 Diane Castonguay diane@inf.ufg.br Instituto de Informática Universidade Federal de Goiás Fluxo em rede Um fluxo em rede G = (V, E) é um grafo orientado

Leia mais

Algoritmos de Fluxo Máximo

Algoritmos de Fluxo Máximo UNIVERSIDADE CATÓLICA DE PELOTAS Escola de Informática Programa de Pós-Graduação em Informática Mestrado em Ciência da Computação Algoritmos de Fluxo Máximo Rodrigo Santos de Souza 1 Fluxo em Redes É a

Leia mais

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34 Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Algoritmos em Grafos Estruturas de Dados para Conjuntos Disjuntos Programação Linear Programação Dinâmica Algoritmos Greedy

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

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

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

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15 Análise e Síntese de Algoritmos Programação Dinâmica CLRS, Cap. 15 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais curtos

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

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Algoritmos de Aproximação CLRS, Cap. 35 Resumo Algoritmos de aproximação Algoritmos, com complexidade polinomial, que calculam soluções aproximadas para problemas de optimização

Leia mais

2006/2007 Análise e Síntese de Algoritmos 2

2006/2007 Análise e Síntese de Algoritmos 2 Análise e Síntese de Algoritmos Árvores Abrangentes de Menor Custo CLRS, Cap. 23 Resumo Árvores Abrangentes de Menor Custo Minimum-Spanning Trees (MSTs) Algoritmo (greedy) genérico Prova de optimalidade

Leia mais

Teoria dos Grafos. Fluxo Máximo em Redes

Teoria dos Grafos. Fluxo Máximo em Redes 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 Fluxo Máximo

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. Programação Linear CLRS, Cap. 29

Análise e Síntese de Algoritmos. Programação Linear CLRS, Cap. 29 Análise e Síntese de Algoritmos Programação Linear CLRS, Cap. 29 Conteto Algoritmos em Grafos (CLRS, Cap. 22-26)... Fluos máimos em grafos (CLRS, Cap. 26) Programação Linear (CLRS, Cap. 29) Programação

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

Teoria dos Grafos Aula 26

Teoria dos Grafos Aula 26 Teoria dos Grafos Aula 26 Aula passada Redes de fluxo Problema do fluxo máximo Problema do corte mínimo Aula de hoje Algoritmo de Ford Fulkerson Análise do algoritmo Melhorando algoritmo inicial Dualidade

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

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6 Lista 6 Exercício. O objetivo deste exercício é modelar o problema de emparelhamento em um grafo bipartido como um problema de fluxo, e verificar que o Teorema de Konig é essencialmente o Teorema de Fluxo

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

Fluxo Máximo. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Fluxo Máximo 2014/ / 28

Fluxo Máximo. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Fluxo Máximo 2014/ / 28 Fluxo Máximo Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Fluxo Máximo 2014/2015 1 / 28 Fluxo Máximo Um grafo pesado pode ser interpretado como uma rede de canalizações onde o peso é a capacidade

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Análise e Síntese de Algoritmos. Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32

Análise e Síntese de Algoritmos. Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32 Análise e Síntese de Algoritmos Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32 Contexto Revisão Algoritmos em Grafos Programação Linear Programação Dinâmica Algoritmos Greedy Emparelhamento de Cadeias

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

Fluxo em Redes: Ford-Fulkerson - Fluxo Máximo

Fluxo em Redes: Ford-Fulkerson - Fluxo Máximo JAILSON ALVES MICAEL AGUIAR PIETRO DALMAZIO VINÍCIUS ALVES Fluxo em Redes: Ford-Fulkerson - Fluxo Máximo Trabalho apresentado ao professor doutor Leandro Colombi Resendo como requisito para aprovação na

Leia mais

Módulo 2 OTIMIZAÇÃO DE REDES

Módulo 2 OTIMIZAÇÃO DE REDES Módulo 2 OTIMIZAÇÃO DE REDES Grafos e Redes Está contida na área de Pesquisa Operacional. Pode ser considerada como uma teoria baseada na interligação de pontos e linhas, utilizada principalmente na solução

Leia mais

GRAFOS Aula 10 Fluxo em Redes Max Pereira

GRAFOS Aula 10 Fluxo em Redes Max Pereira Ciência da Computação GRAFOS Aula 10 Max Pereira É a transferência de algum tipo de recurso quantificável e sujeito a restrições de equilíbrio, de um local (origem) para outro (destino) através de uma

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

Pesquisa Operacional

Pesquisa Operacional Faculdade de Engenharia - Campus de Guaratinguetá Pesquisa Operacional Livro: Introdução à Pesquisa Operacional Capítulo 3 - Teoria dos Grafos Fernando Marins fmarins@feg.unesp.br Departamento de Produção

Leia mais

Teoria e Algoritmos em Grafos

Teoria e Algoritmos em Grafos Teoria e Algoritmos em Grafos 2018.2 Conjunto Independente Conjuntos Independentes são subconjuntos de vértices de um grafo no qual nenhum vértice é adjacente entre si. Conjunto Independente Conjuntos

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

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

Módulo 3 OTIMIZAÇÃO DE REDES DE TRANSPORTES

Módulo 3 OTIMIZAÇÃO DE REDES DE TRANSPORTES Módulo 3 OTIMIZAÇÃO DE REDES DE TRANSPORTES Grafos e Redes Está contida na área de Pesquisa Operacional. Pode ser considerada como uma teoria baseada na interligação de pontos e linhas, utilizada principalmente

Leia mais

MÓDULO 2 - OTIMIZAÇÃO DE REDES

MÓDULO 2 - OTIMIZAÇÃO DE REDES MÓUL - TIMIZÇÃ RS s problemas de otimização de redes podem ocorrer em várias áreas, mas geralmente são encontrados nas áreas de transportes e comunicações. Um problema típico de transporte consiste em

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

Ciclos hamiltonianos e o problema do caixeiro viajante

Ciclos hamiltonianos e o problema do caixeiro viajante Ciclos hamiltonianos e o problema do caixeiro viajante Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.

Leia mais

1 Introdução Motivação

1 Introdução Motivação 1 Introdução 1.1. Motivação A programação linear, ao menos na modelagem matemática que se conhece hoje, foi desenvolvida durante a segunda grande guerra quando foi utilizada no planejamento e execução

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

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 10: Introdução aos Grafos História O assunto que se constitui no marco inicial da teoria de grafos é na realidade um problema algorítmico.

Leia mais

Aula 2 Definições, Conceitos Básicos e Representação Interna de Grafos. Teoria dos Grafos Prof.

Aula 2 Definições, Conceitos Básicos e Representação Interna de Grafos. Teoria dos Grafos Prof. Teoria dos Grafos Aula 2 Definições, Conceitos Básicos e Representação Interna de Grafos Jorge Figueiredo Aula 2-1 Definições Dois tipos de elementos: Vértices ou nós. Arestas. v3 v1 v2 v4 v5 v6 Jorge

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

Fluxos em redes: o Problema do Fluxo máximo

Fluxos em redes: o Problema do Fluxo máximo 1 Fluxos em redes: o Problema do Fluxo máximo Instância: uma rede (G, c) e vértices s e t G = (V, E) um grafo dirigido s e t V são dois vértices distinguidos c: E R 0 é uma função capacidade nas arestas

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Revisão [CLRS, Cap. 7-10] 2014/2015 Contexto Revisão [CLRS, Cap.1-13] Fundamentos; notação; exemplos Algoritmos em Grafos [CLRS, Cap.21-26] Algoritmos elementares Árvores

Leia mais

Calculando distâncias

Calculando distâncias Calculando distâncias Problema: dados um digrafo G e um vértice s, determinar a distância de s aos demais vértices do digrafo Exemplo: para s = v 3 5 dist[v] 3 3 5 Algoritmos em Grafos º sem / Busca em

Leia mais

Investigação Operacional

Investigação Operacional Investigação Operacional Licenciatura em Gestão 3.º Ano Ano Lectivo 2013/14 Optimização em Redes Texto elaborado por: Maria João Cortinhal (Coordenadora) Anabela Costa Maria João Lopes Ana Catarina Nunes

Leia mais

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Desempenho análise complicada Uso problemas de grafos equivalência

Leia mais

Teoria dos Grafos Aula 27

Teoria dos Grafos Aula 27 Teoria dos Grafos Aula 27 Aula passada Aula de hoje Algoritmo de Ford Aplicações do fluxo Fulkerson máximo Análise do algoritmo Emparelhamento perfeito Melhorando algoritmo inicial Caminhos distintos Corte

Leia mais

Caminhos em Grafos. Grafos - Caminho Simples (1) (Cliente para M. de Adj.) static int visited[maxv];

Caminhos em Grafos. Grafos - Caminho Simples (1) (Cliente para M. de Adj.) static int visited[maxv]; Caminhos em rafos Caminho simples Dados dois vértices num grafo, saber se estão ligados por um caminho; Determinar se o caminho existe ou calculá-lo explicitamente; Caminho de Hamilton Dados dois vértices

Leia mais

Introdução a Grafos Letícia Rodrigues Bueno

Introdução a Grafos Letícia Rodrigues Bueno Introdução a Grafos Letícia Rodrigues Bueno UFABC Teoria dos Grafos - Motivação Objetivo: aprender a resolver problemas; Como: usando grafos para modelar os problemas; Grafos: ferramenta fundamental de

Leia mais

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade. 5 Congruências lineares

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade. 5 Congruências lineares Programa Matemática Discreta 2007/08 Jorge Manuel L. André FCT/UNL 1 Parte 1 - Conjuntos e Aplicações 1 Conjuntos 2 Relações Binárias 3 Aplicações 4 Indução matemática e divisibilidade 5 Congruências lineares

Leia mais

Análise e Síntese de Algoritmos.

Análise e Síntese de Algoritmos. Análise e Síntese de Algoritmos http://fenix.ist.utl.pt/leic-a/disciplinas/asa Corpo Docente Aulas Teóricas: Vasco Manquinho INESC-ID, Sala 329 Email: vasco.manquinho@inesc-id.pt Tel: 21 3100204 (INESC-ID)

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47 1 / 47 MATEMÁTICA DISCRETA Patrícia Ribeiro Departamento de Matemática, ESTSetúbal 2018/2019 2 / 47 1 Combinatória 2 Aritmética Racional 3 3 / 47 Capítulo 3 4 / 47 não orientados Um grafo não orientado

Leia mais

GRAFOS Aula 02 Formalização: definições Max Pereira

GRAFOS Aula 02 Formalização: definições Max Pereira Ciência da Computação GRAFOS Aula 02 : definições Max Pereira Um grafo G é um par ordenado G = (V, E) onde V é um conjunto finito e não vazio de elementos e E é um conjunto de subconjuntos de dois elementos

Leia mais

Algoritmos em redes de fluxo e aplicações

Algoritmos em redes de fluxo e aplicações Algoritmos em redes de fluxo e aplicações Marcos Massayuki Kawakami Orientador: José Coelho de Pina Instituto de Matemática e Estatística - Universidade de São Paulo Introdução Motivação Problemas envolvendo

Leia mais

Algoritmos polinomiais para o problema de Fluxo Máximo

Algoritmos polinomiais para o problema de Fluxo Máximo Algoritmos polinomiais para o problema de Fluxo Máximo Notas de aula para disciplina Fluxo em Redes Natã Goulart da Silva Aulas dias 8, 10 e 15 e 22/04 prova. Este documento são notas de aula tiradas do

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

Problema de Fluxo Máximo

Problema de Fluxo Máximo Problema de Fluxo Máximo The Maximum Flow Problem Fernando Nogueira Fluxo Máximo 1 O Problema de Fluxo Máximo (The Maximum Flow Problem) Considere uma rede direcionada (dígrafo) conectada, com 2 nós especiais

Leia mais

Teoria dos Grafos Aula 22

Teoria dos Grafos Aula 22 Teoria dos Grafos Aula 22 Aula passada Aula de hoje Algoritmo de Ford- Aplicações do Fulkerson fluxo máximo Análise do Emparelhamento algoritmo Caminhos Melhorando distintos algoritmo inicial Corte mínimo

Leia mais

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os

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

CAL ( ) MIEIC/FEUP Estruturas de Dados ( )

CAL ( ) MIEIC/FEUP Estruturas de Dados ( ) Conjuntos Disjuntos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CPAL, 2010/2011 1 Conjuntos Disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura

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

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

Fluxo Máximo em Redes Letícia Rodrigues Bueno

Fluxo Máximo em Redes Letícia Rodrigues Bueno Fluxo Máximo em Rede Letícia Rodrigue Bueno UFABC Definição do Problema podemo interpretar um grafo orientado como um fluxo em rede e reponder pergunta obre fluxo de materiai; Conidere que: material percorre

Leia mais

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

GRAFOS E ALGORITMOS TEORIA DE GRAFOS GRAFOS E ALGORITMOS TEORIA DE GRAFOS 1a. PARTE Prof. Ronaldo R. Goldschmidt rribeiro@univercidade.br ronaldo_goldschmidt@yahoo.com.br ROTEIRO 1. INTRODUÇÃO E MOTIVAÇÃO 2. FUNDAMENTOS 3. CONECTIVIDADE 4.

Leia mais

Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio

Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas

Leia mais

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa Busca em largura 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 Exemplo de

Leia mais

Estruturas de dados para conjuntos disjuntos. Estruturas de Dados para Conjuntos Disjuntos. Estruturas de dados para conjuntos disjuntos

Estruturas de dados para conjuntos disjuntos. Estruturas de Dados para Conjuntos Disjuntos. Estruturas de dados para conjuntos disjuntos Estruturas de dados para conjuntos disjuntos Estruturas de Dados para Conjuntos Disjuntos Fernando Lobo Algoritmos e Estrutura de Dados II Também conhecido por UNION-FIND. Objectivo: Manter uma colecção

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

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 Metaheurística: São técnicas de soluções que gerenciam uma interação entre técnicas de busca local e as estratégias de nível superior para criar um processo de

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 11: Introdução aos Grafos Indução Finita Indução Finita é uma técnica para provar teoremas também usada no projecto de algoritmos. Suponha

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

Análise de Algoritmos

Análise de Algoritmos Algoritmos p. 1/22 Análise de Algoritmos Parte destes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 2/22 Árvore geradora mínima CLRS Cap 23 Algoritmos

Leia mais

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto Problema do Caminho Mais Curto " Podemos afectar pesos" aos arcos de um grafo, por exemplo, para representar uma distância entre cidades numa rede ferroviária: ria: Chicago 650 600 700 Toronto 200 New

Leia mais

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10 Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção

Leia mais

Planificação Anual. 0,5 Geometria no plano e no espaço II. 32 Avaliações escritas e respetivas correcções. 5 Auto-avaliação

Planificação Anual. 0,5 Geometria no plano e no espaço II. 32 Avaliações escritas e respetivas correcções. 5 Auto-avaliação 3º Período 2º Período 1º Período AGRUPAMENTO DE ESCOLAS DE CASTRO DAIRE Escola Secundária de Castro Daire Grupo de Recrutamento 500 MATEMÁTICA Ano lectivo 2012/2013 Planificação Anual Disciplina: Matemática

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

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

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

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos 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 Caminhos Mínimos

Leia mais

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA Doutorado em Ciência da Computação Algoritmos e Grafos Raimundo Macêdo LaSiD/DCC/UFBA Grafo Completo Grafo simples cujos vértices são dois a dois adjacentes. Usa-se a notação K n para um grafo completo

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

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

APOSTILA DE MÉTODO GULOSO

APOSTILA DE MÉTODO GULOSO Universidade do Estado de Minas Gerais Fundação Educacional de Ituiutaba Curso de Engenharia de Computação Análise de Algoritmos APOSTILA DE MÉTODO GULOSO Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br

Leia mais

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ Suponha que temos um grupo de pessoas (funcionário de uma empresa) que serão submetidos a um treinamento. Queremos identificar os grupos de

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

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também

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

Á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

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri Unidade VI Técnicas de Teste de Software Profa. Dra. Sandra Fabbri Os requisitos de teste são extraídos de uma implementação em particular Teste dos detalhes procedimentais A maioria dos critérios dessa

Leia mais

Melhores momentos AULA 12

Melhores momentos AULA 12 Melhores momentos AULA Calculando distâncias Problema: dados um digrafo G e um vértice s, determinar a distância de s aos demais vértices do digrafo Exemplo: para s = v 3 5 dist[v] 3 3 5 Busca em largura

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

Desenho de Segmentos de Recta

Desenho de Segmentos de Recta Desenho de Segmentos de Recta Sistemas Gráficos/ Computação Gráfica e Interfaces 1 Alg. para desenho de Segmentos de Recta - Motivação A maior parte das primitivas 2D, desenhadas centenas ou mesmo milhares

Leia mais