10/10/2011. TGR BCC O problema do Caminho mínimo. Prof. Ricardo José Pfitscher. Cronograma. O problema do caminho mínimo Algoritmo de Dijkstra

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

INF 1010 Estruturas de Dados Avançadas

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

Estruturas de Dados Grafos

INF 1010 Estruturas de Dados Avançadas

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

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

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

Árvore Geradora Mínima

Teoria dos Grafos Aula 22

Teoria dos Grafos Aula 24

Teoria dos Grafos Aula 6

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

MÓDULO 2 - OTIMIZAÇÃO DE REDES

Grafos aula 3. Relembrando... Rede de eventos e atividades. Rede de eventos e atividades

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

Grafos Parte 1. Aleardo Manacero Jr.

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

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

GRAFOS Aula 03 Representações de Grafos Max Pereira

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

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

Investigação Operacional

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

Problemas de Optimização em redes

Departamento de Engenharia de Produção UFPR 57

Teoria dos Grafos Aula 2

Árvores. Listas e árvores. Árvores. Árvores. Árvores. Árvores 03/11/2011. Listas lineares

Otimização. Otimização em Redes. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2

Problemas de Fluxo em Redes

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Teoria dos Grafos. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. agosto

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

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Teoria dos Grafos Aula 1 - Introdução

Teoria dos Grafos. Edson Prestes

Grafos: aplicações. Grafos: árvore geradora mínima

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

Grafos: caminhos mínimos

Problema. Quantas cores são necessárias para pintar este mapa? Número. Cromático. Estruturas de Dados - Grafos. Problema. Problema

Facebook. Um grafo é uma rede. Estrutura de dados fundamental em Informática, tal como listas e árvores.

5COP096 TeoriadaComputação

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

grafo nós vértices arcos arestas

Pesquisa Operacional. Teoria dos Grafos

Introdução à Teoria dos Grafos

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

IPRJ PROJETO E ANÁLISE DE ALGORITMOS LISTA DE EXERCÍCIOS 10

Otimização em Grafos

Árvores: Conceitos Básicos e Árvore Geradora

Algoritmo de Dijkstra

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

Grafos - Motivação. Grafos - Motivação. Algoritmos e Estruturas de Dados II Introdução a Grafos

BCC204 - Teoria dos Grafos

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

Problema do Caminho Mínimo

Teoria dos Grafos Aula 3

Otimização em Grafos

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Universidade Federal de Alfenas

Grafos: caminhos (matriz adjacência)

Prof. Marco Antonio M. Carvalho

Teoria dos Grafos. Árvores Geradoras

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

Desafios de Programação TCC Turma A-1

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

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

Módulo 2 OTIMIZAÇÃO DE REDES

Matemática Discreta 10

Sub-grafo. Árvore Geradora Mínima

Algoritmos e Estruturas de Dados II

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

Teoria dos Grafos Aula 7

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

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

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

Caminho mais curto e o algoritmo de Dijkstra

Prof. Marco Antonio M. Carvalho

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

2 Definição do Problema

Alg l ori r t i m t os e E str t u r tu t ra r s d e D ados I I Intr t o r duçã ç o ã a a Gr G a r f a o f s P of o a. M. C r C ist s ina n a /

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

Algoritmos e Estruturas de Dados II Introdução a Grafos. Divisão do arquivo

ALGORITMO DE DIJKSTRA

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

Introdução à Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos

EXERCÍCIOS RESOLVIDOS DE TEORIA DOS GRAFOS - LISTA II. a) SOLUÇÃO

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO

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

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

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

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

Projeto e Análise de Algoritmos

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: componentes fortemente conexos, árvores geradoras mínimas

Transcrição:

TGR O problema do aminho mínimo Prof. Ricardo José Pfitscher ronograma O problema do caminho mínimo lgoritmo de ijkstra 1

O problema m um grafo simples, ponderado e conexo, com pesos positivos. Vimos com a matriz de alcançabilidade que existe um caminho entre quaisquer vértices x e y. Podem haver vários caminhos. omo encontrar o caminho com menor peso? Pesos normalmente representam distâncias, então denominou-se aminho mínimo O Problema ado o grafo: omo encontrar o menor caminho entre duas cidades? 2

O Problema m um grafo pequeno é uma tarefa simples, pode até ser resolvido de forma visual. em um grafo complexo? lgoritmos lguma idéia para resolvermos o problema? 3

lgoritmo de ijkstra Quem foi dsger ijkstra? Primeiro programador nos países baixos Primeiro compilador para LGOL 60 Introduziu o conceito de pilha na tradução de programas recursivos m 1972, recebeu o prêmio turing ontribuições Problema do caminho mínimo Sistema operacional TH Semáforos (coordenação de múltiplos processadores e programas) uto-estabilização, deadlock rvores de xtensão mínima lgoritmo de ijkstra apaz de encontrar o menor caminho entre dois vértices lgoritmo completo Se existe um menor caminho o algoritmo encontra Ótimo e ficiente Não há caminho menor que o encontrado Ressalva: Não consegue lidar com caminhos de pesos negativos 4

lgoritmo de ijkstra Funcionamento: Quer se saber a distância entre xe y Utiliza-se um conjunto IN, que contém inicialmente x IN contém os vértices para os quais já foram determinados os menores caminhos a partir de x Para cada vértice zfora de IN, mantemos a menor distância d[z]entre xe z, usando caminhos onde o único vértice que não esteja em IN seja z rmazenamos o vértice adjacente a z neste caminho s[z] lgoritmo de ijkstra Funcionamento omo fazer com que IN cresça? Qual o vértice deve ser adicionado a seguir? scolhemos o vértice fora de IN com menor distância d epois de escolhido, chamaremos ele de p, em IN Recalcular d para todos os vértices restantes fora de IN, pois pode haver um caminho menor a partir de x passando por p do que aqueles antes de termos p Se houver caminho mais curto, devemos atualizar s[z] de forma a indicar que p é o vértice adjacente a z pelo novo caminho mais curto.

Funcionamento lgoritmo de ijkstra Quando y for incluído em IN, este para de receber novos elementos. O Valor corrente de d[y]é a distância do menor caminho. seus vértices podem ser obtidos examinando: y, s[y] e s[s[y]], até que tenhamos voltado a x lgoritmo de ijkstra Fácil?? Simplificando: Para cada vértice fora de IN, a distancia d[v] é comparada com a distancia até ele percorrida pelo menor caminho já encontrado IN = v, v,..., v } IN = {..., v,...} i { 1 2 i se segundo marca s[ v ] com v p d[ v ] = min{ d[ v ], d[ v ] + valorresta[ v, v ]} i O menor caminho é: final, s[final], s[s[final]]],... i p p p i 6

lgoritmo de ijkstra IN = IN = {..., v,...} i { 1 2 v, v,..., v } i se segundo marca s[ v ] com v p d[ v ] = min{ d[ v ], d[ v ] + valorresta[ v, v ]} i i p p p i lgoritmo de ijkstra xercício: fazer na mão: Jaragua riciuma Garuva Massaranduba 7

lgoritmo de ijkstra - xercícios ) Menor caminho de para ) Menor caminho de para, considerando o número de saltos apenas lgoritmo de ijkstra - xercícios 8

Implementação Implementar o algoritmo de ijkstra O usuário deve entrar com: Tamanho da Matriz Matriz de adjacências Origem e destino O programa deve apontar: Qual o menor caminho para o destino Qual o custo deste menor caminho Restrição: Não usar listas ica: Utilize Vij para representar um vértice, onde i é linha e j é coluna lgoritmo de ellman-ford 9

lgoritmo de ellman-ford Uma alternativa para busca de caminho mínimo Vantagem: Pode ser utilizado em arestas com peso negativo em utilizado em grafos orientados lgoritmo de ellman-ford usca de caminho mínimo a partir de uma origem até todos os outros vértices do grafo m dijkstra a busca era de 1 para 1 Também denominado de Vetor de distância

lgoritmo de ellman-ford Princípio de Funcionamento: usca pelo número de saltos Procura todas as distâncias para os destinos com 1 salto Procura todas as distâncias para os destinos com 2 saltos té o máximo de n-1 saltos, onde n é o número de vértices Se existe um caminho não pode ser maior que n-1 lgoritmo de ellman-ford plicação: mplamente utilizado em roteadores Os roteadores mantém uma tabela atualizada com a menor distância conhecida até um destino, e qual caminho deve ser utilizado para se chegar lá. 11

lgoritmo de ellman-ford Roteadores lgoritmo de ellman-ford tualizando as tabelas de roteamento 12

lgoritmo de ellman-ford Utilizando o algoritmo onsiderar o grafo abaixo lgoritmo de ellman-ford laborando a tabela Saltos F G 1 X INF 2, 0,, INF INF 2 X 6, 1, 11, 1, 3, 12, 3 X 6,F 12, 11, 4, 9, 4,F 4 X,G 17, 11, 6,G 8,G, X 7,G 17,F 7, 9, 7,G 9, 6 X,F 17,F, 11,, 12,F 13

lgoritmo de ellman-ford om base na tabela, encontrar menor caminho de para Saltos F G 1 X INF 2, 0,, INF INF 2 X 6, 1, 11, 1, 3, 12, 3 X 6,F 12, 11, 4, 9, 4,F 4 X,G 17, 11, 6,G 8,G, X 7,G 17,F 7, 9, 7,G 9, usto do caminho: aminho: --F-G- 6 X,F 17,F, 11,, 12,F lgoritmo de ellman-ford --F-G- usto 14

xercícios procedure OutroaminhoMínimo{: matriz n X n; x: vértice; var d: vetor de inteiros; var s: vetor de vértices}; { lgoritmo de ellman-ford é uma matriz de adjacências modificada para um grafo simples, ponderado e conexo; x é um vértice no grafo; quando o procedimento termina, os vértices no caminho mínimo de x a y são y, s[y], s[s[y]],..., x; a distância deste caminho é d[y].} var z,p: vértice; {vértices temporários} t: vetor de inteiros; ontinua... 1

begin {inicia os vetores d e s estabelece os caminhos mínimos de comprimento 1 a partir de x } d[x]:=0; for todos os vértices z diferentes de x do begin d[z] := [x, z]; s[z]:=x; end; {encontra os caminhos mínimos de comprimentos 2, 3, etc.} for i: = 2 to n 1 do begin t := d; {copia o vetor d corrente em t} {altera t a fim de guardar os menores caminhos de comprimento i} for todos os vértices z diferentes de x do begin {encontra o caminho mínimo com uma aresta a mais} p : = vértice em G para o qual (d[p] + [p, z]) é mínimo t[z]:=d[p] +[p,z]; if not (p = z) then s[z] := p; end; d := t; {copia t de volta para d} end; {laço for} end; GM rvore Geradora Mínima 16

Problema Um dos problemas mais encontrados em relação ao projeto de redes é conectar todos os vértices de forma eficiente (computadores, telefones, etc) GM fornece uma solução econômica, que precise de pouco cabo, pouca tubulação, ou pouca quantidade de qualquer que seja o meio de conexão onceito árvore geradora mínima de um grafo não direcionado G=(V,) é um subgrafot =(V, ) de G T é conectado, sem ciclos com V =V cada aresta (i,j) em é associado um peso (i,j) Grafo Ponderado efinição formal: Uma árvore geradora de um grafo é uma árvore nãoenraizada cujo o conjunto de vértices coincide com o conjunto de vértices do grafo e cujas arestas são algumas das arestas do grafo 17

xemplo Para o grafo abaixo, qual seria a GM? 20 20 1 lgoritmos para encontrar a GM Veremos dois lgoritmos para encontrar a GM que tenha peso mínimo: lgoritmo de PRIM lgoritmo de KRUSKL omo detectar os ciclos? Para todos os nós do grafo executar (L é uma lista de nós): 1. L=[ ], todos os nós do grafo são desmarcados 2. Insira o nó atual em Le verifique se aparece duas vezes, se sim, o grafo tem um ciclo, e o algoritmo termina 3. che um arco desmarcado saindo do nó corrente i. Se houver, marque o arco e visite o nó, voltando ao passo 2 ii. Se não houver, retire o nó corrente de L e retorne ao nó anterior, voltando ao passo 3 i. Se for o primeiro, o algoritmo termina, e não há ciclos. 18

lgoritmo de PRIM IN: conjunto de vértices; //contém inicialmente vértice arbitrário z: vértice; //vértices a serem testados d: vetor de inteiros; //menor distância d[z] entre z e qualquer vértice em IN S: vetor de vértices; //vértices testados a cada interação início{ //escolhe vértice inicial arbitrário IN= {x} for todos os vértices z que não pertençam a IN { //avalia menor distância d[z] entre z e qualquer vértice em IN // Se não formar ciclo IN=z; //IN recebe novo vértice que não está em IN e cuja distância seja mínima S= {x,z}; } } //O algoritmo se encerra quando todos os vértices forem incluídos em IN formando uma árvore conexa e acíclica. lgoritmo de PRIM xemplo 20 20 1 IN: {}; S={{,}} 19

lgoritmo de PRIM xemplo 20 20 1 IN: {,}; S={{,},{,}} lgoritmo de PRIM xemplo 20 20 1 IN: {,,}; S={{,},{,},{,}} 20

lgoritmo de PRIM xemplo 20 20 1 IN: {,,,}; S={{,},{,},{,},{,}} lgoritmo de PRIM xemplo 20 20 1 IN: {,,,,}; S={{,},{,},{,},{,}} 21

lgoritmo de KRUSKL Inclui arestas na ordem de suas distâncias crescentes, sempre que elas puderem pertencer ao grafo mpates são resolvidos arbitrariamente; Restrição: Uma aresta não será incluída se sua inclusão resultar em um ciclo O algoritmo termina quando todos os grafos tiverem sido incorporados em uma estrutura conexa lgoritmo de KRUSKL Outro GM (: matriz nxn, T:coleção de arestas){ //lgoritmo de Kruskal para obtenção de uma GM //T inicialmente está vazia; ao fim, T=GM inicio { ordena as arestas de G de forma crescente; do{ if(próxima aresta na ordem não cria um ciclo) inclui a aresta em T; }while(t é conexo e contém todos os vértices de G) } 22

lgoritmo de KRUSKL xemplo 20 Ordem das arestas: (,) = (,) = (,) = (,) = (,) = 1 (,) = 20 (,) = 20 20 1 lgoritmo de KRUSKL xemplo Ordem das arestas: (,) = (,) = (,) = (,) = (,) = 1 (,) = 20 (,) = 20 GM: {},{},{},{},{} 23

lgoritmo de KRUSKL xemplo esempilha (,) Ordem das arestas: (,) = (,) = (,) = (,) = (,) = 1 (,) = 20 (,) = 20 GM: {},{},{},{},{} lgoritmo de KRUSKL xemplo Ordem das arestas: (,) = (,) = (,) = (,) = 1 (,) = 20 (,) = 20 esempilha (,) esempilha (,) GM: {},{,},{},{} 24

lgoritmo de KRUSKL xemplo Ordem das arestas: (,) = (,) = (,) = 1 (,) = 20 (,) = 20 esempilha (,) esempilha (,) esempilha (,) GM: {},{,},{,},{} lgoritmo de KRUSKL xemplo Ordem das arestas: (,) = (,) = 1 (,) = 20 (,) = 20 esempilha (,) esempilha (,) esempilha (,) esempilha (,) GM: {,},{,},{,},{} 2

lgoritmo de KRUSKL xemplo Ordem das arestas: (,) = 1 (,) = 20 (,) = 20 esempilha (,) esempilha (,) esempilha (,) esempilha (,) Obs: aso tivéssemos um ciclo, não iria desempilhar GM: {,},{,},{,},{,} PSO = 30 onclusões Utilização da árvore geradora mínima: Otimização de redes Telecomunicações onstrução de estradas Problema de escalonamento de tarefas 26

xercício: Rede óptica entre Tabas Os caciques da região de Tutuaçu pretendem integrar suas tribos à chamada aldeia global. primeira providência foi a distribuição de telefones celulares a todos os pajés. gora, planejam montar uma rede de fibra ótica interligando todas as tabas. sta empreitada requer que sejam abertas novas picadas na mata, passando por reservas de flora e fauna. onscientes da necessidade de preservar o máximo possível o meio ambiente, os caciques encomendaram um estudo do impacto ambiental do projeto. xercício: Rede óptica entre Tabas onsiderações: Os caciques conseguiram as informações do impacto ambiental causado pela construção dos ramos lguns ramos não foram considerados no estudo pois sua construção é impossível 6 13 6 12 1 27

xercício: Rede óptica entre Tabas Problema: omo determinar quais ramos devem ser construídos, possibilitando a comunicação entre todas as tabas e causando menor impacto ambiental Solução, gerar a GM: Utilize os dois algoritmos 6 13 6 12 1 xercício: Rede óptica entre Tabas Solução: plicando os conceitos, e os algoritmos devemos chegar no grafo abaixo Indicando quais ramos devem ser construídos 6 6 12 28

ibliografia GRSTING, Judith L. Fundamentos Matemáticos para a iência da omputação. Rio de Janeiro. 3ª d. omplementar: Outras aulas disponíveis na web 29