Você está na página 1de 63

ALGORITMOS EM

GRAFOS
REPRESENTAÇÃO
E OPERAÇÕES

PUC MINAS SISTEMAS DE INFORMAÇÃO


2

¨ Este material é utilizado como material auxiliar para o professor, não


constituindo única fonte de estudo do aluno.

¨ O aluno deve utilizar como fonte de estudo:


¤ Livros citados na bibliografia constante no Plano de Ensino da
disciplina;
¤ Aulas ministradas em sala de aula;
¤ Textos complementares disponibilizados pela professora;
¤ Slides.

PUC Minas – Sistemas de Informação – Algoritmos em Grafos


Representação de grafos
3

¨ Como representar um grafo em uma estrutura de


dados, de modo que possamos executar algoritmos
diversos neste grafo?
Representação de grafos
4

¨ Principais estruturas de dados:


¤ Matriz de adjacência
¤ Lista de adjacência

¤ Matriz de incidência
Matriz de adjacência
5

¨ Dado n = |G|, criar uma matriz n x n.

¨ A posição [u,v] da matriz conterá 0 se não há aresta


entre vu e vv, ou um valor não nulo se houver
Matriz de adjacência
1 2 3 4 5 6
1 0 1 0 0 1 1
2 1 0 0 1 1 0
3 0 0 0 1 0 0
4 0 1 1 0 1 1
5 1 1 0 1 0 0
6 1 0 0 1 0 0

6
Matriz de adjacência
1 3 1 2 3 4 5 6
1 8
1 0 4 0 0 1 1
4 1
1 2 4 0 0 1 1 0
1
3 0 0 0 3 0 0
4 0 1 3 0 8 1
Se as arestas tiverem
pesos, suas posições
5 1 1 0 8 0 0
poderiam ter estes valores 6 1 0 0 1 0 0

7
Matriz de adjacência - grafo
direcionado 1 2 3 4 5 6
1 0 0 0 0 0 0
1 2
2 0 0 0 0 0 0
3 0 1 0 0 0 0
4 3
4 1 1 1 0 0 0
5 6 5 0 0 0 1 0 1
6 0 0 0 1 0 0

8
Lista de adjacência
7

¨ A lista de adjacência é composta por um vetor V de


dimensão n. Cada elemento de V contém dois
campos: a identificação de um vértice e um ponteiro
para uma lista encadeada contendo os vizinhos do
vértice correspondente
Lista de adjacência
10

¨ Cada vértice é um elemento de uma lista

¨ Cada vértice contém uma lista de arestas, indicando


o outro par que a compõe
Lista de adjacência
¨ Em grafo dirigido:
Este grafo pode ser representado
Seja o grafo dirigido abaixo: por uma lista de adjacência Adj:
Lista de adjacência

Este grafo pode ser Este grafo pode ser


representado por uma lista representado por uma lista
de adjacência: de adjacência:
Lista de adjacência
¨ Em grafo não dirigido:
Dado o grafo: Este grafo pode ser representado
por uma lista de adjacência Adj:
Matriz de incidência
6

¨ Uma matriz A = [akj] de dimensão m X n é


denominada matriz de incidência de um grafo
G=(N,M) quando:
aki = +1, se a aresta Uk tem origem no vértice i
aki = -1, se i é o vértice destino da aresta Uk
aki = 0, se a aresta Uk não incide no vértice i
Matriz de incidência grafo
direcionado 1 2 3 4 5 6

u1 u1 0 -1 1 0 0 0
2 3
u2 u2 0 -1 0 1 0 0
1
u3 u3 1 0 0 -1 0 0
4 u6
u4 0 0 0 -1 1 0
u4
6 u5 0 0 0 0 1 -1
u5
5
u6 0 0 -1 0 0 1

15
Matriz de incidência grafo não
direcionado 1 2 3 4 5 6

u1 u1 0 1 1 0 0 0
2 3
u2 u2 0 1 0 1 0 0
1
u3 u3 1 0 0 1 0 0
4 u6
u4 0 0 0 1 1 0
u4
6 u5 0 0 0 0 1 1
u5
5
u6 0 0 1 0 0 1

16
Exercício 1:
17

¨ Represente o grafo abaixo usando matriz de


adjacência e lista de adjacência:
Exercício 1: Matriz de adjacência
18

0 1 2 3 4 5 6 7
0 0 1 0 0 0 8 0 0
1 1 0 4 0 0 5 0 0
2 0 4 0 6 7 0 0 0
3 0 0 6 0 3 0 2 0
4 0 0 7 3 0 2 0 0
5 8 5 0 0 2 0 0 0
6 0 0 0 2 0 0 0 0
7 0 0 0 0 0 0 0 0
Exercício 1: Lista de adjacência
19

V0 = [v1, v5]
V1 = [v0, v2, v5]
V2 = [v1, v3, v7]
V3 = [v2, v6, v4]
V4 = [v5, v3, v7]
V5 = [v0, v1, v4]
V6 = [v3]
V7 = [ ]
Exercício 2:
20

¨ Desenhe um grafo que poderia ser representado


pela matriz de adjacência:
v1 v2 v3 v4
v1 0 1 1 0
v2 1 1 0 2
v3 1 0 1 0
v4 0 2 0 0
Exercício 2:
21

V1 V2

V4

V3
Exercício 3:
22

¨ Represente o grafo abaixo usando matriz de


incidência
e1
v1 v2 e2
v3
e4 e5 e3
e6 v5
v4
e7
Exercício 3:

e1 e2 e3 e4 e5 e6 e7
v1 1 0 0 1 0 0 0
v2 1 1 1 0 0 0 0
v3 0 0 1 0 1 0 0
v4 0 0 0 0 0 1 1
v5 0 0 0 0 0 1 1

¨ Se G for um grafo ponderado, as células mij de M


podem armazenar os pesos das arestas de G.
Isomorfismo
8

¨ Dois grafos G e H são ditos isomorfos se existir uma


correspondência um-para-um entre seus vértices e
entre suas arestas, de maneira que as relações de
incidência são preservadas
Isomorfismo
25

¨ Condições necessárias mas não suficientes para que


G e H sejam isomorfos:
¤ mesmo número de vértices
¤ mesmo número de arestas

¤ mesmo número de componentes

¤ mesmo número de vértices com o mesmo grau


Isomorfismo
26

¨ Mostre dois grafos que satisfaçam as condições


anteriores e não são isomorfos
¤ números de vértices, arestas, componentes e de vértices
com o mesmo grau
Isomorfismo
27

¨ Mostre dois grafos que satisfaçam as condições


anteriores e não são isomorfos
¤ números de vértices, arestas, componentes e de vértices
com o mesmo grau
Grafo complementar
28

¨ Seja G = (V,E) um grafo simples, seu grafo


complementar, C(G) ou G, é um grafo formado da
seguinte maneira:
¤ Os vértices de C(G) são todos os vértices de G
¤ As arestas de C(G) são exatamente as arestas que
faltam em G para formarmos um grafo completo
Grafo complementar
29

A
A
E
E

D B
D B

C
C
Grafo complementar
30

A
A
E
E

D B
D B

C
C
Subgrafos
31

¨ Um grafo g é dito ser um subgrafo de um grafo G se


todos os vértices e todas as arestas de g estão em G
Subgrafos
32

¨ Todo grafo é subgrafo de si próprio


¨ O subgrafo de um subgrafo de G é subgrafo de G
¨ Um vértice simples de G é um subgrafo de G
¨ Uma aresta simples de G (com suas extremidades) é
subgrafo de G
Subgrafos
33
¨ Todo grafo é subgrafo de si
próprio
¨ O subgrafo de um subgrafo
de G é subgrafo de G
¨ Um vértice simples de G é um
subgrafo de G
¨ Uma aresta simples de G
(com suas extremidades) é
subgrafo de G
Subgrafos
34
¨ Todo grafo é subgrafo de si
próprio
¨ O subgrafo de um subgrafo
de G é subgrafo de G
¨ Um vértice simples de G é um
subgrafo de G
¨ Uma aresta simples de G
(com suas extremidades) é
subgrafo de G
Subgrafos induzidos por arestas
35

¨ Um subgrafo de G pode ser obtido por um


subconjunto de arestas e seus respectivos vértices
Subgrafos induzidos por vértices
36

¨ Um subgrafo de G pode ser obtido por um


subconjunto de vértices e suas respectivas arestas
Subgrafos disjuntos de arestas
37

¨ Dois (ou mais) subgrafos g1 e g2 de um grafo G são


disjuntos de arestas se g1 e g2 não tiverem arestas
em comum
Subgrafos disjuntos de vértices
38

¨ Dois (ou mais) subgrafos g1 e g2 de um grafo G são


disjuntos de vértices se g1 e g2 não tiverem vértices
em comum
Operação com grafos - União
39

¤ Considere dois grafos G1=(V1,E1) e G2=(V2,E2) onde


V1 e V2 são conjunto distintos, ou seja, V1 ∩ V2 = ∅.

¤ A união G1 ∪ G2 é formada pelo grafo com conjunto


de vértices V1 ∪ V2 e o conjunto de arestas E1 ∪ E2
Exemplo:
n G: VG = {1, 2}; EG = {(1, 2)}
n H: VH = {3, 4}; EH = { }
n G ∪ H: VG ∪ H = {1, 2, 3, 4}; EG ∪ H = {(1, 2)}
Operação com grafos - Soma
40

¤ Considere dois grafos G1=(V1,E1) e G2=(V2,E2) onde V1 e


V2 são conjunto distintos, ou seja, V1 ∩ V2= ∅.
¤ A soma G1 + G2 é formada por G1 ∪ G2 e pelas arestas
ligando cada vértice de G1 a cada vértice de G2.
Exemplo:
¤ G: VG = {1, 2}; EG = {(1, 2)}
¤ H: VH = {3, 4}; EH = { }
¤ G + H:
VG + H = {1, 2, 3, 4}; EG + H = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4)}
Operação com grafos - Soma
41
Operação com grafos - Interseção
42

¨ Sejam G1 = (V1,E1) e G2 = (V2,E2), tem-se:

Ginterseção = G1 ∩ G2 = (V1 ∩ V2 , E1 ∩ E2)


Operação com grafos - Interseção
43

¨ Mostre o grafo resultante da interseção:

∩ =
Operação com grafos - Interseção
44

¨ Mostre o grafo resultante da interseção:

∩ =
Operação com grafos - Ring sum
45

¨ Gring sum = G1 G2 = (V1 V2, E1 E2 )

¨ A operação ring sum consiste na união dos grafos G1


e G2, de modo que a interseção entre eles não seja
incluída
Operação com grafos - Ring sum
46

¨ Mostre o grafo resultante da “ring sum”:

=
Operação com grafos - Ring sum
47

¨ Mostre o grafo resultante da “ring sum”:

=
Operações
48

¨ Remoção de aresta
¤ Se e é uma aresta de um grafo G, denota-se G - e
o grafo obtido pela remoção da aresta e de G
V e W

G G-e
Operações
49

¨
Operações
50

¨ Remoção de vértice

V e W

G G–e-V
Operações
51

¨ Contração de aresta
¤ Denota-se por G/e o grafo obtido pela contração da
aresta e. Significa remover e de G e unir suas duas
extremidades v, w de tal modo que o vértice resultante
seja incidente às arestas originalmente incidentes a v e w
Operações
52

¨ Contração de aresta
Propriedades das operações
53

¨ Propriedades:
¨ G 1 U G2 = G 2 U G1
¨ G 1 ∩ G 2 = G2 ∩ G 1
¨ G 1 G 2 = G2 G 1
¨ GUG = G∩G=G
¨ G G = Ø
Grafo transposto
54

0 1

4
Grafo transposto
55

0 1 0 1

3 3

4 4
Grafo transposto
56

0 1 0 1

3 3

4 4
Grafo transposto
57

0 1 0 1

3 3

4 4
Grafo transposto
58

0 1 0 1

3 3

4 4
Grafo transposto
59

0 1 0 1

3 3

4 Apenas se calcula o transposto de um grafo 4


direcionado
Grafo bipartido
60

¨ Grafo não orientado em que o conjunto de vértices V


pode ser particionado em 2 subconjuntos, V1 e V2,
tais que não existam arestas entre dois vértices de
um mesmo subconjunto
Grafo bipartido
61

¨ Um grafo G diz-se bipartido de tipo (p,q) se for um grafo simples de


ordem p+q e existir uma partição do conjunto de todos os vértices em
dois subconjuntos V1 e V2, com p e q elementos respectivamente, tal
que nenhuma aresta de G tenha ambas as extremidades em V1 nem
ambas as extremidades em V2
Grafo bipartido completo
62

¨ Um grafo bipartido completo é um grafo bipartido tal


que cada vértice de uma partição está associado a
cada vértice da outra partição

¨ O grafo bipartido completo com partições de


tamanho |V1|=m e |V2|=n é chamado Km,n
Grafo bipartido completo
63

¨ Exemplo: K5,3

Você também pode gostar