Você está na página 1de 52

GRAFOS E ALGORITMOS

TEORIA DE GRAFOS
1a. PARTE

Prof. Ronaldo R. Goldschmidt


rribeiro@univercidade.br
ronaldo_goldschmidt@yahoo.com.br
ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. FUNDAMENTOS

3. CONECTIVIDADE

4. GRAFOS EULERIANOS

5. GRAFOS HAMILTONIANOS

6. PLANARIDADE

7. DIGRAFOS
ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. FUNDAMENTOS

3. CONECTIVIDADE

4. GRAFOS EULERIANOS

5. GRAFOS HAMILTONIANOS

6. PLANARIDADE

7. DIGRAFOS
1. INTRODUÇÃO E MOTIVAÇÃO

Um grafo é um conjunto de pontos (vértices) e um conjunto de


linhas (arestas) que ligam estes pontos.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5
1. INTRODUÇÃO E MOTIVAÇÃO

São muitas as aplicações de grafos em problemas práticos:

Definição de Rotas
1. INTRODUÇÃO E MOTIVAÇÃO

São muitas as aplicações de grafos em problemas práticos:

Modelagem de Circuitos Lógicos


1. INTRODUÇÃO E MOTIVAÇÃO

São muitas as aplicações de grafos em problemas práticos:

Modelagem de Sistemas
1. INTRODUÇÃO E MOTIVAÇÃO

São muitas as aplicações de grafos em problemas práticos:

Planejamento e Gerenciamento de Projetos

Tarefa 2 Tarefa 3

Tarefa 1
Tarefa 4
1. INTRODUÇÃO E MOTIVAÇÃO

São muitas as aplicações de grafos em problemas práticos:

Espeificação de Máquinas de Estados


ROTEIRO

1. INTRODUÇÃO E MOTIVAÇÃO

2. FUNDAMENTOS

3. CONECTIVIDADE

4. GRAFOS EULERIANOS

5. GRAFOS HAMILTONIANOS

6. PLANARIDADE

7. DIGRAFOS
2. FUNDAMENTOS

Def: Um grafo G é uma tripla (V(G), E(G), G), onde V(G)


conjunto não vazio de vértices, E(G) conjunto de arestas e G
função de incidência que associa a cada aresta de G um par não
ordenado de vértices de G.
v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

V(G) = {v1, v2, v3, v4, v5} E(G) = {e1, e2, e3, e4, e5, e6, e7, e8}
2. FUNDAMENTOS

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

V(G) = {v1, v2, v3, v4, v5} E(G) = {e1, e2, e3, e4, e5, e6, e7, e8}

G(e1) = v1v2; G(e2) = v2v3; G(e3) = v3v3; G(e4) = v3v4;


G(e5) = v2v4; G(e6) = v4v5; G(e7) = v2v5; G(e8) = v2v5.
2. FUNDAMENTOS

Def: Um grafo G é planar se admite uma representação plana


(não há cruzamento de arestas).

Exemplo:

Representação não planar, mas o grafo é planar.


2. FUNDAMENTOS

Def: Uma aresta é incidente aos dois vértices em seus extremos.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

A aresta e1 é incidente em v1 e v2
2. FUNDAMENTOS

Def: Dois vértices incidentes a uma aresta comum são chamados


de vértices adjacentes.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

Os vértices v1 e v2 são adjacentes pois possuem uma aresta comum:


e1
2. FUNDAMENTOS

Def: Duas arestas incidentes a um vértice comum são chamadas


de arestas adjacentes.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

As arestas e1, e5, e2, e7, e8 são adjacentes pois possuem um vértice
comum: v2
2. FUNDAMENTOS

Def: Uma aresta que liga um vértice a ele mesmo é chamada de


loop.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

A aresta e3 é um loop pois liga v3 a ele mesmo.


2. FUNDAMENTOS

Def: Duas arestas com vértices incidente idênticos são chamadas


de arestas paralelas.

v2
e1
e8
v1 e2
e7
e5
Exemplo:
e4 e3
v3

v4 e6
v5

As arestas e7 e e8 são arestas paralelas pois ambas incidem em v2 e


v5.
2. FUNDAMENTOS

Def: Um grafo que não possui loops e nem arestas paralelas é


chamado de grafo simples.

v2
e1
v1 e2
e7
e5
Exemplo:
e4
v3

v4 e6
v5
2. FUNDAMENTOS

Representação de Grafos – Matriz de Incidência

Seja G um grafo com n vértices e m arestas. In  m é a matriz de


incidência de G tal que cada elemento (i,j) de I denota o número
de vezes que vi e ej são incidentes.
e1
e1 e2 e3 e4 e5 e6 e7
e2
v1 v2
v1 1 1 0 0 1 0 1
e5
e7 e3
v2 1 1 1 0 0 0 0
v4
v3
e4 v3 0 0 1 1 0 0 1

v4 0 0 0 1 1 2 0
e6
2. FUNDAMENTOS

Representação de Grafos – Matriz de Adjacência

Seja G um grafo com n vértices e m arestas. An  n é a matriz de


adjacência de G tal que cada elemento (i,j) de A denota o número
de arestas que unem vi e vj.
e1
v1 v2 v3 v4
e2
v1 v2
v1 01 21 1 1
e5
e7 e3
v2 21 01 1 0
v4
v3
e4 v3 1 1 0 1

v4 1 0 1 1
e6
2. FUNDAMENTOS

Def: Um grafo é completo se para cada par de vértices, existir


somente uma aresta que os una. Notação: Kn

Exemplo de grafo completo: K4


2. FUNDAMENTOS

Def: Um grafo é chamado bipartido (bipartite) se o seu conjunto


de vértices puder ser particionado em dois subconjuntos X e Y,
tal que cada aresta tenha uma extremidade em X e a outra em Y.

Exemplo de grafo bipartido:


2. FUNDAMENTOS

Def: Um grafo é chamado bipartido completo se ele for bipartido


e se todos os vértices de X estiverem ligados a todos os vértices de
Y (por meio de uma única aresta para cada par de vértices).
Notação: Kn,m

Exemplo de grafo bipartido completo: K2,2


2. FUNDAMENTOS

Verifique se os grafos abaixo são: a) bipartidos; b) completos

Bipartido Completo: K1,1

Bipartido não completo

Bipartido Completo: K2,3


2. FUNDAMENTOS

Verifique se os grafos abaixo são: a) bipartidos; b) completos

a f
a c e f g
g

b d

c e b d

Bipartido Completo: K2,5


2. FUNDAMENTOS

Verifique se os grafos abaixo são: a) bipartidos; b) completos

a f
g

b d

c e

Não é Bipartido
2. FUNDAMENTOS

Outras Definições:
Vértice  Nó  Nodo

Aresta  Arco  Conexão

Grafo Rotulado:
2. FUNDAMENTOS

Def: Dois grafos G e H são idênticos (G=H) se V(G)=V(H) e


E(G)=E(H)

G: H:
a c e f g
a f
g

b d

b d
c e

G e H são idênticos, embora possuam representações diferentes


2. FUNDAMENTOS

Def: Dois grafos G e H são isomorfos (GH) se existirem duas


funções f: V(G) V(H) e g: E(G) E(H), ambas bijetoras tais
que: se a aresta uv  E(G), então f(u)f(v)  E(H) para todo par
de vértices de G e H.

G: H:
v2

c
v4
v3 b d e
v1
v5 a

G e H não são idênticos (vértices diferentes). Eles são isomorfos?


2. FUNDAMENTOS

G: H:
v2

c
v4
v3 b d e
v1
v5 a

f(v3)=c f(v1)=e g(v3v3)=f(v3)f(v3)=cc g(v3v4)=f(v3)f(v4)=cb


f(v2)=d f(v4)=b g(v2v5)=f(v2)f(v5)=da g(v4v5)=f(v4)f(v5)=ba
f(v5)=a g(v2v3)=f(v2)f(v3)=dc g(v1v2)=f(v1)f(v2)=ed
g(v2v4)=f(v2)f(v4)=db

G e H são distintos (vértices diferentes), mas são isomorfos.


2. FUNDAMENTOS

Def: Um grafo H é um subgrafo de G se V(H)  V(G) e E(H) 


E(G). H é um subgrafo próprio de G se H for um subgrafo de G e
HG.

G: H:
v2 v2

v4 v4
v3 v3
v1 v1
v5 v5

G e H são idênticos. H é subgrafo de G e G é subgrafo de H.


2. FUNDAMENTOS

Def: Um grafo H é um subgrafo de G se V(H)  V(G) e E(H) 


E(G). H é um subgrafo próprio de G se H for um subgrafo de G e
HG.

G: H:
v2 v2

v4 v4
v3 v3
v1
v5 v1 v5

H é subgrafo próprio de G.
2. FUNDAMENTOS

Def: Um grafo H é um subgrafo de G se V(H)  V(G) e E(H) 


E(G). H é um subgrafo próprio de G se H for um subgrafo de G e
HG.

G: H:
v2 v2

v4 v4
v3 v3
v1
v5 v1 v5

H não é subgrafo de G.
2. FUNDAMENTOS

Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é


chamado subgrafo gerador de G.

G: H:
v2 v2

v4 v4
v3 v3
v1 v1
v5 v5

G e H são idênticos. H é subgrafo gerador de G e vice-versa.


2. FUNDAMENTOS

Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é


chamado subgrafo gerador de G.

G: H:
v2 v2

v4 v4
v3 v3
v1
v5 v1 v5

H é subgrafo gerador de G.
2. FUNDAMENTOS

Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é


chamado subgrafo gerador de G.

G: H:
v2 v2

v4 v4
v3 v3
v1
v5 v5

H é subgrafo de G, mas H não é subgrafo gerador de G.


2. FUNDAMENTOS

Def: Grau de um vértice v é o número de arestas incidentes em v.


Notação: dG(v)

G:
v2

v4
v3
v1
v5

dG(v1) = 1; dG(v2) = 5; dG(v3) = 4; dG(v4) = 3; dG(v5) = 3


2. FUNDAMENTOS

Teorema: d
vV ( G )
G (v )  2 n

Onde n é o número de arestas.

G:
v2

v4
v3
v1
v5

n = 8  2n=16: dG(v1) + dG(v2) + dG(v3) + dG(v4) + dG(v5) = 16


2. FUNDAMENTOS

Teorema: d
vV ( G )
G (v )  2 n

Onde n é o número de arestas.

Demonstração:
Cada aresta contribui com grau 2 (um grau em cada vértice que
ela une).
Assim, o somatório dos graus do grafo é 2n.
2. FUNDAMENTOS

Teorema: Em todo grafo o número de vértices com grau ímpar é


par.

Demonstração:
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex1: Conhecendo a matriz de adjacência de um grafo (com n


vértices), faça um algoritmo que verifique se este grafo
possui loops.

Função testa_loops()
Para i variando de 1 até n faça
se AG[i,i] = 1 então
retorne Verdade;
fim-se;
fim-para
retorna (Falso)
Fim testa_loops
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex2: Conhecendo a matriz de adjacência de um grafo (com n


vértices), faça um algoritmo que verifique se este grafo
possui arestas paralelas.

paralelas := não;
para i:= 1 até n
para j:= 1 até n
se AG[i,j]  2 então
paralelas := sim; i:=n; j:=n;
fim-se;
fim-para
fim-para
retorna (paralelas);
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex3: Conhecendo a matriz de adjacência de um grafo (com n


vértices), faça um algoritmo que verifique se este é um
grafo simples.
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex4: Conhecendo a matriz de incidência de um grafo (com n


vértices e m arestas), faça um algoritmo que verifique se
este grafo possui loops.

loops := não;
para i:= 1 até n
para j:= 1 até m
se IG[i,j] = 2 então
loops := sim; i:=n; j:=n;
fim-se;
fim-para
fim-para
retorna (loops);
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex5: Conhecendo a matriz de incidência de um grafo (com n


vértices e m arestas), faça um algoritmo que verifique se
este grafo possui arestas paralelas.
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex6: Conhecendo a matriz de incidência de um grafo (com n


vértices e m arestas), faça um algoritmo que verifique se
este é um grafo simples.
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex7: Conhecendo as matrizes de adjacência de dois grafos G


(com n vértices) e H (com m vértices), faça um algoritmo
que verifique se estes grafos são idênticos.
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex8: Verifique se são isomorfos os grafos abaixo:

a)

v1 v2 v2

v4
v4 v3
v3 v1
v5

v5
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex8: Verifique se são isomorfos os grafos abaixo:

b)

v1 v2 b

e
v4 c
v3 a
d

v5
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex8: Verifique se são isomorfos os grafos abaixo:

c)

v1 v2 b

e
v4 c
v3 a
d
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE

Ex8: Verifique se são isomorfos os grafos abaixo:

d)

v1 v7 a c e f g
v6

v4
v2

v3 v5 b d

Você também pode gostar