Acessibilidade e Fecho Transitivo de Grafos Dirigidos

Documentos relacionados
MAC328 Algoritmos em grafos (4/6/2004) Caminhos mínimos

MAC328 Algoritmos em grafos (14/5/2004) Componentes fortemente conexos

Análise e Síntese de Algoritmos

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

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

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

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

Caminhos mínimos de todos os pares

Distâncias entre vértces em um grafo. Implementação sequencial

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

CIC 110 Análise e Projeto de Algoritmos I

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

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

Melhores momentos AULAS 1-8

Algoritmos em Grafos: Caminho Mínimo

Otimização em Grafos

Calculando distâncias

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

Complexidade de Algoritmos

Grafos tipo abstrato de dados

Representações de Grafos

AED Algoritmos e Estruturas de Dados LEEC /2007. Teoria de Grafos e Algoritmos em Grafos

Algoritmo de Kruskal. Algoritmo de Kruskal. Floresta geradora 26. Subfloresta S 20.3

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

Teoria dos Grafos Aula 22

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

Melhores momentos AULA 12

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

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

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

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

Na última aula... Procurando um caminho. Certificados. Procurando um caminho

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

Matemática para Ciência de Computadores

Na última aula... Algoritmos em Grafos 1º sem / 80

Teoria dos Grafos Aula 23

Implementação do TAD DiGrafo Ponderado usando Matriz de Adjacência. Profa. Dra. Denise Guliato FACOM - UFU

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

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados LEE 2013/14. Objecto abstracto Dois tipos de entidades. Vértices representam

Grafos - O que é um grafo? Algoritmos e Estruturas de Dados MEEC 2012/13. Objecto abstracto Dois tipos de entidades. Vértices representam

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

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

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Teoria dos Grafos Aula 24

Melhores momentos AULA 4

Na última aula... Procurando um caminho. Certicados. Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t

Na última aula... Algoritmos em Grafos 1º sem / 1

Fluxos em redes: o Problema do Fluxo máximo

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

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

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Algoritmos Distribuídos. AD Algoritmos Básicos 1

INF 1010 Estruturas de Dados Avançadas

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. Edson Prestes

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

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

QUESTÕES DE PROVAS ANTIGAS

Problema do Caminho Mínimo

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

Matemática para Ciência de Computadores

Melhores momentos AULA 15

Grafos: caminhos mínimos

Grafos Caminhos mais curtos

Visualização 2D: - Transformação window to viewport - Clipping

Melhores momentos AULA 14

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Melhores momentos AULA 4

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

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

Aula 08. Estruturas de dados Árvore e Grafo

Análise e Síntese de Algoritmos

Análise de Algoritmos Parte 4

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

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

Listas e matrizes esparsas. SCC122 Estruturas de Dados

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.

Melhores momentos AULA 5

Grafos Parte 1. Aleardo Manacero Jr.

Estruturas de Dados Grafos

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

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

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

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

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

AULA 4. Procurando um caminho. Melhores momentos. Certicados. Certicado de inexistência

Lista de Exercícios de CES-11 CTA - ITA - IEC

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

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Campus Pato Branco ENGENHARIA DE COMPUTAÇÃO. Prova Parcial 1 Matemática Discreta para Computação

Grafos Orientados (digrafos)

Algoritimos e Estruturas de Dados III CIC210

Desafios de Programação TCC Turma A-1

Aula 09. Percurso em grafo

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

Grafos - Representação

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

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Introdução aos Algoritmos e Estruturas de Dados. 2 o Teste - A

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

Teoria dos Grafos Aula 3

Transcrição:

1 Acessibilidade e Fecho Transitivo de Grafos Dirigidos 1. Fecho transitivo 2. Multiplicação de matrizes booleanas 3. Algoritmo de Warshall 4. Equivalência em termos de complexidade computacional com o produto de matrizes booleanas 5. Fecho através de busca em profundidade (grafos esparsos)

2 Multiplicação de matrizes for (s = 0; s < V; s++) for (t = 0; t < V; t++) for (i = 0, C[s][t] = 0; i < V; i++) C[s][t] += A[s][i]*B[i][t];

3 Multiplicação de matrizes booleanas for (s = 0; s < V; s++) for (t = 0; t < V; t++) for (i = 0, C[s][t] = 0; i < V; i++) if (A[s][i] && B[i][t]) C[s][t] = 1;

4 Cômputo do quadrado de matrizes booleanas for (s = 0; s < V; s++) for (t = 0; t < V; t++) for (i = 0, C[s][t] = 0; i < V; i++) if (A[s][i] && A[i][t]) C[s][t] = 1; Conseqüência: podemos calcular o fecho transitivo em tempo O(n 3 log n)! [Calcule A 2, A 4, A 8, A 16,... ]

5 Algoritmo de Warshall para o fecho transitivo for (i = 0; i < V; i++) for (s = 0; s < V; s++) for (t = 0; t < V; t++) if (A[s][i] && A[i][t]) A[s][t] = 1;

6 Algoritmo de Warshall para o fecho transitivo Propriedade 1 (Propriedade 19.7). O fecho transitivo de um grafo dirigido com n vértices pode ser computado em tempo O(n 3 ) pelo algoritmo de Warshall. Prova. Asserção a ser provada por indução em i: após a i-ésima iteração do laço do i, a entrada A[s][t] é 1 se e só se existe um caminho de s a t cujos vértices internos pertencem a {0,..., i}. (Base: i = 1)

7 Algoritmo de Warshall para o fecho transitivo (variante) for (i = 0; i < V; i++) for (s = 0; s < V; s++) if (A[s][i]) for (t = 0; t < V; t++) if (A[i][t]) A[s][t] = 1;

8 Programa 19.3: Algoritmo de Warshall void GRAPHtc(Graph G) { int i, s, t; G->tc = MATRIXint(G->V, G->V, 0); for (s = 0; s < G->V; s++) for (t = 0; t < G->V; t++) G->tc[s][t] = G->adj[s][t]; for (s = 0; s < G->V; s++) G->tc[s][s] = 1; for (i = 0; i < G->V; i++) for (s = 0; s < G->V; s++) if (G->tc[s][i] == 1) for (t = 0; t < G->V; t++) if (G->tc[i][t] == 1) G->tc[s][t] = 1; } int GRAPHreach(Graph G, int s, int t) { return G->tc[s][t]; }

9 Algoritmo de Warshall, complexidade Propriedade 2 (Propriedade 19.8). Podemos implementar um teste de acessibilidade de tempo constante em grafos dirigidos com n vértices usando espaço adicional O(n 2 ) e tempo de pre-processamento O(n 3 ).

10 Digressão: equivalência entre fecho transitivo e produto de matrizes booleanas Propriedade 3 (Propriedade 19.9). Podemos calcular o produto AB de duas matrizes booleanas n n em tempo O(T n ), onde T n é o tempo necessário para se calcular o fecho transitivo de um grafo dirigido com n vértices. Proof. A e B: duas matrizes booleanas n n. Pomos M = I A 0 0 I B 0 0 I.

11 Digressão: equivalência entre fecho transitivo e produto de matrizes booleanas (cont.) Observamos que M 2 = I A AB 0 I B. (1) 0 0 I Ademais, observamos que a matriz N no lado direito de (??) acima é tal que MN = N.

12 Algoritmo de Floyd para distâncias (versão primitiva) for (i = 0; i < V; i++) for (s = 0; s < V; s++) for (t = 0; t < V; t++) if (A[s][i] + A[i][t] < A[s][t]) A[s][t] = A[s][i] + A[i][t];

13 Cômputo do fecho transitivo com BeP void TCdfsR(Graph G, Edge e) { link t; G->tc[e.v][e.w] = 1; for (t = G->adj[e.w]; t!= NULL; t = t->next) if (G->tc[e.v][t->v] == 0) TCdfsR(G, EDGE(e.v, t->v)); } void GRAPHtc(Graph G, Edge e) { int v, w; G->tc = MATRIXint(G->V, G->V, 0); for (v = 0; v < G->V; v++) TCdfsR(G, EDGE(v, v)); } int GRAPHreach(Graph G, int s, int t) { return G->tc[s][t]; }

14 Cômputo do fecho transitivo com BeP Propriedade 4 (Propriedade 19.10). Podemos implementar um teste de acessibilidade de tempo constante em grafos dirigidos com n vértices e m arcos usando espaço adicional O(n 2 ) e tempo de pre-processamento O(n(m + n)).

15 Análise empírica de desempenho Esparso (10n arcos) Denso (250 vértices) -------------------------------------------------------- n W W* A L m W W* A L -------------------------------------------------------- 25 0 0 1 0 5000 289 203 177 23 50 3 1 2 1 10000 300 214 184 38 125 35 24 23 4 25000 309 226 200 97 250 275 181 178 13 50000 315 232 218 337 500 2222 1438 1481 54 100000 326 246 235 784 -------------------------------------------------------- W Warshall W* Warshall (variante) A BeP, matrizes de adjacência L BeP, listas de adjacência