![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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.com.br/reader033/viewer/2022051812/602d2e3f6185973040788512/html5/thumbnails/18.jpg)
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