matemÁtica discreta para engenharia de...
TRANSCRIPT
MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃOProfa. Kathya Collazos Linares
*As aulas baseiam-se no material do Professor Antonio Alfredo Ferreira Loureiro; Jorge Figueiredo e Judith Gersting
Árvore
Definição: Uma árvore (também chamada de árvorelivre) é um grafo não dirigido acíclico e conexo.
Árvore
Dado um grafo G as seguintes proposições são equivalentes:
1. G é uma árvore.
2. G é conexo e não tem ciclos.2. G é conexo e não tem ciclos.
3. Entre cada par de vértices de G existe um único caminho.
4. G é conexo com ordem n e tamanho n-1.
5. G é conexo, mas G-e não é conexo para toda aresta e quepertence a E(G).
6. G é acíclico, mas G + uv contém um ciclo para todo par u, v
de vértices independentes.
Árvore geradora
Definição: Uma árvore geradora de um
grafo G é um grafo que contém cada
vértice de G e é uma árvore.
�Proposição:
� Cada grafo conexo tem uma árvore
geradora.
� Duas árvores geradores quaisquer de um
grafo têm a mesma quantidade de
arestas.
Árvore geradora
Seja o grafo G
abaixo Este grafo possui o circuito
v2v1v4v2.
A remoção de qualquer uma dastrês arestas do circuito leva a uma
V5 V4 V3
três arestas do circuito leva a umaárvore.
Assim, todas as três árvores geradoras são:
V2V0 V1
V0
V5 V4
V1 V2
V3
V0 V1 V2
V3V4V5
V0 V1 V2
V3V4V5
AM D
Seja o grafo G:
AM
DM
Uma árvore geradora é:
Árvore Geradora
M
C
D
I
L
N
S
D
I
L
N
S
C
Árvore geradoraComo encontrar uma árvore geradora?
Para encontrar uma árvore geradora:
��Se o grafo G não tem ciclos, G é uma árvore
geradora
�Se G tem ciclo, é necessário remover
recursivamente arestas (até achar uma árvore),
mantendo o grafo conectado.
Árvore geradoraComo encontrar uma árvore geradora?
Árvore geradora mínimaMinimal Spanning Tree (MST)
�Em muitas das aplicações de relações com
conexões simétricas. O grafo da relação
modela uma situação na qual as arestas
assim como os vértices carregam assim como os vértices carregam
informação.
�O grafo ponderado é um grafo no qual cada
aresta é etiquetada com um valor
numérico denominado peso.
Árvore geradora mínimaMinimal Spanning Tree (MST)
� Cidade de “Oz” onde
as trilhas do circuito
de trens entre os
H
B D6
6
2
pontos turísticos
formam um grafo
ponderado, os pesos
indicam a distância
em quilômetros.
A
F
C
E
G
3 3
3
4
4
5
5
6
2
Árvore geradora mínimaMinimal Spanning Tree (MST)
� Os pesos de uma aresta (vi, vj) é algumas vezes
referenciada como a distância entre vértices vi e
vj.
� Um vértice u é um vizinho próximo do vértice v� Um vértice u é um vizinho próximo do vértice v
se u e v são adjacentes e não há nenhum outro
vértice unido a v por uma aresta de peso menor
do que (u,v).
� Note que v pode ter mais do que um vizinho
próximo.
Árvore geradora mínimaMinimal Spanning Tree (MST)
Definição: Um grafo com peso é um grafo onde cada aresta
possui um peso representado por um número real. A soma
de todos os pesos de todas as arestas é o peso total do grafo.
Uma árvore geradora mínima para um grafo com peso é
uma árvore geradora que tem o menor peso total possíveluma árvore geradora que tem o menor peso total possível
dentre todas as possíveis árvores geradoras do grafo.
Se G é um grafo com peso e e uma aresta de G
então:
• w (e) indica o peso da aresta e,
• w (G) indica o peso total do grafo G.
Árvore geradora mínimaMinimal Spanning Tree (MST)
O grafo de rotas da companhiaaérea que recebeu permissãopara voar pode ser “rotulado”com as distâncias entre ascidades:
Uma companhia aérea recebeupermissão para voar nas seguintesrotas:
DAA
D
A
MD
I
L
N
S
C
355
695
262
269
242
151
230306
83
348
74
AD
I
S
MD
I
L
N
S
C
I
S
Árvore geradora mínimaMinimal Spanning Tree (MST)
A companhia deseja voar para todas as cidades mas usando um
conjunto de rotas que minimiza o total de distâncias
percorridas:
�Precisa-se determinar a árvore geradora
�A árvore geradora deve ser mínima A�A árvore geradora deve ser mínima
MD
I
L
N
S
C695
269
242
151
306
83
74
A
I
S
A
MD
I
L
N
S
C
355
262
242151
230
83
74
AA
I
S
Algoritmos para obter a árvore geradora mínima
�Algoritmo de Prim.
�Algoritmo de Kruskal.
Grafo inicial: Árvore geradora mínima:
AM
D
I
L
N
S
C
355
695
262
269
242
151
230306
83
34874
AA
IS
AM
D
I
L
N
S
C
355
262
242151
230
83
74
AA
IS
Algoritmo de Prim
Idéia básica:
•Passo 1: Escolher o vértice v1 de G. Seja V = {v1 } e E = { }
•Passo 2: Escolher o vizinho próximo de v1 de V que•Passo 2: Escolher o vizinho próximo de v1 de V queseja adjacente a v1, (p.e. vj ∈ V) e para o qual a aresta(v1, vj) não forma ciclo com os membros de E.Adicionar vj para V e adicionar (v1, vj) para E
•Passo 3: Repetir 2 até todos os vértices sejamvisitados. Logo V contém todos os vértices de G e Econtém todas as arestas da MST de G
Algoritmo de Prim
a b c d e f g h i
a 0 4 x x x x x 8 x
b 4 0 8 x x x x 11 x
c x 8 0 7 x 4 x x 2
d x x 7 0 9 14 x x x
e x x x 9 0 10 x x x
f x x 4 14 10 0 2 x x
g x x x x x 2 0 1 6
h 8 11 x x x x 1 0 7
i x x 2 x x x 6 7 0
Algoritmo de Prim
a b c d e f g h i
a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
Algoritmo de Prim
a b c d e f g h i
a 0a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[a]E=[ ]
|V|=9-1=8
Algoritmo de Prim
a b c d e f g h i
a 0
V=[a]E=[ ]V=[a, b]E=[ ab,]
a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
|V|=8-1=7
Algoritmo de Prim
a b c d e f g h i
a 0a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b]E=[ab, ]V=[ a,b,c]E=[ab,bc]
|V|=7-1=6
Algoritmo de Prim
a b c d e f g h i
a 0a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c]E=[ab, bc ]V=[ a,b,c,i]E=[ab,bc,ci]
|V|=6-1=5
Algoritmo de Prim
a b c d e f g h i
a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c,i]E=[ab, bc,ci ]V=[ a,b,c,i,f]E=[ab,bc,ci, cf]
|V|=5-1=4
Algoritmo de Prim
a b c d e f g h i
a 0a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c,i,f]E=[ab, bc,ci,cf ]V=[ a,b,c,i,f,g]E=[ab,bc,ci, cf,fg]
|V|=4-1=3
Algoritmo de Prim
a b c d e f g h i
a 0a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c,i,f,g]E=[ab, bc,ci,cf,fg ]V=[ a,b,c,i,f,g,h]E=[ab,bc,ci, cf,fg,gh]
|V|=3-1=2
Algoritmo de Prim
a b c d e f g h i
a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c,i,f,g,h]E=[ab, bc,ci,cf,fg,gh ]V=[ a,b,c,i,f,g,h,d]E=[ab,bc,ci, cf,fg,gh, cd]
|V|=2-1=1
Algoritmo de Prim
a b c d e f g h i
a 0
b 4 0
c x 8 0
d x x 7 0
e x x x 9 0
f x x 4 14 10 0
g x x x x x 2 0
h 8 11 x x x x 1 0
i x x 2 x x x 6 7 0
V=[ a,b,c,i,f,g,h,d]E=[ab, bc,ci,cf,fg,gh, cd ]V=[ a,b,c,i,f,g,h,d,e]E=[ab,bc,ci, cf,fg,gh, cd, de]
|V|=1-1=0
Algoritmo de Kruskal
Idéia básica:
• Passo 1: Ordenar as arestas por ordem crescente docomprimento (ou custo), sendo os desempates feitoscomprimento (ou custo), sendo os desempates feitosarbitrariamente, formando uma lista.
• Passo 2: Selecionar a primeira aresta da lista. Seoriginar um ciclo, retirá-la da lista e voltar ao início doPasso 2. Caso contrário, adicioná-la à árvore e retirá-lada lista
• Passo 3: Repetir o passo 2 até que a árvore estejaformada (todos os vértices conectados).
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal
Algoritmo de Kruskal