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

Documentos relacionados
Conceito Básicos da Teoria de Grafos

Definições Básicas para Grafos

Conceitos Básicos da Teoria de Grafos

Teoria dos grafos. FATEC Carapicuíba Augusto de Toledo Cruz Junior

Estruturas de Dados Grafos

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 8 Grafos. Estrutura de Dados 1

IFRN. Introdução à Teoria dos Grafos. Prof. Edmilson Campos

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

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Grafos IFRN. Robinson Alves

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

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas

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

Teoria dos Grafos. Profa. Alessandra Martins Coelho

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 Aula 03 Representações de Grafos Max Pereira

Noções da Teoria dos Grafos. André Arbex Hallack

Percursos em um grafo

Grafos Orientados (digrafos)

Prof. Marco Antonio M. Carvalho

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

Percursos em um grafo

SCC Modelagem Computacional em Grafos Introdução a Grafos

IFRN. Conexidade e Distância. Prof. Edmilson Campos

Teoria dos Grafos Aula 5

Algoritmos e Estruturas de Dados II Grafos conceitos gerais. Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M.

Teoria dos Grafos. Motivação

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

Teoria dos Grafos Aula 1 - Introdução

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

Comunicação e redes. Aula 2: Teoria dos Grafos Conceitos básicos. Professor: Guilherme Oliveira Mota.

Definição e Conceitos Básicos

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

Noções da Teoria dos Grafos

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

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

GRAFOS Aula 05 Algoritmos de percurso: busca em largura e profundidade Max Pereira

Algoritmos e Estruturas de Dados II Grafos conceitos gerais. Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M.

Noções da Teoria dos Grafos. André Arbex Hallack

Parte B Teoria dos Grafos

Teoria dos Grafos. Edson Prestes

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

GRAFOS: UMA INTRODUÇÃO

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

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

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

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

Grafos IFRN. Prof. Robinson Alves

Departamento de Engenharia de Produção UFPR 57

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:

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

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

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

Algoritmos em Grafos - Aula 02 Introdução à Teoria dos Grafos

Matemática Discreta - Exercícios de Grafos

Redes Complexas. Renato Vicente. Complex Systems EACH USP

Teoria dos Grafos Aula 6

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

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

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

Teoria dos Grafos Introdu c ao

Pesquisa Operacional. Teoria dos Grafos

Teoria dos Grafos Aula 2

Introdução à Teoria dos Grafos

Grafos: algoritmos de busca

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

Aula 2 Definições, Conceitos Básicos e Representação Interna de Grafos. Teoria dos Grafos Prof.

Teoria do Grafos. Prof. Luiz Fernando L. Nascimento

Grafos: caminhos mínimos

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

GRAFOS ORIENTADOS. PSfrag replacements. Figura 1: Exemplo de um grafo orientado.

Pesquisa Operacional II. Professor João Soares de Mello

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

As Pontes de Königsberg

Teoria dos Grafos. Edson Prestes

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

PCC173 - Otimização em Redes

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

Grafos Parte 1. Aleardo Manacero Jr.

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução Matemática e Divisibilidade. 5 Congruências Lineares

GRAFOS Conceitos Básicos (Parte 1)

GRAFOS Aula 02 Formalização: definições Max Pereira

Aula 09. Percurso em grafo

Teoria dos Grafos AULA 1

Módulo 2 OTIMIZAÇÃO DE REDES

Introdução a Grafos Letícia Rodrigues Bueno

Árvore Geradora Mínima

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

Teoria dos Grafos. Árvores

2. Desenhe o grafo orientado G = (X, Γ) para: 3. Em cada alínea dois grafos são iguais. Identifique-os. (a) (b) (c)

Capítulo 1. Aula Caminhos de Euler e Hamilton Caminhos de Euler e Circuitos

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

Oalgoritmo de Dijkstra

Teoria dos Grafos AULA 1

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

Teoria dos Grafos. Maria Claudia Silva Boeres. UFES. Teoria dos Grafos

Transcrição:

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

História O assunto que se constitui no marco inicial da teoria de grafos é na realidade um problema algorítmico. Além disso, é um problema cuja solução foi a elaboração de um algoritmo eficiente. O problema da ponte de Königsberg foi resolvido por Euler em 1736. No Rio Pregel, junto à cidade de Königsberg (hoje Kalingrado) na então Prússia, existem duas ilhas formando portanto quatro regiões distingüíveis de terra.

História Sete pontes conectam a cidade e as duas ilhas, e o problema é saber se é possível caminhar de um ponto qualquer da cidade e retornar a este ponto passando por cada ponte exactamente um vez.

História Euler resolveu este problema criando um grafo onde terra firme é vértice e ponte é aresta:

História Quando caminhamos por um vértice, nós temos que entrar e sair dele (ou vice-versa, no caso do ponto inicial). Isto significa que usamos um número par de arestas cada vez que passamos por um vértice. Como o grafo acima possui vértices com número ímpar de arestas, a resposta para o problema é NÃO.

Motivação Existem funções inúteis no programa? Considere que funções são vértices e existe aresta de f para g se existe chamada a g no corpo de f: main f k m n g h

Motivação Usando a mesma representação, podemos descobrir se um programa possui recursão directa ou indirecta. Pode existir recursão se existe ciclo no grafo. f h g

Motivação Um vendedor que passar por várias cidades, retornando ao ponto inicial, usando o trajecto de menor distância possível. Qual a menor distância entre duas cidades A e C? Como ir da cidade A a C passando pelo número mínimo de cidades? B 300 200 A 100 C 50 20 30 70

Motivação Quantas cores são necessárias para colorir um mapa no plano? B C D A E

Conceitos Preliminares Um grafo G(V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio: os vértices ou nós do grafo; A - conjunto de pares ordenados a=(v,w), v e w V: as arestas do grafo. Seja, por exemplo, o grafo G(V,A) dado por: V = { p p é uma pessoa } A = { (v,w) < v é amigo de w > }

Conceitos Preliminares Esta definição representa toda uma família de grafos. Um exemplo de elemento desta família é dado por: V = { Maria, Pedro, Joana, Luiz } A = { (Maria, Pedro), (Joana, Maria), (Pedro, Luiz), (Joana, Pedro) }

Dígrafo (Grafo Orientado) Considere, agora, o grafo definido por: V = { p p é uma pessoa da família Castro } A = { (v,w) < v é pai/mãe de w > } A relação definida por A não é simétrica pois se <v é pai/mãe de w>, não é o caso de <w é pai/mãe de v>. Há, portanto, uma orientação na relação, com um correspondente efeito na representação gráfica de G. O grafo é dito ser um grafo orientado (ou dígrafo), sendo que as conexões entre os vértices são chamadas de arcos.

Dígrafo (Grafo Orientado) Um exemplo de deste grafo é: V = { Emerson, Isadora, Renata, Antonio, Rosane, Cecília, Alfredo } A = {(Isadora, Emerson), (Antonio, Renata), (Alfredo, Emerson), (Cecília, Antonio), (Alfredo, Antonio)}

Ordem A ordem de um grafo G é dada pela cardinalidade do conjunto de vértices, ou seja, pelo número de vértices de G. Nos exemplos ao lado: ordem(g1) = 4 ordem(g2) = 6

Adjacência Em um grafo simples, dois vértices v e w são adjacentes se há uma aresta a=(v,w) em G. No caso do grafo ser dirigido, a adjacência (vizinhança) é especializada em: Sucessor: um vértice w é sucessor de v se há um arco que parte de v e chega em w. Antecessor: um vértice v é antecessor de w se há um arco que parte de v e chega em w.

Grau O grau de um vértice é dado pelo número de arestas que lhe são incidentes. grau(pedro) = 3 grau(maria) = 2 No caso do grafo ser dirigido, a noção de grau é especializada em: Grau de emissão: o grau de emissão de um vértice v corresponde ao número de arcos que partem de v. Grau de recepção: o grau de recepção de um vértice v corresponde ao número de arcos que chegam a v. Um vértice v é uma fonte se grauderecepção(v) = 0. Um vértice v é um sumidouro se graudeemissão(v) = 0.

Laço Um laço é uma aresta ou arco do tipo a=(v, v), ou seja, que relaciona um vértice a ele próprio. No exemplo há três ocorrências de laços para um grafo não orientado.

Grafo Regular Um grafo é dito ser regular quando todos os seus vértices tem o mesmo grau. O grafo abaixo é dito ser um grafo regular-3 pois todos os seus vértices tem grau 3.

Grafo Completo Um grafo é dito ser completo quando há uma aresta entre cada par de seus vértices. Estes grafos são designados por Kn, onde n é a ordem do grafo. Um grafo Kn possui o número máximo possível de arestas para um dado n. Ele é, também regular-(n-1) pois todos os seus vértices tem grau n-1.

Grafo Bipartido Um grafo é dito ser bipartido quando seu conjunto de vértices V puder ser dividido em 2 subconjuntos V1 e V2, tais que toda aresta de G une um vértice de V1 a outro de V2.

Grafo Bipartido Sejam os conjuntos H={h h é um homem} e M={m h é um mulher} e o grafo G(V,A) onde: V = H M A = {(v,w) (v H e w M) ou (v M e w H) e <v foi namorado de w>}

Grafo Bipartido O grafo abaixo é uma K3,3, ou seja, um grafo bipartido completo que contém duas partições de 3 vértices cada. Ele é completo pois todos os vértices de uma partição estão ligados a todos os vértices da outra partição.

Grafo Valorado Um grafo G(V,A) é dito ser valorado quando existe uma ou mais funções relacionando V e/ou A com um conjunto de números. Como exemplo: V = {v v é uma cidade com aeroporto} A = {(v,w,t) <há linha aérea ligando v a w, sendo t o tempo esperado de vôo>}

Multigrafo Um grafo G(V,A) é dito ser um multigrafo quando existem múltiplas arestas entre pares de vértices de G. No grafo abaixo há duas arestas entre os vértices A e C e entre os vértices A e B.

Cadeia Uma cadeia é uma sequência qualquer de arestas adjacentes que ligam dois vértices. O conceito de cadeia vale também para grafos orientados, bastando que se ignore o sentido da orientação dos arcos. A sequência de vértices (x6, x5, x4, x1) é um exemplo de cadeia no grafo abaixo.

Cadeia Uma cadeia é dita ser elementar se não passa duas vezes pelo mesmo vértice. É dita ser simples se não passa duas vezes pela mesma aresta (arco). O comprimento de uma cadeia é o número de arestas (arcos) que a compõe.

Caminho Um caminho é uma cadeia na qual todos os arcos possuem a mesma orientação. Aplica-se, portanto, somente a grafos orientados. A sequência de vértices (x1, x2, x5, x6, x3) é um exemplo de caminho no grafo acima.

Ciclo e Circuito Um ciclo é uma cadeia simples e fechada: o vértice inicial é o mesmo que o vértice final. A sequência de vértices (x1, x2, x3, x6, x5, x4, x1) é um exemplo de ciclo elementar no grafo acima. Um circuito é um caminho simples e fechado. A seqüência de vértices (x1, x2, x5, x4, x1) é um exemplo de circuito elementar no grafo acima.

Fecho Transitivo O fecho transitivo directo (ftd) de um vértice v é o conjunto de todos os vértices que podem ser atingidos por algum caminho iniciando em v. Note que o próprio vértice pode fazer parte do ftd já que ele é alcançável partindo-se dele mesmo. O fecho transitivo inverso (fti) de um vértice v é o conjunto de todos os vértices a partir dos quais se pode atingir v por algum caminho. Note que o próprio vértice pode fazer parte do fti já que dele se pode alcançar ele mesmo.

Fecho Transitivo O ftd do vértice x5 do grafo G17, por exemplo, é o conjunto: {x1, x2, x3, x4, x5, x6}. O fti do vértice x5 do grafo G17, por exemplo, é o conjunto: {x1, x2, x4, x5, x7}.

Grafo Desconexo Um grafo G(V,A) é dito ser desconexo se há pelo menos um par de vértices que não está ligado por nenhuma cadeia.

Grafo Conexo Um grafo G(V,A) é dito ser conexo se há pelo menos uma cadeia ligando cada par de vértices deste grafo G.

Vértice de Corte Um vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) provoca um redução na conexidade do grafo. Os vértices x2 nos grafos abaixo são exemplos de vértices de corte.

Ponte Uma aresta é dita ser um a ponte se sua remoção provoca um redução na conexidade do grafo. As arestas (x3, x2) em nos grafos abaixo são exemplos de pontes.

Base Uma base de um grafo G(V,A) é um subconjunto B V, tal que: dois vértices quaisquer de B não são ligados por nenhum caminho; todo vértice não pertencente a B pode ser atingido por um caminho partindo de B.

Anti-Base Uma anti-base de um grafo G(V,A) é um subconjunto A V, tal que: dois vértices quaisquer de A não são ligados por nenhum caminho; de todo vértice não pertencente a A pode se atingir A por um caminho.

Raiz e Anti-Raiz Se a base de um grafo G(V,A) é um conjunto unitário, então esta base é a raiz de G. Se a anti-base de um grafo G(V,A) é um conjunto unitário, então esta anti-base é a anti-raiz de G.

Estrutura de Dados para Grafos Matriz de Adjacências Matriz de Incidências Lista de Adjacências

Matriz de Adjacências Sendo n o número de vértices de G, uma matriz de adjacência para G(V, E) é uma matriz A = (a ij ) n n, tal que a ij = 1 se (v i, v j ) E. V 1 V 1 V 2 V 3 V 4 V 1 0 1 1 0 V 2 V 3 A = V 2 1 0 0 1 V 3 1 0 0 1 V 4 V 4 0 1 1 0 V 1 V 1 V 2 V 3 V 4 V 1 0 1 1 0 V 2 V 3 A = V 2 0 0 0 1 V 3 0 0 0 0 V 4 V 4 0 1 1 0

Matriz de Adjacências A desvantagem desta representação é que ela ocupa muito espaço se há poucas arestas, a maior parte da matriz é inútil. A vantagem é que podemos saber se uma aresta existe ou não em tempo constante.

Matriz de Incidências Uma outra representação matricial possível para o grafo G(V, E) é a matriz de incidências B = (b ij ) n m, tal que b ij = 1 se vértice v i e aresta e j forem incidentes. V 1 E 1 E 2 E 3 E 4 V 1 1 1 0 0 V 2 V 3 A = V 2 1 0 1 0 V 3 0 1 0 1 V 4 V 4 0 0 1 1 Observe que cada coluna de B tem exactamente dois Uns (1 s).

Matriz de Incidências Como representar um dígrafo utilizando a matriz de incidência? V 1 E 1 E 2 E 3 E 4 E 5 V 1????? V 2 V 3 A = V 2????? V 3????? V 4 V 4?????

Lista de Adjacências Há um vetor de n posições onde cada um apontando para uma lista. A posição i do vetor aponta para uma lista contendo números j tal que (Vi, Vj) E. Para os grafos anteriores teremos: V 1 2 3 nil V 2 1 4 nil V 3 1 4 nil V 4 2 3 nil V 1 2 3 nil V 2 4 nil V 3 nil V 4 2 3 nil

Busca em Profundidade Depth-FirstSearch(DFS) Uma DFS é feita em um grafo começando em um vértice V chamado raiz da árvore. V V 1 1 7 2 6 2 4 3 5 5 3 4

Busca em Largura Breadth - First Search (BFS) Uma BFS é feita em um grafo G = (V, E) começando em um vértice V. 5 V V 3 1 a 1 b b 4 a 2 3 c d e 5 e 6 f 7 g 4 2 6 c d f 8 h

Busca em Largura Primeiro o algoritmo visita V e todos os vértices conectados a V, chamados filhos de V. BFS visita vértices W tal que (V, W) E. No segundo passo, o algoritmo visita todos os netos de V. Os vértices que não estão conectados directamente a V mas, estão conectados a algum vértice e que está conectado a V.

Exercícios Faça a busca em profundidade e em largura nos grafos abaixo: a c V d b V a b c d e f a d c V g b e

Exercícios e a c V h d f b g j e f a d c V g i b l m h i j k k