Sie sind auf Seite 1von 40

Grafos:

Introduo
Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br

2011 Vinicius Cardoso Garcia

Introduo
Muitas aplicaes necessitam considerar conjuntos de conexes entre pares de objetos
Existe um caminho para ir de um obj. a outro? Qual a menor distncia entre dois objetos? Quantos outros objetos podem ser alcanados a par-r de um dado objeto?

A estrutura de dados GRAFO u-lizada para tais situaes Exemplos de uso:


Links entre pginas web Rotas entre cidades Roteamento de pacotes, chamadas telefnicas etc.
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Denies Bsicas - Grafo


Um grafo cons-tudo de:
Um conjunto de vr-ces Um conjunto de arestas
1 0 2 4 3

5
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Tipos de Grafos: Direo das arestas


Em relao a direo das arestas, os grafos podem ser de dois -pos:
Direcionados No direcionados

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Grafos direcionados
Grafos direcionados permitem arestas de um vr-ce para ele prprio. Exemplo de um grafo direcionado:
V = {0, .., 5}, A = {(0, 1), (1, 2), (2, 2), (2, 3), (3, 0), (0, 3), (5, 4), (1, 3)}
0 1 4

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Grafos no direcionados
No permitem arestas de um vr-ce para ele mesmo Exemplo de um grafo no direcionado:
V = {0, ..., 5} A = {(0, 1), (1, 2), (2, 3), (3, 0), (4, 5), (1, 3) }
0 1 4

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Vr=ces adjacentes
Se (u, v) uma aresta de um grafo G, diz-se que o vr-ce v adjacente ao vr-ce u. Considere o grafo G:
1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Vr=ces Adjacentes Vr=ce 0


O conjunto de vr-ces adjacentes ao vr-ce 0 {4, 5}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Vr=ces Adjacentes Vr=ce 1


O conjunto de vr-ces adjacentes ao vr-ce 1 {5}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

Vr=ces Adjacentes Vr=ce 2


O conjunto de vr-ces adjacentes ao vr-ce 2 {5, 3}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

10

Vr=ces Adjacentes Vr=ce 3


O conjunto de vr-ces adjacentes ao vr-ce 3 {2, 4}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

11

Vr=ces Adjacentes Vr=ce 4


O conjunto de vr-ces adjacentes ao vr-ce 4 {0, 3}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

12

Vr=ces Adjacentes Vr=ce 5


O conjunto de vr-ces adjacentes ao vr-ce 5 {0, 1, 2}.

1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

13

Grau de um vr=ce
Em grafos no direcionados o grau de um vr-ce o nmero de arestas que incidem nele. Em grafos direcionados, o grau de um vr-ce a soma do nmero de arestas de entrada com o nmero de arestas de sada.

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

14

Grau de um vr=ce - GNDs


grau(v0) = 2, grau(v6) = 0, grau(v5) = 3, ...

6 1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

7 2 8

15

Grau de um vr=ce - GDs


grau(v0) = 2, grau(v6) = 0, grau(v5) = 2 + 1 = 3, grau(v2) = 2 + 2 = 4

6 1 0 5 3 4
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

7 2 8

16

Caminhos em um grafo
Um caminho de comprimento k, de um vr-ce a para um vr-ce b uma sequncia de vr-ces (v0, ..., vk), onde v0 = a e vk = b. O comprimento de um caminho dado pelo nmero de arestas no caminho. Se exis-r um caminho de um vr-ce a para um vr-ce b, diz-se que b alcanvel a par-r de a. Um caminho simples se os vr-ces do caminho so dis-ntos.
(0, 1, 2, 3) = simples, (1, 3, 0, 3) != simples
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

17

Ciclos em um grafo
Em um grafo direcionado, um caminho (v0, ..., vk) forma um ciclo se v0 = vk e o caminho contm ao menos uma aresta. Em um grafo no direcionado, um caminho (v0, ..., vk) forma um ciclo se v0 = vk e o caminho contm ao menos trs arestas. Um ciclo simples se os vr-ces so dis-ntos. Um grafo sem ciclos chamado de acclico
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

18

Exemplos: Ciclos em um GND

6 1 0 5 3 4 2 8 7

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

19

Exemplos: Ciclos em um GD

1 0 5 3 4

6 7 2 8

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

20

Exemplos: Ciclos em um GD

1 0 5 3 4

6 7 2 8

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

21

Exemplos: Ciclos em um GD

1 0 5 3 4

6 7 2 8

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

22

Exemplos: Ciclos em um GD

1 0 5 3 4

6 7 2 8

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

23

Exemplo: Um grafo acclico

1 0 5 3 4

6 7 2 8

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

24

Grafos conexos
Um GND conexo se cada par de vr-ces est conectado por ao menos um caminho. Os componentes conexos de um grafo so conjuntos de vr-ces sob a relao alcanvel a par-r de...
...ou seja, so as pores conectadas de um grafo.

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

25

Exemplo: Componentes conexos de um GND

6 1 0 5 3 4 2 8 7

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

26

Grafos isomorfos
So grafos equivalentes em termos de vr-ces e arestas
Informalmente, pode-se converter de um para o outro apenas atravs da mudana dos rtulos dos vr-ces.
0 1 4 5 a b c d

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

27

Sub-Grafos
Um grafo G = (V, A) um sub-grafo de G = (V, A), se:
V for um subconjunto de V A for um subconjunto de A
0 1

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

28

Grafos ponderados
Um grafo ponderado possui pesos associados s suas arestas.
Estes pesos normalmente representam custos ou distncias
70 50 90 150 150
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

80 50

29

Grafo Completo
Um grafo completo um GND no qual todos os pares de vr-ces so adjacentes. Exemplo:

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

30

Representando grafos
As duas representaes mais u-lizadas para grafos so:
Matrizes de adjacncia Listas de adjacncia

Ambas podem ser usadas tanto para GDs quanto para GNDs

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

31

Implementao usando Matrizes de Adjacncia


A matriz de adjacncia de um grafo com n vr-ces uma matriz n x n Nessa matriz, A[i, j] verdadeiro se e somente se exis-r um arco do vr-ce i para j.
Em matrizes ponderadas, pode ser usado o peso de cada aresta como o contedo de A[i, j]

Vantagens:
facilidade de implementao velocidade da obteno das adjacncias.

recomendada para grafos densos, pois pode consumir bastante espao.


Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

32

Exemplo: Matriz de adjacncia


0 0 1 4 0 1 2 3 2 5 3 4 5 T T 1 T T T 2 3 T T T 4 5

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

33

Exemplo: Matriz de adjacncia


0 0 1 4 0 1 2 3 2 5 3 4 5 T T 1 T T T 2 3 T T T 4 5

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

34

Exemplo: Matriz de adjacncia


0 0 1 4 0 1 2 3 2 5 3 4 5 T T 1 T T T 2 3 T T T 4 5

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

35

Exemplo: Matriz de adjacncia


0 0 1 4 0 1 2 3 2 5 3 4 5 T T 1 T T T 2 3 T T T 4 5

hyp://www.x2d.org/java/projects/uschack.jnlp
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

36

Implementao usando Listas de Adjacncia


A implementao de um grafo por listas de adjacncia feita atravs um vetor de adjacncias, contendo uma lista para cada vr-ce do grafo. Os vr-ces adjacentes podem ser armazenados em ordem arbitrria. indicada para grafos esparsos, pois consome menos memria. No entanto, ela pode ser mais lenta na vericao das adjacncias e de implementao mais complicada.
Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

37

Exemplo: Listas de adjacncia


Adj
0 0 1 4 1 2 3 3 2 5 4 5 NULL 4 2 2 0 3 3 1 3

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

38

O TAD Grafo
As operaes mais comuns incluem:
Criar grafo vazio Inserir aresta Vericar se uma dada aresta existe Obter uma lista de vr-ces adjacentes Re-rar uma aresta Liberar grafo Imprimir grafo

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

39

A=vidades Complementares
Leitura do capitulo 22 do livro do Cormen Implemente o TAD Grafo
U-lize inicialmente matrizes de adjacncia como a forma de representao. Implementar o TAD grafos usando listas de adjacncia

Algoritmos e Estrutura de Dados Grafos: Introduo 2011 Vinicius Cardoso Garcia

40