A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Algoritmos em Grafos Formas de representação e manipulação básica Prof. André Renato 1º Semestre / 2012."— Transcrição da apresentação:

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

2 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????

3 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

4 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.

5 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

6 Matriz de adjacências Consiste em construir uma matriz R = (r ij ) de tamanho n x n tal que: r ij = 1,se e somente se (i,j) E; r ij = 0, caso contrário;

7 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(n 2 ) de memória;

8 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;

9 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:

10 Matriz de adjacências Exemplo:

11 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).

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

13 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????

14 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.

15 Lista de adjacências Exemplo:

16 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;

17 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???

18 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???

19 Resumo RepresentaçãoListaMatriz IndicaçãoGrafos esparsosGrafos densos MemóriaO(n+m)O(n 2 ) RótulosNa própria listaEm outra estrutura Pesos das arestasNa própria listaNa própria matriz Pesos dos vérticesNa própria listaEm outra estrutura*

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


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

Apresentações semelhantes


Anúncios Google