grafos e algoritmos - apresentação [joão araujo]06_-_grafos_e...exercÍcios – teoria de grafos...
TRANSCRIPT
GRAFOS E ALGORITMOSGRAFOS E ALGORITMOS
TEORIA DE GRAFOS TEORIA DE GRAFOS
1a. PARTE1a. PARTE
Prof. Ronaldo R. [email protected]
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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 1
Tarefa 2 Tarefa 3
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
V(G) = {v1, v2, v3, v4, v5} E(G) = {e1, e2, e3, e4, e5, e6, e7, e8}
2. FUNDAMENTOS
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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).
Representação não planar, mas o grafo é planar.
Exemplo:
2. FUNDAMENTOS
Def: Uma aresta é incidente aos dois vértices em seus extremos.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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.
e1v2
v3
v5v4
v1
e3
e2 e7
e8
e5
e6
e4Exemplo:
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.
ve1
2
v3
v5v4
v1 e2 e7e5
e6
e4Exemplo:
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
v1 v2
v3v4
e2
e3
e4
e5
e6
e7
v1
v2
v3
v4
e1 e2 e3 e4 e5 e6 e7
1
1
0
0
1
1
0
0
0
1
1
0
0
0
1
1
1
0
0
1
0
0
0
2
1
0
1
0
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
v3v4
e2
e3
e4
e5
e6
e7
v1
v2
v3
v4
v1 v2 v3 v4
1
1
1
1
1
1
1
0
1
1
1
0
0
1
1
0
2
2
0
1
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
Bipartido Completo: K2,5
a
b
c
d
e
fg
a
b
c
d
e f g
2. FUNDAMENTOS
Verifique se os grafos abaixo são: a) bipartidos; b) completos
Não é Bipartido
a
b
c
d
e
fg
2. FUNDAMENTOS
Outras Definições:
Vértice Nó Nodo
Grafo Rotulado:
Aresta Arco Conexão
2. FUNDAMENTOS
Def: Dois grafos G e H são idênticos (G=H) se V(G)=V(H) e E(G)=E(H)
a
b
c
d
e
fg
a
b
c
d
e f gG: H:
G e H são idênticos, embora possuam representações diferentes
2. FUNDAMENTOS
Def: Dois grafos G e H são isomorfos (GH) 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 e H não são idênticos (vértices diferentes). Eles são isomorfos?
v3
G:
v4
v2
v1
v5
H:
a
b
c
d e
2. FUNDAMENTOS
G e H são distintos (vértices diferentes), mas são isomorfos.
v3
G:
v4
v2
v1
v5
H:
a
b
c
d e
f(v3)=cf(v2)=df(v5)=a
f(v1)=ef(v4)=b
g(v3v3)=f(v3)f(v3)=ccg(v2v5)=f(v2)f(v5)=dag(v2v3)=f(v2)f(v3)=dc
g(v3v4)=f(v3)f(v4)=cbg(v4v5)=f(v4)f(v5)=bag(v1v2)=f(v1)f(v2)=edg(v2v4)=f(v2)f(v4)=db
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 HG.
G e H são idênticos. H é subgrafo de G e G é subgrafo de H.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v1
v5
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 HG.
H é subgrafo próprio de G.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v1 v5
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 HG.
H não é subgrafo de G.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v1 v5
2. FUNDAMENTOS
Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é chamado subgrafo gerador de G.
G e H são idênticos. H é subgrafo gerador de G e vice-versa.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v1
v5
2. FUNDAMENTOS
Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é chamado subgrafo gerador de G.
H é subgrafo gerador de G.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v1 v5
2. FUNDAMENTOS
Def: Seja H um subgrafo de G. Se V(H) = V(G) então H é chamado subgrafo gerador de G.
H é subgrafo de G, mas H não é subgrafo gerador de G.
v3
G:
v4
v2
v1
v5
v3
H:
v4
v2
v5
2. FUNDAMENTOS
Def: Grau de um vértice v é o número de arestas incidentes em v. Notação: dG(v)
dG(v1) = 1; dG(v2) = 5; dG(v3) = 4; dG(v4) = 3; dG(v5) = 3
v3
G:
v4
v2
v1
v5
2. FUNDAMENTOS
n = 8 2n=16: dG(v1) + dG(v2) + dG(v3) + dG(v4) + dG(v5) = 16
v3
G:
v4
v2
v1
v5
Teorema:
Onde n é o número de arestas.
)(
2)(GVv
G nvd
2. FUNDAMENTOS
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.
Teorema:
Onde n é o número de arestas.
)(
2)(GVv
G nvd
2. FUNDAMENTOS
Demonstração:
Teorema: Em todo grafo o número de vértices com grau ímpar é par.
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-pararetorna (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é nse AG[i,j] 2 então
paralelas := sim; i:=n; j:=n;fim-se;
fim-parafim-pararetorna (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é mse IG[i,j] = 2 então
loops := sim; i:=n; j:=n;fim-se;
fim-parafim-pararetorna (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:
v3
v4
v2
v1
v5
v1 v2
v3v4
v5
a)
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE
Ex8: Verifique se são isomorfos os grafos abaixo:
ce
b
a
d
v1 v2
v3v4
v5
b)
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE
Ex8: Verifique se são isomorfos os grafos abaixo:
ce
b
a
d
v1 v2
v3v4
c)
EXERCÍCIOS – TEORIA DE GRAFOS – 1a. PARTE
Ex8: Verifique se são isomorfos os grafos abaixo:
d)
v1
v2
v3
v4
v5
v6
v7 a
b
c
d
e f g