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

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

Árvores Árvores Geradoras de Custo Mínimo 0/16

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

1 Trajeto Euleriano. > Trajeto Euleriano 0/20

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

Teoria dos Grafos Aula 8

Matemática Discreta 10

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

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

Melhores momentos AULAS 1-8

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

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

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

Árvores: Conceitos Básicos e Árvore Geradora

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

Busca em Profundidade e em Largura

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

Teoria dos Grafos Aula 3

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

CI065 CI755 Algoritmos e Teoria dos Grafos

Teoria dos Grafos Aula 5

Grafos Orientados (digrafos)

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

Projeto e Análise de Algoritmos

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

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

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

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

Parte B Teoria dos Grafos

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

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Fluxo em Redes. > Fluxo em Redes Modelando com Fluxo Máximo 1/20

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

Capítulo 1. Aula Conectividade Caminhos

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

Estruturas de Dados Grafos

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

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Departamento de Engenharia de Produção UFPR 57

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

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

Matemática Combinatória Gabarito Lista 7 Artur Souza, Bruno Leite e Marcos Castro

Matemática para Ciência de Computadores

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.

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

Circuitos Hamiltorianos

Conceitos Básicos Isomorfismo de Grafos Subgrafos Passeios em Grafos Conexidade

Teoria dos Grafos. Edson Prestes

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

PCC173 - Otimização em Redes

Instituto de Computação Universidade Federal Fluminense. Notas de Aula de Teoria dos Grafos. Prof. Fábio Protti Niterói, agosto de 2015.

Problema da Árvore Geradora Mínima

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 /

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

CONCEITOS BÁSICOS EM GRAFOS

GRAFOS Conceitos Básicos (Parte 1)

ANÁLISE COMBINATÓRIA

Universidade de São Paulo

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

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

Representações de Grafos

Grafos e Algoritmos de Busca

GRAFOS Aula 03 Representações de Grafos Max Pereira

Prof. Marco Antonio M. Carvalho

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

GBC042 - Teoria dos Grafos Prof. Dr. rer. nat. Daniel Duarte Abdala. Lista de Exercícios

Algoritimos e Estruturas de Dados III CIC210

Aula 08. Estruturas de dados Árvore e Grafo

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

grafo nós vértices arcos arestas

Fluxo em Redes. > Fluxo em Redes 1/19

Aula 1: Introdução ao curso

Definição e Conceitos Básicos

Teoria dos Grafos Aula 1 - Introdução

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Caminhos mínimos de única origem

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

GABRIEL BUJOKAS

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

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

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

Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE

Introdução a Grafos Letícia Rodrigues Bueno

CI065 CI755 Algoritmos e Teoria dos Grafos

x y Grafo Euleriano Figura 1

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

1 Introdução à Teoria dos Grafos

Conteúdo. Histórico. Notas. Teoria dos Grafos BCC204. Notas. Notas. 1736: Euler e as Pontes de Königsberg

Grafos: caminhos (matriz adjacência)

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

Processamento de Imagens usando Grafos (MAC6903)

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

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Alguns passos da prova do Teorema de Runge

Noções da Teoria dos Grafos

Aula 14. Aula de hoje. Aula passada

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

Transcrição:

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

Grafos Direcionados Em muitas aplicações, é importante ter direção nas arestas: Ruas de mão única Grafos modelando páginas da internet e links entre elas Grafos modelando pre-requisitos de matérias... > Grafos Direcionados Representações Computacionais 2/36

Grafos Direcionados Em muitas aplicações, é importante ter direção nas arestas: Ruas de mão única Grafos modelando páginas da internet e links entre elas Grafos modelando pre-requisitos de matérias... Isso motiva grafos direcionados > Grafos Direcionados Representações Computacionais 2/36

Grafos Direcionados Em muitas aplicações, é importante ter direção nas arestas: Ruas de mão única Grafos modelando páginas da internet e links entre elas Grafos modelando pre-requisitos de matérias... Isso motiva grafos direcionados Definição Um grafo direcionado G é um par (V, E) onde 1) V é um conjunto [nós] 2) E é um conjunto de pares (ordendadas) de nós [arcos ou arestas] > Grafos Direcionados Representações Computacionais 2/36

Grafos Direcionados b e e2 e3 e1 a c d e5 e4 > Grafos Direcionados Representações Computacionais 3/36

Grafos Direcionados Definição (Grau de Entrada) O grau de entrada d (v) de um vértice v é o número de arcos que chegam/apontam para v Definição (Grau de Saída) O grau de saída d + (v) de um vértice v é o número de arcos que saem de v b e e2 e3 e1 a c d e5 e4 > Grafos Direcionados Representações Computacionais 4/36

Grafos Direcionados Pergunta: Num grafo direcionado qual a relação entre a soma dos graus de saída e o número de arestas? > Grafos Direcionados Representações Computacionais 5/36

Grafos Direcionados Pergunta: Num grafo direcionado qual a relação entre a soma dos graus de saída e o número de arestas? Proposição Num grafo direcionado G = (V, E), d + (v) = E v V Note que não tem mais o 2 multiplicando o número de arestas Prova: Por indução no número de arestas. Exercício importante > Grafos Direcionados Representações Computacionais 5/36

Grafos Direcionados Pergunta: E qual a relação entre soma dos graus de saída e soma dos graus de entrada (ainda em grafos direcionados)? > Grafos Direcionados Representações Computacionais 6/36

Grafos Direcionados Pergunta: E qual a relação entre soma dos graus de saída e soma dos graus de entrada (ainda em grafos direcionados)? Proposição Num grafo direcionado G = (V, E), d + (v) = d (v) v V v V Prova: Por indução no número de arestas. Exercício importante > Grafos Direcionados Representações Computacionais 6/36

Passeios em Grafos Direcionados Definição (Passeio Direcionado) Um passeio (walk) em um grafo G é uma sequência não nula W = v 0 e 1 v 1 e 2... e k v k, tal que para todo i = 1,..., k, a aresta (v i 1, v i ) pertence ao grafo Definição (Caminho Direcionado) Um passeio direcionado, onde não há repetição de vértices > Grafos Direcionados Representações Computacionais 7/36

Passeios em Grafos Direcionados Definição (Alcançabilidade) Um nó u é alcançável a partir de v se e somente se existe um caminho direcionado que começa em v e termina em u. b a c d e f Figure: f é alcançável a partir de b, mas b não é alcançável a partir de f > Grafos Direcionados Representações Computacionais 8/36

Passeios em Grafos Direcionados Pergunta: O que quer dizer um grafo direcionado ser conexo? > Grafos Direcionados Representações Computacionais 9/36

Passeios em Grafos Direcionados Pergunta: O que quer dizer um grafo direcionado ser conexo? Uma possível definição é a seguinte: Definição (Grafo Fortemente Conexo) Um grafo direcionado G = (V, E), é fortemente conexo se para todo para u, v V, existe um caminho em G de u a v b a c d e f > Grafos Direcionados Representações Computacionais 9/36

Passeios em Grafos Direcionados Grafos fortemente conexos são importantes, pessoas/usuários/etc. não ficam empacados Caso grafo modele ruas Caso grafo modele interface... > Grafos Direcionados Representações Computacionais 10/36

Passeios em Grafos Direcionados Grafos fortemente conexos são importantes, pessoas/usuários/etc. não ficam empacados Caso grafo modele ruas Caso grafo modele interface... Em Análise de Algoritmos vamos ver algoritmos eficientes para detectar se grafo é fortemente conexo ou não (baseado em exercício que faremos hoje) > Grafos Direcionados Representações Computacionais 10/36

Grafos Direcionados Acíclicos Definição Um grafo direcionado acíclico (DAG) é um grafo direcionado que não contém ciclos > Grafos Direcionados Representações Computacionais 11/36

Grafos Direcionados Acíclicos Pergunta: Aonde DAG s aparecem? > Grafos Direcionados Representações Computacionais 12/36

Grafos Direcionados Acíclicos Pergunta: Aonde DAG s aparecem? Muito usados para modelar relações de precedência: uma tarefa/matéria/etc. tem que ser feita antes de outra Exemplo: Grafo onde nós são matérias, tem aresta (u, v) se uma matéria u é pré-requisito de matéria u > Grafos Direcionados Representações Computacionais 12/36

Grafos Direcionados Acíclicos Pergunta: Aonde DAG s aparecem? Muito usados para modelar relações de precedência: uma tarefa/matéria/etc. tem que ser feita antes de outra Exemplo: Grafo onde nós são matérias, tem aresta (u, v) se uma matéria u é pré-requisito de matéria u Não pode ter ciclo, senão não tem como acabar as matérias > Grafos Direcionados Representações Computacionais 12/36

Grafos Direcionados Acíclicos Pergunta: Dado tal grafo de matérias, em que ordem faze-las? b a c d e f > Grafos Direcionados Representações Computacionais 13/36

Grafos Direcionados Acíclicos Tal ordem é chamada ordenação topológica do grafo Intuitivamente queremos organizar os nós do grafo tal que arestas sempre vão da esquerda pra direita > Grafos Direcionados Representações Computacionais 14/36

Grafos Direcionados Acíclicos Tal ordem é chamada ordenação topológica do grafo Intuitivamente queremos organizar os nós do grafo tal que arestas sempre vão da esquerda pra direita Definição Uma ordenação topológica de um grafo direcionado G = (V, E) é uma função f que associa a cada vértice v do grafo um número inteiro f (v) satisfazendo: (i) Cada nó recebe valor diferente: f (u) f (v) para u v [posição na ordem] (ii) Se (u, v) E então f (u) < f (v) [arestas da esquerda pra direita] > Grafos Direcionados Representações Computacionais 14/36

Grafos Direcionados Acíclicos b a c d e f > Grafos Direcionados Representações Computacionais 15/36

Grafos Direcionados Acíclicos Pergunta: Todo grafo direcionado tem um ordenação topológica? > Grafos Direcionados Representações Computacionais 16/36

Grafos Direcionados Acíclicos Pergunta: Todo grafo direcionado tem um ordenação topológica? Resp: Não > Grafos Direcionados Representações Computacionais 16/36

Proposição Seja G um grafo direcionado. Se G tem um ciclo, então não tem ordenação topológica Proof: Por contradição, suponha que G tem ordenação topológica f Considere um ciclo C v 0 v 1... v k 1 v k = v 0 um ciclo em G Seja v i o nó do ciclo que aparece primeiro na ordenação topológica, ou seja, tem o menor valor f (v i ) Mas como aresta (v i 1, v i ) está no grafo, v i 1 tem que vir antes na ordenação top., ou seja f (v i 1 ) < f (v i ) contradição > Grafos Direcionados Representações Computacionais 17/36

Grafos Direcionados Acíclicos Pergunta: Todo grafo direcionado acíclico (DAG) tem ordenação topológica? > Grafos Direcionados Representações Computacionais 18/36

Grafos Direcionados Acíclicos Pergunta: Todo grafo direcionado acíclico (DAG) tem ordenação topológica? Resp: Sim, vamos provar a seguir > Grafos Direcionados Representações Computacionais 18/36

Grafos Direcionados Acíclicos Lema Em um DAG existe um vértice com grau de entrada 0 Ideia: Caso contrário, pegue um nó e siga para seu ante-vizinho, e seu ante-vizinho, etc. ciclo! > Grafos Direcionados Representações Computacionais 19/36

Lema Em um DAG existe um vértice com grau de entrada 0 Prova: Seja P = v 0 v 1... v k um maior caminho no grafo. Vamos mostrar que o início v 0 tem grau de entrada 0 Por contradição, assuma que v 0 tem grau de entrada 1 tem nó u apontando para v 0 Caso u pertença ao caminho P, temos um ciclo contradição Caso u não pertença ao caminho P, temos um caminho maior que P contradição > Grafos Direcionados Representações Computacionais 20/36

Grafos Direcionados Acíclicos Proposição Todo DAG G tem ordenação topológica > Grafos Direcionados Representações Computacionais 21/36

Grafos Direcionados Acíclicos Proposição Todo DAG G tem ordenação topológica Prova: Por indução no número de vértices de G > Grafos Direcionados Representações Computacionais 21/36

Grafos Direcionados Acíclicos Proposição Todo DAG G tem ordenação topológica Prova: Por indução no número de vértices de G Caso base: G tem apenas um vértice v ordenação topológica trivial f (v) = 1 > Grafos Direcionados Representações Computacionais 21/36

Passo Indutivo: Considere DAG G com n nós Pela proposição anterior, G tem um nó v com grau de entrada 0 Remova v do grafo, obtendo G v. Como G v é DAG e tem n 1 nós, pela hipótese indutiva tem ordenação topológica f Crie uma ordenação topológica para G colocando o nó v na frente, e continuando com a ordenação de G v (Mais precisamente, defina a ord. top. f para G fazendo f (v) = 1 e f (u) = f (u) + 1 para todo u v) Verifique que pra toda aresta (x, y) em G, f (x) < f (y) > Grafos Direcionados Representações Computacionais 22/36

Grafos Direcionados Acíclicos Ou seja, provamos o seguinte: Theorem Um grafo direcionado tem uma ordenação topológica se e somente se ele é acíclico > Grafos Direcionados Representações Computacionais 23/36

Grafos Direcionados Acíclicos A prova do teorema anterior dá algoritmo recursivo para obter uma ordenação topológica para um DAG G > Grafos Direcionados Representações Computacionais 24/36

Grafos Direcionados Acíclicos Procedimento OrdemTopologica(G) Se G tem apenas um vértice v f (v) = 1 Senão Seja v um vértice de grau de entrada 0 em G f OrdemTopologica(G v) Para todo vértice u de G v f (u) f (u) + 1 Fim Para f (v) 1 Fim Se Retorna f > Grafos Direcionados Representações Computacionais 25/36

Representações Computacionais > Grafos Direcionados Representações Computacionais 26/36

Representações Computacionais Para poder utilizar os grafos na modelagem e resolução de problemas computacionais, é necessário utilizar estruturas de dados que permitam armazená-los eficientemente em meios digitais. > Grafos Direcionados Representações Computacionais 27/36

Matriz de Adjacência Grafos Não Direcionados Seja G = (V, E) um grafo, onde V = {1,..., n}. A entrada (i, j ) de uma matriz de adjacência indica o número de arestas que tem como extremidades i e j. 1 1 2 3 4 5 1 0 1 0 0 2 2 5 2 3 1 0 1 1 0 0 1 0 1 0 4 0 1 1 0 1 3 4 5 2 0 0 1 0 > Grafos Direcionados Representações Computacionais 28/36

Matriz de Adjacência Grafos Não Direcionados A matriz é simétrica, como podemos observar na Figura. Esta simetria permite guardar somente os elementos da diagonal principal e os elementos abaixo (ou acima) dela. Dessa forma economiza-se espaço no armazenamento da estrutura. > Grafos Direcionados Representações Computacionais 29/36

Matriz de Adjacência Grafos Direcionados Seja G = (V, E) um grafo direcionado, onde V = {1,..., n}. A entrada (i, j ) de uma matriz de adjacência indica o número de arestas que tem i como cauda e j como cabeça. Neste caso, a matriz não é necessariamente simétrica: 1 1 1 2 3 0 0 1 2 1 0 1 2 3 3 0 0 0 > Grafos Direcionados Representações Computacionais 30/36

Matriz de Adjacência Grafos Direcionados Dentre as propriedades das matrizes de adjacências, destacamos: Necessita cerca de n 2 posições de memória. A existência de uma aresta pode ser testada com uma única operação. Para listar todos os vértices e arestas do grafo precisamos de cerca de n 2 operações. > Grafos Direcionados Representações Computacionais 31/36

Lista de Adjacência Em muitos casos, lidamos com grafos esparsos, ou seja, com poucas arestas. Nesse caso é um desperdício utilizar n 2 posições de memória. A proxima figura mostra um grafo com 5 vértices e 4 arestas, e sua matriz de adjacências. Observe que a maioria das entradas são nulas. 1 2 3 4 5 1 2 3 4 5 1 0 1 0 0 0 2 0 0 1 0 0 3 0 0 0 1 0 4 0 0 0 0 1 5 0 0 0 0 0 > Grafos Direcionados Representações Computacionais 32/36

Lista de Adjacência Uma alternativa para evitar este desperdício, é utilizar um vetor de listas encadeadas, onde a lista correspondente a i-ésima posição guarda os elementos adjacentes ao vértice i. > Grafos Direcionados Representações Computacionais 33/36

Lista de Adjacência Para representar arestas paralelas em listas de adjacências, podemos utilizar um campo extra para guardar a multiplicidade da aresta. 1 1 2 1 4 2 NULL 2 4 2 3 4 3 1 NULL 3 1 NULL NULL 3 > Grafos Direcionados Representações Computacionais 34/36

Lista de Adjacência Dentre as características das listas de adjacências destacamos: cerca de n + E posições de memória são necessárias. Para descobrir se uma aresta pertence ao grafo, pode ser necessário percorrer uma lista encadeada inteira. O grafo pode ser percorrido em um tempo proporcional ao número de arestas. > Grafos Direcionados Representações Computacionais 35/36

Exercícios Exercício 1: Quantas ordenações topológicas tem o grafo abaixo: Exercício 2: Prove: Considere um grafo direcionado G. Se G possui um nó v que alcança todos os outros (ou seja, tem caminho de v a todos outros), e todos nós alcançam v, então o grafo é fortemente conexo > Grafos Direcionados Representações Computacionais 36/36