Escolar Documentos
Profissional Documentos
Cultura Documentos
Agosto 2016
Tema # 2 Grafos.
é amigo B
A é amigo
é amigo C
Para Facebook a relação de amizade sempre é simétrica
Definições e
terminologias da
Teoria de Grafos
Definições #1:
Um grafo Não Dirigido G é um par G = (V, A)
onde V é um conjunto finito de elementos que se
denominam Vértices e A é um conjunto de
pares não ordenados <x , y>, onde x, y V,
denominados Arestas ou Arcos.
c d
Definições #2:
Um grafo dirigido G é um par G = (V, A) onde V
é um conjunto finito de elementos que se
denominam Vértices e A é um conjunto de
pares ordenados <x, y>, onde x ,y V,
denominados Arestas ou Arcos.
c d
Definições #3:
Um grafo (dirigido / não dirigido) ponderado G
é um grafo onde à cada uma das arestas se lhe
associa um peso (um valor real positivo).
Exemplo #3 : Grafo Ponderado
G = (V, A)
- V = {a, b, c, d, e}
- A = {<a, b>, <a, e>, <b, e>, <b, d>, <e, c>,
<e, d>, <c, d>}
5
a b
8 4
10
11 e 6
3
c d
Vértices Adjacentes: Num grafo G = (V, A),
um vértice y é adjacente a outro vértice x se
o par é uma aresta do grafo G.
a
i
b c d
Vértices j
Adjacentes
e f g h
Vértices não
Adjacentes
Caminho: Num grafo G = (V, A) um caminho de
longitude n (n 0) é uma sucessão de vértices
v0 , v1, …, vn onde cada vértice vk é adjacente
vk-1 para 1 k n. Neste caso se diz que o
caminho vai de v0 a vn.
Caminhos: a
i
(c, f, e, b, c, a, d, g)
(b, c, f, e, b) b c d
(a, d, g, h) j
e f g h
Caminho simples: Um caminho é simples se
os vértices que o compõem são diferentes
exceto possivelmente o primeiro e o último.
a
i
Caminhos simples:
b c d
(b, c, a, d, g) j
(b, c, f, e, b)
(a, d, g, h) e f g h
Longitude de um caminho: A longitude de um
caminho é o número de arcos que o
compõem.
a a
i
b c d c d
b
j
e f g h e f g h
5. NumeroDeArcos()
Retorna o número de arestas do grafo.
6. EstaOVertice(Vertice)
Retorna verdadeiro se existe um vértice no
grafo igual a Vertice, isto é, se existe um
vértice no grafo cuja informação é igual à
informação armazenada em Vertice.
Retorna falso em caso contrário.
7. EstaOArco( Vertice1, Vertice2)
Retorna verdadeiro se o grafo contém um
par de vértices V1 e V2 tal que:
- V1 é igual a Vértice1
- V2 é igual a Vértice2
- <V1, V2> é um arco
9. InserirArco(Vertice1, Vertice2)
Pré condição: O grafo contém um par de vértices
tal que:
_ V1 é igual a Vértice1
– V2 é igual a Vértice2
–<V1, V2> não é um arco de G.
B C D J
E F G H
B C D J
E F G H
BPP(v)
1BPP(A) A I
B C D J
E F G H
Percurso
A,
1BPP(A) A I
1.1BPP(B) D J
B C
E F G H
Percurso
A,B,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
E F G H
Percurso
A,B,C
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
Percurso
A,B,C,F,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
A I
1BPP(A)
1.1BPP(B) J
B C D
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A
I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
A I
1BPP(A)
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
A
1BPP(A) I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) H
E P
F G
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A I
1.1BPP(B)
J
B C D
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
Percurso
A,B,C,F,E,
A I
1BPP(A)
1.1BPP(B) J
B C D
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
Percurso
A,B,C,F,E,D,
A
1BPP(A) I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
Percurso
A,B,C,F,E,D,G,
A I
1BPP(A)
1.1BPP(B) J
B C D
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
A,B,C,F,E,D,G,H,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Todos os adjacentes a H estão visitados
Percurso
A,B,C,F,E,D,G,H,
1BPP(A) A I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
A,B,C,F,E,D,G,H,
A
1BPP(A) I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Todos os adjacentes a G estão visitados
Percurso
A,B,C,F,E,D,G,H,
A
1BPP(A) I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
A,B,C,F,E,D,G,H,
A
1BPP(A) I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) H
E F G
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Todos os adjacentes a D estão visitados
Percurso
A,B,C,F,E,D,G,H,
A I
1BPP(A)
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
A,B,C,F,E,D,G,H,
1BPP(A) A
I
1.1BPP(B)
B C D J
1.1.1BPP(C)
1.1.1.1BPP(F)
E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Todos os adjacentes a A estão visitados
Percurso
A,B,C,F,E,D,G,H,
PercursoProfundidade
• Para a cada vєV fazer
– Se v não esta visitado então BPP(v)
BPP(A) BPP(I)
A
I
B C D J
E F G H
A
1BPP(A) I
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
2BPP(I) A,B,C,F,E,D,G,H,I,
A
1BPP(A) I
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
Percurso
2BPP(I) A,B,C,F,E,D,G,H,I,J
2.1BPP(j)
A
1BPP(A) I
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G) Todos os adjacentes a
1.2.1.1BPP(H) J estão visitados
2BPP(I)
Percurso
2.1BPP(j) A,B,C,F,E,D,G,H,I,J
A
1BPP(A) I
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
1.2.1.1BPP(H)
2BPP(I)
Percurso
2.1BPP(j) A,B,C,F,E,D,G,H,I,J
A
1BPP(A) I
1.1BPP(B) B C D J
1.1.1BPP(C)
1.1.1.1BPP(F) E F G H
1.1.1.1.1BPP(E)
1.2BPP(D)
1.2.1BPP(G)
Todos os adjacentes a I
1.2.1.1BPP(H) estão visitados
2BPP(I)
Percurso
2.1BPP(j) A,B,C,F,E,D,G,H,I,J
PercursoProfundidade
• Para a cada vєV fazer
– Si v não esta visitado então BPP(v)
A
I
B C D J
E F G H
B C D
E F G H
B C D
E F G H
BPL(v)
BPL(A) IF
• Fila ← Ø
• Marca-se A como
visitado A
I F
• Insere-se A na Fila
A
A
B C D
H
Percurso
E F G
A,
I F
Como a fila não é vazia
u← A
A
I F
elimino A da Fila
A
B C D
E F G H
Adj(A)={ B,C,D}
FI
A Cada Adj(A)={ B,C,D}
Marca-se como visitado
I F
Inserem-se na Fila
B C D
A
B C D
Percurso,
E F G H
A,B,C,D,
I F
Como a fila não é vazia
u← B e
B C D
elimino B da Fila I F
A
C D
B C D
E F G H
B C D
Percurso,
E F G H
A,B,C,D,E,
Como a fila não é vazia I F
u← C
C D E
elimino C da Fila
I F
A
D E
B C D
E F G H
I F
Insere-se F na Fila
A D E F
B C D
Percurso,
E F G H
A,B,C,D,E,F,
I F
Como a fila não é vazia
u← D
D E F
elimino D da Fila I F
A
E F
B C D
E F G H
Inserem-se G e H na Fila
E F GH
A
B C D
H
Percurso,
E F G
A,B,C,D,E,F,G,H
Como a fila não é vazia
I F
u← E
elimino E da Fila E F G H
A
I F
B C D
F G H
E F G H
Como os Adj(E)={B,F}
foram visitados não se faz
nada
Como a fila não é vazia I F
u← F
F G H
Elimino F da Fila I F
A
D
G H
B C
E F G H
Como os Adj(F)={C,E}
foram visitados não se faz
nada
I F
Como a fila não é vazia
u← G
G H
Elimino G da Fila
A
IF
B C D
H
E F G H
Como os Adj(G)={D,H}
foram visitados não se faz
nada
Como a fila não é vazia I F
u← H
H
Elimino H da Fila
I F
A
B C D
E F G H
Como os Adj(H)={D,G}
foram visitados não se faz
nada
PercorridoNaLargura
• …..
• Enquanto Fila não é vazia fazer
• // um conjunto de instruções //
FI
0 1 2 3 4
0 0 1 0 0 1
1 1 0 0 1 1 1 si i adj j
G= 2 0 0 0 1 1 Gi,j =
3 0 1 1 0 1 0 si i não adj j
4 1 1 1 1 0
Lista de vértices
e
Lista de adjacencia
Para o grafo G=(V,E) a B
representação de Lista
de vértices e Listas de A D
adyacencia é:
C
0 1 2 3 V
A B C D
0 1 2 3 E
1 0 3
2 0
3 0 1
Bibliografia
-Estructuras de Datos, Algoritmos y
Programación Orientada a Objetos,
Gregory L. Heileman, Universidad de
Nuevo México, Capítulo 14.
-Estructuras de Datos y Algoritmos,
A. V. Aho, J. E. Hopcroft, J. D.
Ullman, Capítulos 6 y 7