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

Documentos relacionados
INF 1010 Estruturas de Dados Avançadas

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 33

Teoria dos Grafos Aula 6

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

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

Grafos Parte 1. Aleardo Manacero Jr.

Estruturas de Dados Grafos

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

Teoria dos Grafos Aula 5

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

Teoria dos Grafos Aula 2

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

Otimização em Grafos

Teoria dos Grafos Aula 22

Árvores de Suporte de Custo Mínimo

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

Algoritmos em Grafos: Caminho Mínimo

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

INF 1010 Estruturas de Dados Avançadas

Caminhos mínimos de única origem

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

Algoritmos em Grafos

Grafos: caminhos mínimos

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

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

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa

CONCEITOS BÁSICOS EM GRAFOS

Teoria dos Grafos Aula 24

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

Teoria dos Grafos Aula 8

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

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

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

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

Cap. 2 Conceitos Básicos em Teoria dos Grafos

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

Problema do Caminho Mínimo

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

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

GRAFOS Aula 03 Representações de Grafos Max Pereira

Desafios de Programação TCC Turma A-1

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

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

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

Grafos Caminhos mais Curtos

Sub-grafo. Árvore Geradora Mínima

Caminho mais curto. 1 - Caminho não pesado

Prof. Marco Antonio M. Carvalho

Teoria dos Grafos. Edson Prestes

Pesquisa em Grafos. Pedro Ribeiro 2016/2017 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2016/ / 52

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

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

Análise e Síntese de Algoritmos

Pesquisa em Grafos. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Pesquisa em Grafos 2014/ / 48

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. Introdução Conceitos Fundamentais

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

Teoria dos Grafos Aula 3

Matemática Discreta 10

Departamento de Engenharia de Produção UFPR 57

Teoria dos Grafos Aula 2

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.

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

Introdução a Grafos Letícia Rodrigues Bueno

SCC Laboratório de Algoritmos Avançados. Multigrafos: Caminhos Mínimos. Multigrafos e Multidígrafos. Multigrafos e Multidígrafos

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

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

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

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

Prof. Marco Antonio M. Carvalho

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

Desenho e Análise de Algoritmos

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

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

CIC 110 Análise e Projeto de Algoritmos I

Análise e Síntese de Algoritmos

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

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

Otimização em Grafos

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 Caminhos. Profª. Alessandra Martins Coelho

Fluxo Máximo. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Fluxo Máximo 2014/ / 28

CI065 CI755 Algoritmos e Teoria dos Grafos

Desenho e Análise de Algoritmos

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

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

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

CIC 111 Análise e Projeto de Algoritmos II

Árvores: Conceitos Básicos e Árvore Geradora

Grafos Árvores Geradoras Mínimas

grafo nós vértices arcos arestas

Busca em Profundidade e em Largura

Grafos e Algoritmos de Busca

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

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

Grafos: conceitos básicos e métricas

Problemas de Busca (a.k.a NP) - parte 2

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

Transcrição:

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

Conceito Definição de Grafo Formalmente, um grafo é: Um conjunto de nós/vértices (V). Um conjunto de ligações/arestas/arcos (E), que consistem em pares de vértices V = {1, 2, 3, 4, 5, 6} E = {(1, 6), (1, 3), (3, 6), (3, 4), (2, 5)} Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 2 / 32

Para que servem os grafos? Os grafos são úbiquos na Ciência de Computadores e estão presentes, implicita ou explicitamente, em muitos algoritmos. Podem ser usados para representar uma multiplicidade de coisas. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 3 / 32

Exemplos de Grafos Redes com existência física Redes de estradas Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 4 / 32

Exemplos de Grafos Redes com existência física Redes de transportes públicos (ex: metro, comboio) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 5 / 32

Exemplos de Grafos Redes com existência física Redes de energia eléctrica Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 6 / 32

Exemplos de Grafos Redes com existência física Redes de computadores Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 7 / 32

Exemplos de Grafos Redes Sociais Facebook (outros ex: Twitter, e-emails, co-autoria de artigos,...) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 8 / 32

Exemplos de Grafos Redes de Software Depêndencia entre módulos (outros: estado, fluxo de informação,...) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 9 / 32

Exemplos de Grafos Redes Biológicas Rede metabólica (outros exemplos: proteínas, transcrição, cerebrais, cadeias alimentares, redes filogenéticas,...) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 10 / 32

Exemplos de Grafos Outros Grafos Rede semântica (outros exemplos: links entre páginas,...) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 11 / 32

Terminologia Grafo dirigido/direcionado/digrafo - cada ligação tem um nó de partida (origem) e um nó de chegada fim (ordem interessa!). Normalmente nos desenhos usam-se setas para indicar a direção Grafo não dirigido - não existe partida e chegada, apenas uma ligação Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 12 / 32

Terminologia Grafo pesado - a cada ligação está associado um valor (pode ser uma distância, um custo,...) Grafo não pesado - não existem valores associados a cada arco Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 13 / 32

Terminologia Grau de um nó - número de ligações desse nó Em grafos dirigidos pode distinguir-se entre grau de entrada e grau de saída Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 14 / 32

Terminologia Nó adjacente/vizinho: dois nós são adjacentes se tiverem uma ligação entre si Grafo trivial: grafo sem arestas e com um único nó Laço ou lacete (self-loop): ligação de um nó a si próprio Grafo simples: nó sem laços e sem ligações repetidas em E (em DAA vamos usar (quase) sempre grafos simples) Multigrafo: grafo não simples (com laços e/ou ligações) repetidas) Grafo denso: com muitas ligações quando comparadas com o máximo possível de ligações - E da ordem de O( V 2 ) Grafo esparso: com poucas ligações quando comparadas com o máximo possivel de ligações - E de ordem inferior a O( V 2 ) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 15 / 32

Terminologia Caminho: sequência alternada de nós e arestas, de tal modo que dois nós sucessivos são ligados por uma aresta. Tipicamente em grafos simples indicam-se só os nós para definir um caminho. 1 6 2 4 Ciclo: caminho que começa e termina no mesmo nó (ex: para o grafo de cima, 1 6 4 3 1 é um ciclo) Grafo acíclico: grafo sem ciclos Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 16 / 32

Terminologia Tamanho de um caminho: número de arestas num caminho Custo de caminho: se for um grafo pesado podemos falar no custo, que é a soma dos pesos das arestas Distância: tamanho/custo do menor caminho entre dois nós Diâmetro de um grafo: distância máxima entre dois nós de um grafo Diâmetro = 3 1 2 3 4 5 6 1 0 2 1 2 3 1 2 2 0 2 1 1 1 3 1 2 0 1 3 2 4 2 1 1 0 2 1 5 3 1 3 2 0 2 6 1 1 2 1 2 0 Distâncias entre nós Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 17 / 32

Terminologia Componente conexa: Subconjunto de nós onde existe pelo menos um caminho entre cada um deles Grafo conexo: Grafo com apenas uma componente conexa (existe caminho de todos para todos) Grafo com duas componentes conexas: {1, 3, 4, 6} e {2, 5} Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 18 / 32

Terminologia Subgrafo: subconjunto de nós e arestas entre eles Grafo completo: existem ligações entre todos os pares de nós Clique: subgrafo que é completo Triângulo: clique de 3 nós Exemplo de subgrafos: {1, 3}, {1, 6, 2}, {2, 4, 5, 6}, etc Exemplo de clique: {2, 4, 6} (é um triângulo) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 19 / 32

Terminologia Árvore: grafo simples, conexo e acíclico (se tem n nós, então terá n 1 arestas) Floresta: conjunto de múltiplas árvores disconexas Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 20 / 32

Representação de Grafos Como representar um grafo? Matriz de Adjacências: matriz de V V onde a entrada (i, j) indica se existe uma ligação entre o nó i e j (se for um grafo pesado podemos indicar o peso) Lista de Adjacências: cada nó guarda uma lista contendo os seus vizinhos 1 2 3 4 5 6 1 X X 2 X X X 3 X X 4 X X X 5 X 6 X X X Matriz de Adjacências 1: 3, 6 2: 4, 5, 6 3: 1, 4 4: 2, 3, 6 5: 2 6: 1, 2, 4 Lista de Adjacências Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 21 / 32

Representação de Grafos Algumas Vantagens/Desvantagens: Matriz de Adjacências: Muito simples de implementar Rápida para ver se existe ligação entre dois nós - O(1) Lenta para percorrer nós adjacentes - O( V ) Elevado desperdício de memória (em grafos esparsos) - O( V 2 ) Grafo pesado implica apenas armazenar peso na matriz Adicionar/remover ligações é só mudar célula da matriz - O(1) Lista de Adjacências: Lenta para ver se existe ligação entre dois nós - O(grau do nó) Rápida para percorrer nós adjacentes - O(grau do nó) Memória bem aproveitada - O( V + E ) Grafo pesado implica adicionar um campo à lista Remover implica percorrer a lista - O(grau do nó) Nota: podemos usar listas ordenadas para melhorar pesquisa mas nesse caso adicionar e/ou modificar fica mais complicado. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 22 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Pesquisas de um grafo: Em profundidade - DFS (O( V + E ) com lista de adjacências) Alguns exemplos de aplicação: Descobrir componentes conexos / Flood-Fill Descobrir ciclos Ordenação topológica Descobrir pontos de articulação e/ou pontes Descobrir componentes fortemente conexos Saber se um grafo é bipartido Pesquisa exaustiva de caminhos Em largura - BFS(O( V + E ) com lista de adjacências) Alguns exemplos de aplicação: Quase todas as aplicações de DFS + Descobrir caminho mínimo entre dois pontos (num grafo não pesado) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 23 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Pesquisas em profundidade e largura: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 24 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Ponto de articulação: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 25 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Componentes fortemente conexos: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 26 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Árvores Mínimas de Suporte Uma árvore de suporte é um subgrafo conexo que é uma árvore e que contém todos os vértices do grafo. Uma árvore mínima de suporte é uma árvore de suporte onde a soma dos pesos das arestas é mínima. Algoritmo de Prim Algoritmo greedy que adiciona um nó de cada vez Complexidade temporal: O( E log V ) com uma fila de prioridade Algoritmo de Kruskal Algoritmo greedy que adiciona uma aresta de cada vez Complexidade temporal: O( E log E ) com conjuntos disjuntos Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 27 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Árvore Mínima de Suporte: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 28 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Caminhos mínimos Algoritmo de Dijkstra - Distância de um nó para todos os outros (não funciona em grafos com pesos negativos) Um mix de greedy com programação dinâmica Complexidade temporal: O( E log V ) com uma fila de prioridade Algoritmo de Bellman-Ford - Distância de um nó para todos os outros (funciona em grafos com pesos negativos) Parecido com Dijkstra mas sempre com relaxamento de todas as arestas Complexidade temporal: O( E V ) com conjuntos disjuntos Algoritmo de Floyd-Warshall - Distâncias entre todos os nós Usa a ideia de programação dinâmica Complexidade temporal: O( V 3 ) Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 29 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Caminho mínimo entre dois pontos: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 30 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Fluxos máximos Problema de optimização que envolve descobrir fluxo máximo (não excedendo capacidades das arestas) entre dois nós. Exemplos de aplicações: Bipartite matching Mínima cobertura de caminhos Número de caminhos sem nós e/ou arestas comuns O algoritmo que vamos dar: Algoritmo de Edmonds-Karp Uma implementação do algoritmo de Ford-Fulkerson Ir descobrindo augmenting paths com sucessivas pesquisas em largura Complexidade temporal: O( V E 2 ) () Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 31 / 32

Algoritmos Alguns dos algoritmos que vamos dar em DAA Fluxo máximo: Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 32 / 32