Formas de representação e manipulação básica

Slides:



Advertisements
Apresentações semelhantes
Grafos eulerianos 1.
Advertisements

Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Representação de Grafos
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Teoria dos Grafos – Aula 2
Teoria dos Grafos Loana Tito Nogueira.
Grafos – Parte 2 Projeto e Análise de Algoritmos Aline Vasconcelos
Exercícios PAA- Grafos
Exercícios PAA- Grafos
CC/EC/PPGI/UFES 2010/1 Teoria dos Grafos (INF 5037/INF2781) Conceitos Básicos.
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
Percursos em um grafo 2010/1 Teoria dos Grafos (INF 5037/INF2781)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Conectividade e Separabilidade
Algoritmo polinomial para geração de uma Árvore Geradora Mínima
CONCEITOS BÁSICOS DE GRAFOS
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Definições operacionais. PASSOS A SEGUIR DEPOIS DESTA AULA 1. Deixe bem claro o problema de investigação com o patrocinador (ou orientador), se preciso.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
Geometria Computacional Interseção de Segmentos
2002 LCG/UFRJ. All rights reserved. 1 Localização no Plano Claudio Esperança Paulo Roma.
DIM102 1 Curvas e Superfícies 35T56 – Sala 3F4 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227.
Introdução Redes LAN - abrangência: edifícios e campos.
Grafos – Parte 1 Projeto e Análise de Algoritmos Aline Vasconcelos
Medida do Tempo de Execução de um Programa
Grafos - Definições Preliminares - Formas de Representação
Ordenação Topológica Luis Raphael Mareze Marcus Vinicius Lemos Chagas
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Baseado em: The Algorithm Design Manual Steven S. Skiena
Algoritmos em Grafos.
Algoritmos em Grafos Conceitos principais Prof. André Renato
Grafos Árvores Geradoras.
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Teoria dos Grafos Definições e Terminologia
Teoria dos Grafos Representação de Grafos e Isomorfismo
Análise de Redes Complexas – Conceitos e Propriedades Básicas
Algoritmos em Grafos Árvores Geradoras Prof. André Renato
Fundamentos da Arquitetura de Computadores
Exercícios PAA- Grafos
Histórico, exemplos e problemas
Operações com grafos União Exemplo
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
O problema do emparelhamento máximo
Teoria dos Grafos Coloração
Problemas de fluxo em grafos 1º semestre/2012 Prof. André Renato
Arquitetura de computadores
Técnicas de Modelagem para Aplicações em Computação Gráfica
Conceitos básicos em grafos
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Campus de Caraguatatuba
DCC 001 Programação de Computadores
Universidade Federal de Mato Grosso do Sul Departamento de Computação e Estatística Circuitos de Euler em Paralelo Universidade Federal de Mato Grosso.
Busca Combinatorial e Métodos de Heurística
Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2005.
Msc. Daniele Carvalho Oliveira
Aula de Monitoria – Miniprova


Exercícios de Fluxo em Redes
Celso C. Ribeiro Caroline T. Rocha
Grafos Anjolina Grisi de Oliveira 2005
Estruturas de Dados Murilo Salgado Razoli.
 Prof. Miguel Gabriel Prazeres de Carvalho 1. 2 Redes Sociais GPS Para o correio. Para Viajantes. Pesquisas Biológicas. Distribuição de Tarefas. Recomendações.
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
Abordagens para Problemas Intratáveis Katia S. Guimarães
Transcrição da apresentação:

Formas de representação e manipulação básica Algoritmos em Grafos Formas de representação e manipulação básica Prof. André Renato 1º Semestre / 2012

Estrutura de dados Relembrando: um grafo é um conjunto de vértices interconectados por arestas. Existem, portanto, dois tipos de informações a serem armazenadas na memória do computador. O objetivo de toda estrutura de dados é armazenar informações da forma mais eficiente possível. O que é ser eficiente????

Estrutura de dados Em computação, o termo eficiência é muito abrangente, podendo significar coisas distintas e, por vezes, antagônicas: Tempo computacional Espaço de memória Poucas linhas de código Algoritmo de fácil compreensão

Estrutura de dados Para cada objetivo, normalmente, é possível propor uma estrutura e dados otimizada. Portanto, a grande pergunta fica: qual a melhor estrutura para um grafo? Difícil responder sem conhecer o grafo e sua aplicação principal. É muito comum cada aplicação distinta funcionar melhor com estruturas diferentes.

Estruturas de dados Existem, tradicionalmente, duas estruturas mais comuns que são utilizadas para se resolver os problemas mais clássicos relacionados a grafos. Matriz de adjacências Lista de adjacências

Matriz de adjacências Consiste em construir uma matriz R = (rij) de tamanho n x n tal que: rij = 1,se e somente se (i,j)  E; rij = 0, caso contrário; 1 2 1 2 3 4 5 1 0 1 1 0 0 2 1 0 1 0 1 3 1 1 0 1 1 4 0 0 1 0 0 5 0 1 1 0 0 3 4 5

Matriz de adjacências Cada matriz representa um único grafo (não há ambiguidade) e pode ser manipulada facilmente pelo computador. Características: É simétrica para grafos não-direcionados; A quantidade de “1” é igual ao dobro de arestas; Consome O(n2) de memória;

Matriz de adjacências Para grafos direcionados, a matriz deixa de ser simétrica, pois a existência de uma conexão partindo de um vértice i e chegando a um vértice j não implica na situação contrária; Para grafos ponderados, pode-se substituir o valor “1” pelo peso da respectiva aresta;

Matriz de adjacências A representação por matriz apresenta uma interessante relação com o problema de isomorfismo: Uma matriz representa um único grafo, como já foi dito, mas um grafo pode ser representado por diversas matrizes:

Matriz de adjacências Exemplo: 1 2 3 4 5 1 2 3 4 5 1 0 1 1 0 0 1 0 1 1 0 0 2 1 0 1 0 1 3 1 1 0 1 1 4 0 0 1 0 0 5 0 1 1 0 0 1 3 2 4 5 1 0 1 1 0 0 3 1 0 1 1 1 2 1 1 0 0 1 4 0 1 0 0 0 5 0 1 1 0 0 2 5 3 4 1 2 0 1 1 0 1 5 1 0 1 0 0 3 1 1 0 1 1 4 0 0 1 0 0 1 1 0 1 0 0

Matriz de adjacências O exemplo pode não fazer sentido quando os vértices são representados por números. Não temos motivos pensar no vértice 3 posicionado na linha 5, ou o vértice 1 na segunda linha. Porém, nem todos os vértices são representados por números. Em algumas situações ele podem ser representados por nomes (grafos rotulados).

Matriz de adjacências Exemplo: Venezuela Colômbia Brasil Uruguai Peru Ven. Peru Col. Brasil Uru. Ven 0 0 1 1 0 Peru 0 0 1 1 0 Col. 1 1 0 1 0 Brasil 1 1 1 0 1 Uru. 0 0 0 1 0 Col. Brasil Peru Ven. Uru. Col. 0 1 1 1 0 Brasil 1 0 1 1 1 Peru 1 1 0 0 0 Ven. 1 1 0 0 0 Uru. 0 1 0 0 0 Como criar uma matriz assim?

Matriz de adjacências Como diversas matrizes podem representar um único grafo, o problema de isomorfismo pode ser enunciado de outra forma: Dadas duas matrizes de adjacências R1 e R2, representam elas o mesmo grafo? Como solucionar????

Lista de adjacências Nesta forma de representação, existe uma lista principal contendo todos os vértices do grafo. Cada elemento da lista principal contém uma nova lista indicando quais são os vértices adjacentes ao vértice em questão.

Lista de adjacências Exemplo: 1 2 3 1 2 2 1 3 5 3 3 1 2 4 5 4 5 4 3 5

Lista de adjacências Para grafos direcionados, a informação sobre a existência da aresta não estará duplicada; Para grafos ponderados, deve-se acrescentar um campo a mais em cada elemento das listas, indicando o peso da aresta; Em grafos rotulados, deve-se acrescentar aos elementos da lista principal o nome do vértice;

Lista de adjacências O consumo de memória deve levar em conta a lista principal e as demais; Logo, temos O(n) para a lista principal e O(m) para as demais listas; O consume de memória é O(n+m). O que acontece se o grafo for completo???

Lista x Matriz O principal fator determinante na escolha da representação é a quantidade de arestas do grafo. Esta característica é chamada de esparsidade do grafo. Grafos esparsos devem utilizar lista de adjacências e grafos densos, matrizes. Como determinar a esparsidade???

Resumo Representação Lista Matriz Indicação Grafos esparsos Grafos densos Memória O(n+m) O(n2) Rótulos Na própria lista Em outra estrutura Pesos das arestas Na própria matriz Pesos dos vértices Em outra estrutura*

Exercícios Determinar a complexidade de: Descobrir se existe adjacência (i,j) Descobrir se um vértice é desconexo Descobrir o grau de um vértice (não- direcionado) Descobrir o grau de entrada de um vértice Descobrir o grau de saída de um vértice Adicionar/remover uma aresta Adicionar/remover um vértice