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

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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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