Grafos: caminhos (matriz adjacência)

Documentos relacionados
Grafos: caminhos mínimos

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

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

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

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

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

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

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

Circuitos Hamiltorianos

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos AULA

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

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.

Cap. 2 Conceitos Básicos em Teoria dos Grafos

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

Árvores: Conceitos Básicos e Árvore Geradora

SCC603 Algoritmos e Estruturas de Dados II Prof.a Rosane Minghim 1o sem. 2013

Introdução à Teoria dos Grafos. Isomorfismo

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

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Sub-grafo. Árvore Geradora Mínima

Grafos e Algoritmos Raimundo Macêdo. Teorema de Hall (Prova por Indução)

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

GRAFOS Aula 03 Representações de Grafos Max Pereira

GRAFOS E DIGRAFOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

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

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

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

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

Teoria dos Grafos. Edson Prestes

INF 1010 Estruturas de Dados Avançadas

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

Capítulo 1. Aula Conectividade Caminhos

Teoria dos Grafos Aula 5

Teoria dos Grafos. Edson Prestes

Combinando relações. Exemplo Seja A = {1, 2, 3} e B = {1, 2, 3, 4}. As relações

Aula 14. Aula de hoje. Aula passada

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

Problemas de Fluxo em Redes

Algoritmo de Dijkstra

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

Matemática para Ciência de Computadores

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

TEORIA DOS GRAFOS UMA APLICAÇÃO DE LOGÍSTICA PARA O ENSINO MÉDIO. Profº M. Sc. Marcelo Mazetto Moala

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

Estruturas de Dados Grafos

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

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

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

15 - Coloração Considere cada um dos grafos abaixo:

Teoria dos Grafos. Edson Prestes

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

Matemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação

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

Grafos tipo abstrato de dados

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

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

GRAFOS Conceitos Básicos (Parte 1)

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

Otimização em Grafos

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

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Redes Complexas Aula 2

Teoria dos Grafos. Caminho mínimo - Algoritmo de Dijskstra

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

Caminhos mínimos de todos os pares

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

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

Otimização em Grafos

Teoria dos Grafos Aula 2

Teoria dos Grafos. Fluxo Máximo em Redes

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

Teoria dos Grafos. Edson Prestes

O Teorema da Amizade

Teoria dos Grafos. Edson Prestes

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

Hewlett-Packard DETERMINANTE. Aulas 01 a 05. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz

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

Códigos Corretores de Erros e Cliques de Grafos

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

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

Análise e Síntese de Algoritmos

Hewlett-Packard DETERMINANTE. Aulas 01 a 05. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz

Aula 5 - Produto Vetorial

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

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

Grafos: caminhos mínimos

Análise de Algoritmos. Slides de Paulo Feofiloff

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

Interpolação polinomial: Diferenças divididas de Newton

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

Poliedros na forma padrão

Teoria dos Grafos. Coloração de Vértices

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

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

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

Transcrição:

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 Caso ele receba um mapa das estradas de rodagem do Brasil, no qual a distância entre cada par adjacente de cidades está exposta, como poderíamos determinar uma rota mais curta entre as cidades desejadas? Uma maneira possível é enumerar todas as rotas possíveis que levam de uma cidade à outra, e então selecionar a menor 2

Caminhos mínimos O problema do caminho mínimo consiste em determinar um menor caminho entre um vértice de origem u e um vértice de destino v Qual o menor caminho entre s e y? u s 2 5 x 6 1 4 6 v 2 7 y

Caminhos mínimos Possíveis caminhos simples u 6 v 9 s 0 2 1 4 2 7 5 x 6 5 11 y 4

Caminhos mínimos Possíveis caminhos simples u 6 v 9 s 0 2 1 4 2 7 5 x 6 5 11 y 5

Caminhos mínimos Possíveis caminhos simples u 6 v 9 s 0 2 1 4 2 7 5 x 6 5 11 y Além de outros com ciclos... 6

Caminho mínimo Duas abordagens para caminho mínimo Se grafo não valorado (assume-se que cada aresta tem peso 1), busca em largura é uma boa opção o caminho mínimo coincide com o caminho mais curto Se grafo valorado, outros algoritmos são necessários 7

Caminho mínimo Grafo dirigido G(V,E) com função peso w: E R que mapeia as arestas em pesos Peso (custo) do caminho p = <v 0, v 1,..., v k > w( p) = k i= 1 w( v i 1, v i ) Caminho de menor peso entre u e v: δ ( u, v) p = min{ w( p) : u v} se rota cc de u p / v 8

Caminho mínimo Caminho mínimo entre os vértices u e v definido como qualquer rota p com um peso w(p) = δ(u,v) Atenção especial com ciclos e pesos negativos 9

Caminho mínimo Qual o caminho mínimo entre s e v? s 5-2 u x 1 6 4 6 v 2 7 y 10

Caminho mínimo Qual o caminho mínimo entre s e v? s 5-2 u x 1 6 4 6 v 2 7 y 11

Caminho mínimo Se há um ciclo positivo no caminho, ele não faz parte do caminho mínimo Por quê? 12

Algoritmos para Dígrafos representados em Matrizes de Adjacência Perguntas possíveis de se responder para um dígrafo com n vértices e m arestas: P1: Existe caminho de v i a v j? (valorados ou não) P2: Qual o número de caminhos de comprimento k de v i a v j? (não valorados) P: Qual é o comprimento do caminho mínimo de v i a v j? (valorados) P4: Qual é o custo do caminho mínimo de v i a v j? (valorados) P5: Qual é o caminho mínimo (menor custo) de v i a v j? (valorados) 1

Matriz Caminho - P Def.: A Matriz Caminho, P, de um dígrafo D(V,A) é definida como: p ij = 1 um caminho de v i para v j p ij = 0, c.c. Ex. 1 2 X: Matriz Adjacência P: Matriz Caminho 4 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Obs.: p ii = 1 um ciclo a partir de v i 14

Precisamos então de um algoritmo para calcular P, a partir de X, para então responder à pergunta: P1: Existe caminho de v i a v j? (valorados ou não) (adiante...) 15

Teorema Seja X a matriz adjacência de D, e seja Y=X h. Então y ij é o número total de sequências distintas (v i,..),...(..,v j ) que Possuem comprimento h Correspondem a caminhos em D Exercício: provar por indução sobre h 16

No exemplo anterior 1 2 X: Matriz Adjacência 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 4 0 0 1 0 0 0 0 1 X 2 X 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 X 4 = X 2 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 X 5 = X 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 17

Corolário 1: Se X h = Matriz Nula, para algum h n, então D é acíclico. Verifique para o exemplo (n = ): 1 2 18

Já temos então um algoritmo que calcula X h, de ordem n, para responder à pergunta: P2: Qual o número de caminhos de comprimento k de v i a v j? (não valorados) 19

Corolário 2: Se X é matriz adjacência de D e Q = X + X 2 + X +... + X n, então a matriz caminho P é tal que Repare que: p ij = 1 q ij 0 q ij é a quantidade de caminhos possíveis de v i a v j, de comprimentos n (pode haver mais, sse D for cíclico) Pelo Corolário 1, se há caminho de v i a v j, ele aparecerá até a potência n de X 20

Exemplo X X 2 X 1 2 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 Q P 0 2 1 0 1 2 0 2 1 0 1 1 0 1 1 0 1 1 21

O Corolário 2 nos dá um algoritmo para calcular a matriz caminho P a partir de X, mas ele é muito caro, visto que envolve muitos produtos de matrizes. Para torná-lo mais eficiente, usamos operações booleanas and e or no lugar de multiplicação e soma, e redefinimos X k e Q, a partir de X, com valores booleanos 0 e 1. 22

X k : x k ij = n (x k-1 ik x kj ) ; 1 i,j n k=1 Q : q ij = x ij x 2 ij... x n ij Mas então Q é a própria matriz P desejada! Então P = X + X 2 + X +... + X n, onde X k = X k-1 X 2

Algoritmo de Roy-Warshall (RW) Calcula P, a matriz caminho de D, a partir de sua matriz adjacência, X. Algoritmo: Dada X nxn, matriz adjacência de D(V,A) Início Faça P = X; para j = 1 até n faça para i = 1 até n faça se p ij = 1 /*se já há caminho de i a j*/ então para k = 1 até n faça p ik = p ik p jk /*então haverá de i a k se houver de j a k */ Fim 24

Exemplo X 1 2 0 1 0 0 0 1 0 1 0 Então P1 (Existe caminho de v i a v j? ) já pode ser respondida 25

Para dígrafos valorados: calculando o caminho mínimo entre 2 vértices Neste caso, X, a matriz adjacência, tem os valores 1 substituídos pelos respectivos pesos. Seja MC, a Matriz dos custos dos caminhos mínimos, tal que: δ ( u, v) MC ij = δ(i,j) p = min{ w( p) : u v} se rota cc de u p / v Ou seja, MC ij é o custo do caminho mínimo entre i e j. Estratégia: Trocar 0 por e 1 pelo peso, em X 26

Algoritmo de Floyd-Warshall(FW) Dada X de D, cria MC, a matriz dos custos dos caminhos mínimos Início faça MC = X para j = 1 até n faça para i = 1 até n faça se MC ij então /*se há caminho de custo MCij de i a j*/ para k = 1 até n faça MC ik = min (MC ik, MC ij + MC jk )/*então o custo min. de i a k é o mínimo entre o caminho direto de i a k e a soma de i a j e de j a k*/ Fim 27

Exemplo 1 4 2 2 6 X = MC 1 4 2 6 MC (,4+2) (4, ) (,4+6) 6 4 2 6 5 (,2+4) (2, ) (6,2+) E assim RF responde P4: Qual é o custo do caminho mínimo de v i a v j? (valorados) 28

Consequência O que acontece se, no algoritmo FW, todo peso for =1? MC ij é o comprimento do menor caminho entre v i e v j Assim, RF também responde: P: Qual é o comprimento do caminho mínimo de v i a v j? (valorados) 29

Queremos mais Além do custo do caminho mínimo, e do seu comprimento, queremos o próprio caminho, ou seja, a sequência de vértices que o compõe Basta uma pequena alteração no algoritmo FW: Calcula-se simultaneamente a MC, uma matriz M, de igual dimensão de X. 0

Cálculo do caminho mínimo No início: M ik = k, se X ik M ik = 0, se X ik = Ou seja, no início, M ik representa o vértice onde incide a aresta que parte de v i (0 indica inexistência de aresta) A ideia é alterar os valores de M sempre que um caminho alternativo é calculado (i.e. quando o custo mínimo é alterado), de forma que no final, M ik contém o rótulo do próximo vértice do caminho mínimo de v i a v k 1

Cálculo do caminho mínimo P.ex. Se (v i, v t, v u,., v k ) é o cam. mínimo de v i a v k, então M ik = t Mas o restante do caminho é facilmente recuperado, uma vez que M tk tem o próximo vértice do caminho: v u E assim por diante 2

Algoritmo FW com especificação de caminho FW+ Dada X, cria MC e M Início faça MC = X inicialize M conforme a definição* para j = 1 até n faça Fim para i = 1 até n faça se MC ij então para k = 1 até n faça se Mc ik > MC ij + MC jk então {MC ik = MC ij + MC jk ; M ik = M ij } * Slide 1

Calculando M para o exemplo anterior 1 4 2 2 6 X 4 2 6 M 1 0 2 1 0 0 0 0 M 2 2 1 1 1 0 0 0 4

Calculando M para o exemplo anterior 1 4 2 2 6 MC 6 4 2 6 5 M 2 2 1 1 1 0 0 0 Leitura das Matrizes M e MC: - o c.m. de v1 a v1 é (v1,v2,v1) com custo 6 - o c.m. de v1 a v2 é (v1,v2) com custo 4 - o c.m. de v1 a v é (v1,v) com custo - o c.m. de v2 a v1 é (v2,v1) com custo 2 - o c.m. de v2 a v2 é (v2,v1,v2) com custo 6 - o c.m. de v2 a v é (v2,v1,v) com custo 5 - Não existem caminhos a partir de v 5

Concluindo E finalmente FW+ responde também P5: Qual é o caminho mínimo (menor custo) de v i a v j? (valorados) Repare que, ao usar os algoritmos sobre a Matriz de Adjacência, temos as respostas simultaneamente para todo par de vértices (i,j), a um custo de O(n ) A seguir, veremos algoritmos sobre Listas de Adjacências, que respondem às perguntas, dados (i,j) específicos. 6

Exercícios Programe os algoritmos vistos usando o TAD Matriz de Adjacência 7