Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de...

18
1 Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de dados Cristina Dutra de Aguiar Ciferri Material de aula de Thiago A. S. Pardo M. Cristina de Oliveira Josiane M. Bueno Elaine P. M. de Souza

Transcript of Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de...

Page 1: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

1

Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de dados

Cristina Dutra de Aguiar Ciferri Material de aula de Thiago A. S. Pardo M. Cristina de Oliveira Josiane M. Bueno Elaine P. M. de Souza

Page 2: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

2

Grafos Estruturas de Dados

Listas de Adjacências

Page 3: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

3

Grafos Listas de Adjacências

l  Dado um grafo G = (V, A) , as listas de adjacências L é um conjunto de |V| listas L(v), uma para cada vértice v pertencente a V

l  Cada lista L(v) é denominada lista de adjacências do vértice v e contém os vértices w adjacentes a v em G

l  Ou seja, as listas de adjacências consistem

tradicionalmente em um vetor de |V| elementos que são capazes de apontar, cada um, para uma lista linear

–  O i-ésimo elemento do vetor aponta para a lista linear das arestas que são adjacentes ao vértice i

Page 4: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

4

Grafos Listas de Adjacências

l  Como são as listas de adjacências do grafo a seguir?

5

1 2

4

3

Page 5: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

5

Grafos Listas de Adjacências

1 2 3 4 5

2 5

1 5 3 4

2 4

2 5 3

4 1 2

vértices Listas de adjacências

l  Possível resposta:

em grafos não direcionados, cada

aresta é representada duas vezes

Page 6: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

6

Grafos Listas de Adjacências

l  Como representar o dígrafo abaixo?

5

1 2

4

3

Page 7: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

7

Grafos Listas de Adjacências

1 2 3 4 5

2

4 5

1

3

4

l  Possível resposta:

em grafos direcionados, cada vértice aponta para

os seus vértices adjacentes

Page 8: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

8

Grafos Listas de Adjacências

l  Como representar o grafo direcionado e ponderado abaixo?

5

1 2

4 3

50

10

12 8

0 10

Page 9: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

9

Grafos Listas de Adjacências

l  Possível resposta:

1 2 3 4 5

2

4 5

1

3

4

10

8 12

50

0

10

vértice peso da aresta

em grafos ponderados, cada elemento da lista armazena o rótulo do vértice e o peso da

aresta correspondente

Page 10: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

10

Grafos Listas de Adjacências

l  Características –  maior complexidade na representação de grafos

l  Propriedades –  espaço de armazenamento: O(|V|+|A|) –  teste se aresta (u,v) está no grafo: O(du)

l  grafosnãodirecionados=>du=graudovér3ceul  grafosdirecionados=>du=graudesaídadovér3ceul  du≈|V|paravér3cescommuitasarestas

Page 11: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

11

Grafos Listas de Adjacências

l  Vantagens –  representação útil para grafos esparsos, nos quais |A| é

muito menor do que |V|2 –  representação compacta

l  Desvantagens –  tempo O(|V|) para determinar se existe uma aresta

entre u e v l  podem haver |V| elementos na lista de adjacências de u

listas de adjacências:

representação geralmente usada na maioria das aplicações

Page 12: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

12

Grafos Listas de Adjacências

l  Observações –  Os vértices adjacentes a um vértice i podem ser

armazenados na lista de adjacências de i em ordem arbitrária ou não l  usualmente armazenados de forma arbitrária

–  Como em qualquer estrutura de dados, há liberdade para haver variações na representação l  vetor de vetores l  vetor de listas ligadas l  ... implementação muito comum:

vetor de ponteiros com listas encadeadas dinâmicas

Page 13: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

13

Grafos Listas de Adjacências

l  Exemplo: representação usando vetor de ponteiros com listas encadeadas dinâmicas

1 2 3 4 5

2 4 5

1

3

4

/ 8 12

50

0

10

10 /

/

/

/

Page 14: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

14

Grafos Listas de Adjacências

l  Exemplo: representação usando vetor de ponteiros com listas encadeadas dinâmicas

Pergunta: seria interessante armazenar um ponteiro para o último elemento de cada lista?

1 2 3 4 5

2 4 5

1

3

4

/ 8 12

50

0

10

10 /

/

/

/

Page 15: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

15

Grafos Listas de Adjacências

l  Exemplos de operações básicas –  Criar grafo: cria um grafo G composto de um conjunto de

vértices –  Inserir aresta: insere uma aresta e seu peso no grafo G –  Remover aresta: remove uma aresta do grafo G e retorna o

seu peso –  Verificar a existência de aresta: retorna verdadeiro se a

aresta existe e falso caso contrário –  Imprimir grafo: imprimir os vértices e arestas do grafo G

Page 16: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

16

Grafos Listas de Adjacências

l  Exemplos de operações básicas –  Gerenciar vértices adjacentes

l  Verificar a existência de um vértice adjacente ao vértice v l  Verificar se a lista de vértices adjacentes está vazia l  Retornar o primeiro vértice da lista l  Retornar o próximo vértice adjacente da lista

–  Gerar grafo transposto: cria um grafo transposto GT a partir do grafo G

–  ...

Page 17: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

17

Grafos Comparação

Listas de adjacências Grafos esparsos

Listas de adjacências Rapidez para determinar o grau de um vértice

Matriz de adjacências Rapidez para saber se(x,y) está no grafo

Vencedor Comparação

Page 18: Algoritmos e Estruturas de Dados II Grafos – tipo abstrato de ...wiki.icmc.usp.br/images/c/c4/SCC0603022016GrafosLista.pdf9 Grafos Listas de Adjacências l Possível resposta: 1

18

Grafos Comparação

Listas: Ο(|V| + |A|)

Matriz: Ο(|V|2) Rapidez para percorrer o grafo

Listas de adjacências Melhor na maioria dos problemas

Matriz: O(1) Listas: O(d)

Inserção/remoção de arestas

Matriz de adjacências Grafos densos

Vencedor Comparação