Teoria dos Grafos Aula 22

Documentos relacionados
Teoria dos Grafos Aula 24

Teoria dos Grafos Aula 23

Teoria dos Grafos Aula 17

Otimização em Grafos

Algoritmos de roteamento

Caminhos mínimos de todos os pares

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

Algoritmos e Estruturas de Dados II

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

Programação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

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

Programação Dinâmica. Prof. Anderson Almeida Ferreira

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

Algoritmos em Grafos: Caminho Mínimo

Redes de Computadores 2 Prof. Rodrigo da Rosa Righi - Aula 2

Problema do Caminho Mínimo

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

Teoria dos Grafos Aula 6

Sub-grafo. Árvore Geradora Mínima

Teoria dos Grafos Aula 8

Análise e Síntese de Algoritmos

Redes de Computadores III / /

Complexidade de Algoritmos

Universidade Federal de Alfenas

Redes de Computadores e a Internet

Teoria dos Grafos Aula 8

TP308 Introdução às Redes de Telecomunicações

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

Teoria dos Grafos Aula 14

CIC 110 Análise e Projeto de Algoritmos I

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

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

Teoria dos Grafos Aula 7

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Algoritmo baseado em vetor de distâncias

PCC173 - Otimização em Redes

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

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

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

Protocolos de Roteamento link-state

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

Grafos: caminhos mínimos

Algoritmo de Dijkstra Estudo e Implementação

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

Estruturas de Dados Grafos

Problemas de otimização

Teoria dos Grafos Aula 26

INF 1010 Estruturas de Dados Avançadas

Teoria dos Grafos Aula 5

Bacharelado em Informática TCP/IP TCP/IP TCP/IP TCP/IP. Encaminhamento e roteamento. Atualização de tabelas de rotas Sistemas autônomos

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Grafos Caminhos mais Curtos

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

Desafios de Programação TCC Turma A-1

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Teoria dos Grafos AULA

QUESTÕES DE PROVAS ANTIGAS

Redes de Computadores. Prof. MSc André Y. Kusumoto

Grafos Parte 1. Aleardo Manacero Jr.

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

Análise de Complexidade para algoritmos iterativos e recursivos

Redes de Computadores

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

Aula 20. Roteamento em Redes de Dados. Eytan Modiano MIT

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

Teoria dos Grafos Aula 3

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

Programação dinâmica

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

Algoritmos Distribuídos. AD Algoritmos Básicos 1

GRAFOS Aula 10 Fluxo em Redes Max Pereira

Algoritmo de Dijkstra

Algoritmos de Caminho Mínimo Parte 1

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

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

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

SCC Laboratório de Algoritmos Avançados. Multigrafos: Caminhos Mínimos. Multigrafos e Multidígrafos. Multigrafos e Multidígrafos

Processamento da Informação Números Aleatórios Matrizes parte 2

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Roteamento e Roteadores. Conceitos Diversos

# $ % & ' ( ) * ' ( ) *! " " Orientador +, -

Redes de Computadores. Prof. André Y. Kusumoto

Introdução. Introdução. Introdução. Distância euclidiana. Superfícies de custo

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

Teoria dos Grafos. Edson Prestes

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Teoria dos Grafos Aula 2

Árvore Binária de Busca Ótima

Árvore Geradora Mínima

% & ' ( serviços fornecidos pela camada de rede. roteamento na Internet. princípios de roteamento. funcionamento de um roteador. IPv6.

Acessibilidade e Fecho Transitivo de Grafos Dirigidos

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

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

= comprimento (distância, valor) da aresta orientada do vértice i ao vértice j,, e:

Transcrição:

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 Mínimo Dado grafo direcionado G, com pesos negativos e vértice qualquer t Problema: Calcular caminho mínimo e distância de todos os vértices de G até t 2 2 1 5-1 2 3-1 3 5 4-2 Ex. caminho mais curto até 5 Árvore geradora induzida

Algoritmo p/ Caminho Mínimo Abordagem via programação dinâmica caminho mínino entre um par de vértices Como definir a solução ótima? Custo do caminho mínimo (ótimo) P P = (v 1, v 2,..., t) Que variáveis usar para definir subproblemas? encontrar P através de soluções ótimas para subproblemas menores Vértice de origem v, número de arestas que podem ser usadas no caminho, i = 0,..., n-1

Solução Ótima OPT(v, i) : custo do caminho mínimo P entre v e t com no máximo i arestas Ex. t = 5 OPT(2, 1) =? OPT(2, 2) =? OPT(2, 3) =? OPT(3, 1) =? OPT(1, 1) =? OPT(1, 2) =? 2 2 1 5-1 2 3-1 3 5 4-2

Analisando Solução Ótima Maior comprimento possível (em arestas) do caminho mínimo P entre v e t? n-1 arestas (caminho simples) O que podemos dizer sobre o caminho mais curto P entre v e t? 1) Ou possui exatamente n-1 arestas 2) Ou possui menos arestas

Analisando Solução Ótima Se P possui menos do que n-1 arestas Custo da solução ótima com n-2 arestas será o mesmo OPT(n-1, v) = OPT(n-2, v) Se P possui exatamente n-1 arestas Custo da solução ótima será a menor entre todos os caminhos com n-2 arestas, com w sendo vértice inicial, vizinho de v OPT(n-1, v) = min w (OPT(n-2, w) + c vw )

Analisando Solução Ótima Graficamente 1 aresta c vw w n-2 arestas v t Qual vizinho w de v, P (com exatamente n- 2 arestas) irá ter? o de menor custo

Generalizando Supor P caminho ótimo de v para t com exatamente i arestas Caminho ótimo P é dado pelo mínimo entre os dois casos P possuir exatamente i arestas ou P possuir menos de i arestas OPT(i, v) = min ( OPT(i-1, v), min w (OPT(i-1, w) + c vw ) )

Algoritmo de Bellman-Ford Algoritmo para calcular OPT(n-1, *)? iterativo, não recursivo (mas utilizando recursão) Shortest Path(G, t) Array M[0,...,n 1 ; 1,...,n] M[0, v] = oo ; para todo v M[0, t] = 0; For i = 1,..., n 1 For v = 1,..., n M[i, v] = M[i 1, v]; Para cada vizinho w de v M[i, v] = min (M[i, v], M[i 1, w] + c vw ) Retorna M[n 1, *] M retorna distância

Complexidade Tempo de execução do algoritmo? Cada elemento da matriz M tempo proporcional ao grau do vértice Soma dos graus: O(m) Complexidade O(m n) se grafo for denso: O(n 3 ) Memória? Matriz M, O(n 2 )

Melhorias Práticas (1) Redução na quantidade de memória Manter vetor M[v], ao invés de matriz M não precisamos de caminhos com menos arestas (já vimos este truque) M[v] : custo do caminho mais curto entre v e t que conhecemos até agora Custo: O(m + n) pois precisamos representar o grafo

Melhorias Práticas (2) Redução no tempo de execução Atualizar M[v] apenas quando M[w] for atualizado no passo anterior Terminar algoritmo quando nenhum M[v] for atualizado Nada mais irá mudar! Não reduz complexidade de pior caso mas faz diferença prática, pois caminhos mais curtos tem muito menos do que n-1 arestas

Algoritmo de Roteamento Cada vértice é um roteador (ou uma rede) Arestas representam enlaces (links) entre roteadores (ou entre redes) Enlaces possuem custos (ex. tempo de propagação) Problema: cada roteador deve encontrar melhor rota para todos os outros roteadores da rede

Algoritmo de Roteamento Soluções? 1) Centralizada Cada roteador obtém visão global da rede (ex, todos roteadores, links e pesos) Executa Dijkstra (árvore geradora define para qual vizinho enviar) 2) Distribuída Cada roteador conhece apenas seus vizinhos Descobre caminho através dos vizinhos Como? Algoritmo anterior (Bellman-Ford)

Algoritmo de Roteamento Vetor M[] do algoritmo anterior está distribuído entre os roteadores cada roteador v é responsável por manter M[v] Ordem de execução do loop no algoritmo anterior não é importante Roteador v informa aos vizinhos sempre que M[v] diminuir vizinhos atualizam M[] e então informam aos seus vizinhos Opções de melhor caminho se propagam pela rede