Conceitos Bsicos
Cormen pginas 853 at 861 ou Deo pginas 1 at 23 (mais didtico e detalhado)
Conceitos Bsicos
Grafo uma coleo de vrtices e arestas Vrtice um objeto simples que pode ter nomes e outros atributos Aresta uma conexo entre dois vrtices
e1 V2 e2 e3 e5 V1 e4 V4
V3
Grafo da Amizade
Modelagem:
n=4
e=5
4
No sculo XVIII havia na cidade de Knigsberg um conjunto de sete pontes que cruzavam o rio Pregel. Elas conectavam duas ilhas (A e D) entre si e as ilhas com as margens (B e C).
Por muito tempo os habitantes daquela cidade perguntavamse se era possvel cruzar as sete pontes numa caminhada contnua sem passar duas vezes por qualquer uma delas
5
No desenho abaixo, uma criana diz ter posto a ponta do lpis numa das bolinhas e com movimentos contnuos (sem levantar e sem retroceder o lpis) traou as linhas que formam o desenho da casa, traando cada linha uma nica vez
A me da criana acha que ela trapaceou pois no foi capaz de achar nenhuma seqncia que pudesse produzir tal resultado. Voc concorda com esta me?
7
possvel conectar cada servio a cada uma das trs casas sem que haja cruzamento de tubulaes?
8
Problema de Transporte
Nos problemas que envolvem transportes de carga ou pessoas, os pontos de parada, embarque e desembarque so os vrtices e as estradas entre os pontos so as arestas
Problema de Transporte
Problema de Conectividade: dadas as direes das vias, possvel ir da cidade A at a cidade B, sem andar na contramo? Problema de Fluxo Mximo: dada a capacidade de fluxo em cada via, qual a quantidade de mercadoria que podemos mandar de uma cidade A a uma cidade B? Problema de Menor Caminho: Dados os comprimentos de cada via, qual o percurso mais rpido para sair de uma cidade A e chegar a uma cidade B?
10
Terminologia
Grafo no orientado: G=(V,E) um par onde V um conjunto finito e o conjunto de arestas E consiste em pares de vrtices no orientados. A aresta (vi,vj) e (vj,vi) so consideradas a mesma aresta.
V1 e1 V5 e9 V4 e8 e7 V3 e2 e 3 e4 e5 e6 V2
11
Terminologia
Grafo orientado: G um par (V,E), onde V um conjunto finito e E uma relao binria em V.
V1 e1 V5 e9 V4 e8 e7 V3 e2 e 3 e4 e5 e6 V2
12
Terminologia
Autoloop: uma aresta associada ao par de vrtices (vi,vi) Arestas paralelas: quando mais de uma aresta est associada ao mesmo par de vrtices Grafo simples: um grafo que no possui autoloops e nem arestas paralelas e1 e e2 so arestas paralelas
e2 e1
e3
e3 um autoloop
grafo simples
13
Terminologia
Se (u,v) uma aresta em um grafo G=(V,E), dizemos que o vrtice v adjacente ao vrtice u (em grafo no orientado, a relao de adjacncia simtrica). Se (u,v) uma aresta de um grafo orientado e (v,u) no uma aresta, dizemos que o vrtice v adjacente ao vrtice u, mas u no adjacente a v Se (u,v) uma aresta em um grafo orientado G=(V,E), dizemos que a aresta (u,v) incidente do ou sai do vrtice u e incidente no ou entra no vrtice v Se (u,v) uma aresta em um grafo no orientado G=(V,E) dizemos que a aresta (u,v) incidente nos vrtices u e v
14
Terminologia
O grau de um vrtice em um grafo no orientado o nmero de arestas incidentes nele. Em um grafo orientado, o grau de sada de um vrtice o nmero de arestas que saem dele, e o grau de entrada de um vrtice o nmero de arestas que entram nele. O grau de um vrtice em um grafo orientado seu grau de entrada somado a seu grau de sada
grau do vrtice 2 4
Terminologia
Um grafo no qual todos os vrtices possuem o mesmo grau chamado de grafo regular Um vrtice com nenhuma aresta incidente chamado de vrtice isolado. Um vrtice com grau 1 chamado de vrtice pendente Um grafo sem nenhuma aresta chamado de grafo nulo (todos os vrtices em um grafo nulo so vrtices isolados)
grafo regular
grafo nulo
16
Terminologia
Um grafo no orientado G=(V,E) um grafo completo se para cada par de vrtices vi e vj existe uma aresta entre vi e vj. Em um grafo completo quaisquer dois vrtices distintos so adjacentes (Kn)
K1
K2
K3
K4
K5
K6
K7
K8
17
Terminologia
Um caminho de comprimento k de um vrtice u at um vrtice u em um grafo G=(V,E) uma seqncia <V0,V1,V2,...,Vk> de vrtices tais que u=V0, u=Vk e (Vi-1,Vi) E para i=1,2,...,k O comprimento de um caminho o nmero de arestas no caminho Se existe um caminho de u at u dizemos que u acessvel a partir de v Um caminho simples aquele em que todos os vrtices no caminho so distintos <1,4,5> um caminho simples <1,2,5,3,6,6> no um caminho simples
18
Terminologia
Em um grafo orientado, um caminho <V0,V1,V2,...,Vk> forma um ciclo se V0=Vk e o caminho contm pelo menos uma aresta Ciclo simples um ciclo no qual os vrtices V1,V2,...,Vk so distintos Um autoloop um ciclo de comprimento 1 Um grafo sem ciclos acclico <4,1,2,3,5,2,4> um ciclo <1,2,5,4,1> um ciclo simples
19
Terminologia
Um grafo no orientado conectado se todo par de vrtices est conectado por um caminho Cada um dos subgrafos conectados chamado de componente Os componentes conexos de um grafo so as classes de equivalncia de vrtices sob a relao acessvel a partir de
Terminologia
Um grafo orientado fortemente conectado se cada um de dois vrtices quaisquer acessvel a partir do outro Os componentes fortemente conectados de um grafo orientado so as classes de equivalncia de vrtices sob a relao so mutuamente acessveis
Terminologia
Grafo complementar: seja G = (V,E) um grafo simples. O complemento de G, G , um grafo formado da seguinte maneira: Os vrtices de G so todos os vrtices de G As arestas de G so exatamente as arestas que faltam em G para
formarmos um grafo completo
G
22
Terminologia
Um grafo bipartido um grafo no orientado G=(V,E) em que V pode ser particionado em dois conjuntos V1 e V2 tais que (u,v)E implica que: uV1 e vV2 ou uV2 e vV1 Em um grafo bipartido, todas as arestas ligam um vrtice do conjunto V1 com um vrtice do conjunto V2 a b c d e c d
23
Terminologia
Dois grafos G e H so ditos isomorfos se existir uma correspondncia um-para-um entre seus vrtices e entre suas arestas, de maneira que as relaes de incidncia so preservadas
a e a b c
c b 4 5 3 d
d 1 6
e 2
24
Terminologia
mesmo nmero de vrtices mesmo nmero de arestas mesmo nmero de componentes mesmo nmero de vrtices com o mesmo grau
Exemplo:
5 1 2 3 4 6 a b c
d e f
A soma dos graus de todos os vrtices de um grafo G duas vezes o nmero de arestas de G.
i =1
(vi) = 2 e d
i =1
(vi) = d
d (vj) par
d (vj) +
d (vk)mpar
(vk) d
26
Exerccios
1. Todos os grafos abaixo so isomorfos, exceto:
(a)
(b)
(c)
(d)
(e)
27
Exerccios
2. Com relao ao grafo completo Kn, responda:
a) Qual o grau dos seus vrtices? b) Quantas arestas ele possui?
3. Encontre um grafo com 5 vrtices que seja isomorfo a seu complemento. 4. Qual o nmero de arestas de um grafo que isomorfo a seu complemento?
28
Exerccios
5. Com relao ao grafo abaixo, responda:
v4 v3 v1 a) b) c) d) e) f) g) v2 v6 v5
v7
O grafo simples? Completo? Regular? Conectado? Encontre 2 caminhos simples entre V3 e V6 Encontre 1 ciclo Indique uma aresta cuja remoo tornar o grafo no conectado
29
O nmero mnimo de arestas de um grafo simples com n vrtices e k componentes n-k O nmero mximo de arestas de um grafo simples com n vrtices e k (n k )(n k + 1)
2
Grafo simples
( n k )(n k + 1) nk e
2
30
Estruturas de Dados
31
Matriz de Adjacncias
A matriz de adjacncias de um grafo simples G com n vrtices uma matriz n x n, definida como:
32
Lista de Adjacncias
Consiste de uma lista para cada vrtice do grafo contendo todos os vrtices adjacentes a ele Armazena apenas os elementos diferentes de zero da matriz de adjacncias
Desvantagem: para encontrar se um vrtice adjacente a outro devemos percorrer uma lista encadeada Adequada quando e << n2
33
Matriz de Adjacncias
Lista de Adjacncias
34
35
Busca em Largura ou Busca em Amplitude (Breadth First) Busca em Profundidade (Depth First) Nmero de Componentes de um Grafo Ordenao Topolgica Componentes Fortemente Conectados
36
Busca em Largura
Dado um grafo G=(V,E) e um vrtice de origem, s, a busca em largura explora sistematicamente as arestas de G at descobrir cada vrtice acessvel a partir de s Calcula a distncia (menor nmero de arestas) desde s at todos os vrtices acessveis a partir de s Produz uma rvore primeiro na extenso com raiz em s que contm todos os vrtices acessveis Visita todos os vrtices distncia k a partir de s, antes de visitar quaisquer vrtices distncia k+1
37
Busca em Largura
d[u] = distncia desde a origem s at o vrtice u [u] = predecessor de u, se u no tem predecessor [u] = NIL Adj[u] = conjunto de vrtices adjacentes a u color[u] = cor do vrtice u, pode assumir os seguintes valores:
branco: vrtices no visitados (cor inicial de todos os vrtices) cinza: vrtices visitados que possuem vizinhos visitados e no visitados preto: vrtices visitados que possuem apenas vizinhos visitados (cor final de todos os vrtices)
38
Busca em Largura
Mostre s
Mostre v
39
Busca em Largura
V3
V1
0
V5
V7
Q
V1
V4
V2
V6
V8
40
Busca em Largura
V3
1
V1
0
V5
V7
Q
V2 V3
V4
V2
V6
V8
41
Busca em Largura
V3
1
V1
0
V5
2
V7
Q
V3 V5 V6
V4
V2
V6
V8
42
Busca em Largura
V3
1
V1
0
V5
2
V7
Q
V5 V6 V4
V4
V2
V6
V8
43
Busca em Largura
V3
1
V1
0
V5
2
V7
3 Q
V6 V4 V7
V4
V2
V6
V8
44
Busca em Largura
V3
1
V1
0
V5
2
V7
3 Q
V4 V7 V8
V4
V2
V6
V8
45
Busca em Largura
V3
1
V1
0
V5
2
V7
3 Q
V7 V8
2 1 2 3
V4
V2
V6
V8
46
Busca em Largura
V3
1
V1
0
V5
2
V7
3 Q
V8
2 1 2 3
V4
V2
V6
V8
47
Busca em Largura
V3
1
V1
0
V5
2
V7
3 Q
V4
V2
V6
V8
48
Busca em Largura
O loop inicial O(n) Os vrtices do grafo so colocados e retirados na fila exatamente uma vez As operaes de enfileirar e desenfileirar demoram o tempo O(1) Portanto, o tempo total dedicado a operaes de filas O(n) A lista de adjacncias dos vrtices (comando for) examinada somente quando o vrtice desenfileirado (executada apenas uma vez) e seu custo O(n) para cada vrtice Portanto, o tempo de execuo total O(n) + O(n2) = O(n2)
49
Busca em Profundidade
Utiliza a estratgia de procurar mais fundo no grafo sempre que possvel As arestas so exploradas a partir do vrtice v mais recentemente visitado que ainda tem arestas inexploradas saindo dele Quando todas as arestas de v so exploradas, a busca regressa para explorar as arestas que deixam o vrtice a partir do qual v foi visitado Esse processo continua at que visitamos todos os vrtices acessveis a partir do vrtice de origem inicial
50
Busca em Profundidade
d[u] = registra quando u visitado pela primeira vez f[u] = registra quando a busca termina de examinar a lista de adjacncias de u [u] = predecessor de u, se u no tem predecessor [u] = NIL Adj[u] = conjunto de vrtices adjacentes a u color[u] = cor do vrtice u, pode assumir os seguintes valores:
branco: vrtices no visitados (cor inicial de todos os vrtices) cinza: vrtices visitados cuja lista de adjacncia no foi completamente examinada preto: vrtices visitados cuja lista de adjacncia foi completamente examinada (cor final de todos os vrtices)
51
Busca em Profundidade
Mostre u
52
Busca em Profundidade
V3
V1
1/
V5
V7
V4
V2
V6
V8
Sada do Mostre u: V1
53
Busca em Profundidade
V3
V1
1/
V5
V7
2/
V4
V2
V6
V8
Sada do Mostre u: V1 V2
54
Busca em Profundidade
V3
V1
1/
V5
3/
V7
2/
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5
55
Busca em Profundidade
V3
V1
1/
V5
3/
V7
2/
4/
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6
56
Busca em Profundidade
V3
V1
1/
V5
3/
V7
5/
2/
4/
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7
57
Busca em Profundidade
V3
V1
1/
V5
3/
V7
5/
2/
4/
6/
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
58
Busca em Profundidade
V3
V1
1/
V5
3/
V7
5/
2/
4/
6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
59
Busca em Profundidade
V3
V1
1/
V5
3/
V7
5/8
2/
4/
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
60
Busca em Profundidade
V3
V1
1/
V5
3/
V7
5/8
2/
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
61
Busca em Profundidade
V3
V1
1/
V5
3/10
V7
5/8
2/
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
62
Busca em Profundidade
V3
V1
1/
V5
3/10
V7
5/8
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8
63
Busca em Profundidade
V3
12/
V1
1/
V5
3/10
V7
5/8
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8 V3
64
Busca em Profundidade
V3
12/
V1
1/
V5
3/10
V7
5/8
13/
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8 V3 V4
65
Busca em Profundidade
V3
12/
V1
1/
V5
3/10
V7
5/8
13/14
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8 V3 V4
66
Busca em Profundidade
V3
12/15
V1
1/
V5
3/10
V7
5/8
13/14
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8 V3 V4
67
Busca em Profundidade
V3
12/15
V1
1/16
V5
3/10
V7
5/8
13/14
2/11
4/9
6/7 6/7
V4
V2
V6
V8
Sada do Mostre u: V1 V2 V5 V6 V7 V8 V3 V4
68
Busca em Profundidade
O loop inicial O(n) O procedimento DFS-VISIT chamado exatamente uma vez pra cada vrtice do grafo, pois ele invocado somente sobre vrtices brancos e a primeira ao pintar o vrtice de cinza Durante a execuo de DFS-VISIT o loop das linhas 4 a 7 executado n vezes Portanto, o tempo de execuo total O(n) + O(n2) = O(n2)
69
70
k0 k k+1 Mostre k
71
Ordenao Topolgica
A busca em profundidade pode ser usada para executar ordenaes topolgicas em grafos acclicos orientados (gaos) Uma ordenao topolgica de um gaos G=(V,E) uma ordenao linear de todos os seus vrtices, tal que se G contm uma aresta (u,v), ento u aparece antes de v na ordenao Se o grafo no acclico, ento no possvel nenhuma ordenao linear Uma ordenao topolgica de um grafo pode ser vista como uma ordenao de seus vrtices ao longo de uma linha horizontal, de tal forma que todas as arestas orientadas sigam da esquerda para a direita
72
Ordenao Topolgica
Grafos acclicos orientados so usados em muitas aplicaes para indicar precedncia entre eventos Como exemplo, considere o grafo que surge quando o professor Bumstead se veste pela manh
73
Ordenao Topolgica
Uma aresta orientada (u,v) no gao indica que a pea de roupa u deve ser vestida antes da pea v Uma ordenao topolgica desse gao fornece uma ordem para o processo de se vestir
74
Ordenao Topolgica
75
Ordenao Topolgica
Anlise de complexidade:
A busca em profundidade O(n2) e leva o tempo O(1) para inserir cada um dos n vrtices frente da lista encadeada Portanto, a ordenao topolgica tem complexidade de tempo de O(n2)
76
Um grafo orientado fortemente conectado se cada um de dois vrtices quaisquer acessvel a partir do outro Um componente fortemente conectado de um grafo orientado G=(V,E) um conjunto mximo de vrtices C V tal que, para todo par de vrtices u e v em C, temos que os vrtices u e v so acessveis um a partir do outro
77
A busca em profundidade pode ser utilizada tambm para realizar a decomposio de um grafo orientado em seus componentes fortemente conectados A transposta de um grafo G=(V,E) um grafo GT=(V,ET), onde ET consiste das arestas de G com seus sentidos invertidos
GT
78
Algoritmo a seguir calcula os componentes fortemente conectados de um grafo orientado G=(V,E) usando duas pesquisas primeiro na profundidade, uma sobre G e uma sobre GT
79
Grafo GT
Grafo de componentes acclicos obtido pela condensao de cada componente fortemente conectado de G, de modo que apenas um nico vrtice permanea em cada componente
80
Anlise de Complexidade:
Busca em profundidade sobre G: O(n2) Clculo de GT: O(n2) Busca em profundidade sobre GT : O(n2) Portanto, a complexidade de tempo O(n2) + O(n2) + O(n2) = O(n2)
81
82
No sculo XVIII, Knigsberg era a capital da Prssia Oriental A cidade foi construda volta do rio Pregel e para unir todas as partes da cidade foram construdas 7 pontes Os habitantes da cidade gostavam de passear pelas pontes e tentavam encontrar uma forma de atravessar todas as pontes exatamente uma vez e retornar ao ponto inicial
83
Em 1736, Euler mostrou que existe um caminho com ponto de incio em qualquer vrtice que passa atravs de cada aresta exatamente uma vez e termina no vrtice inicial se e somente se todos os vrtices tiverem grau par O grafo que no cumprir com essas condies no Euleriano No exemplo da ponte, todos os quatro vrtices tm grau mpar, logo no possvel atravessar todas as pontes exatamente uma vez e retornar ao ponto inicial
85
Grafos Eulerianos
Problema: encontrar um ciclo que passe por todas as arestas uma nica vez Se possvel encontrar um ciclo que passe por todas as arestas uma nica vez, dizemos que G um grafo euleriano TEOREMA: Um grafo euleriano se, e somente se, todos os seus vrtices tiverem grau par
86
A figura abaixo ilustra o mapa do Departamento de Matemtica de uma importante Universidade. A entrada principal est na parte norte do Departamento. Determine se possvel que uma pessoa possa andar pelo Departamento passando atravs de cada porta exatamente uma vez e terminando onde comeou.
87
O Problema do Explorador
Um explorador deseja explorar todas as estradas entre um nmero de cidades. possvel encontrar um roteiro que passe por cada estrada apenas uma vez e volte a cidade inicial?
Problema do Domin
89
Grafos Eulerianos
Anlise de Complexidade:
Para verificar se um grafo euleriano basta verificar o grau de todos os vrtices do grafo Para verificar o grau de um vrtice temos que percorrer uma linha da matriz de adjacncias que tem tamanho n Como so n vrtices, a complexidade O(n2)
90
Grafos Unicursais
Um grafo G dito unicursal se ele possuir um caminho aberto de Euler, ou seja, se possvel percorrer todas as arestas de G apenas uma vez sem retornar ao vrtice inicial. Caminho de Euler: a c d a b d e b
a b e d
Se adicionarmos uma aresta entre os vrtices inicial e final do caminho aberto de Euler, esse grafo passa a ser um grafo euleriano
91
Grafos Unicursais
Um grafo conexo unicursal se, e somente se, ele possuir exatamente 2 vrtices de grau mpar TEOREMA: Em um grafo conexo G com exatamente 2K vrtices de grau mpar, existem K subgrafos disjuntos de arestas, todos eles unicursais, de maneira que juntos eles contm todas as arestas de G Casos:
Grafo euleriano: todos os vrtices de grau par Grafo unicursal: dois vrtices de grau mpar Grafo qualquer: 2K vrtices de grau mpar (k-travel)
92
Grafos Unicursais
possvel fazer o desenho abaixo sem retirar o lpis do papel e sem retroceder?
93
Carteiro Chins
Um carteiro deseja entregar cartas ao longo de todas as ruas de uma cidade, e retornar ao ponto inicial. Como ele pode planejar as rotas de forma a percorrer a menor distncia possvel?
Se o grafo for euleriano, basta percorrer o ciclo de Euler Caso contrrio, algumas arestas sero percorridas mais de uma vez
2 a 5
b 6 w 3
1 2
v 2 4 c 3 d
94
Carteiro Chins
PASSO 1: Identifique os m ns de grau mpar de G(N,A) (m sempre par) PASSO 2: Encontre o "casamento de pares com a mnima distncia" (minimumlength pairwise matching) desses m ns e identifique os m/2 caminhos mnimos deste "casamento" timo. PASSO 3: Adicione estes m/2 caminhos mnimos como arcos ligando os ns do "casamento" timo. O novo grafo G(N,A) contm zero vrtices de grau mpar. PASSO 4: Encontre um ciclo euleriano em G(N,A). Este ciclo a soluo tima do problema no grafo original G(N,A) e o seu comprimento igual ao comprimento total das arestas do grafo original mais o comprimento total dos m/2 caminhos mnimos.
b 2 a 5 w 6 3
1 2
v 2 4 c 3 d a 5 2
b 6 w 2 3
1 1 2 3
v 2 4 c 3 d
95
Exerccios
6. Para quais valores de a e b o grafo abaixo euleriano?
a vrtices
...
b vrtices . . . . . .
7. Determine os valores de n para os quais o grafo completo Kn euleriano. Para quais valores de n, o Kn unicursal? Justifique.
96
Exerccios
8. Para o grafo do problema das pontes de Knigsberg, qual o menor nmero de pontes que devem ser removidas para que o grafo resultante seja unicursal? Quais pontes? Idem para Euleriano.
9. possvel visitar todas as salas passando por todas as portas exatamente uma vez e retornando ao ponto inicial?
97
Deo pginas 30 at 35
98
Grafos Hamiltonianos
Um ciclo de Hamilton em um grafo conexo um ciclo simples que passa por todos os vrtices do grafo uma nica vez Todo grafo que possui um ciclo de hamilton chamado de grafo hamiltoniano
Grafos Hamiltonianos
Um caminho de Hamilton em um grafo conexo um caminho que passa por todos os vrtices do grafo exatamente uma vez
100
Grafos Hamiltonianos
O grafo deve ser conexo Autoloops e arestas paralelas podem ser desconsideradas Se um grafo hamiltoniano, ento a incluso de qualquer aresta no atrapalha esta condio
Anlise de Complexidade
Para verificar se existe um ciclo de hamilton em um grafo conexo devemos tentar todas as possibilidades, ou seja, devemos gerar todas as permutaes nos n vrtices Portanto, a complexidade do problema O(n!)
101
Exerccios
10. Os seguintes grafos so hamiltonianos?
(a)
(b)
(c)
(d)
(e)
102
Passeio do Cavalo
Um cavalo do xadrez deve comear em alguma posio, visitar todas as posies exatamente uma vez e retornar posio inicial. Para qual tamanho do tabuleiro nxn existe esse ciclo? Para qual nxn o grafo hamiltoniano?
103
Um caixeiro viajante deseja visitar um nmero de cidades e voltar ao ponto de origem de maneira que ele visite todas as cidades e percorra a menor distncia possvel. Como escolher sua rota?
A B
9 3 3 6 8 5 7
Um viajante deve visitar clientes instalados em 6 cidades da Pennsula Ibrica. Procura-se determinar qual o menor percurso de forma que o visitante comece em uma cidade, passe por todas as cidades e termine na cidade de origem
105
106
Anlise de Complexidade
A soluo mais direta gerar todas as permutaes e verificar qual a que possui o menor comprimento. Como o nmero de permutaes n!, esta soluo tem complexidade O(n!) Usando tcnicas de programao dinmica, possvel resolver o problema com complexidade O(2n)
107
Exerccios
11. D um exemplo de um grafo que seja euleriano mas no seja hamiltoniano. 12. D um exemplo de um grafo que seja euleriano e hamiltoniano, mas que o caminho de euler seja diferente do ciclo de hamilton. 13. Desenhe um grafo no qual o caminho de Euler seja tambm o ciclo de hamilton. O que podemos dizer desses grafos em geral? 14. Para quais valores de a e b o grafo bipartido completo Ka,b hamiltoniano? Justifique.
108
Exerccios
15. Para quais valores de a e b o grafo abaixo hamiltoniano?
a vrtices
...
b vrtices . . . . . .
109
110
rvore
Uma rvore um grafo conexo (existe caminho entre quaisquer dois de seus vrtices) e acclico (no possui ciclos) Grafo acclico mas no conexo chamado de floresta Uma floresta tambm definida como uma unio disjunta de rvores
rvore
Propriedades:
Em uma rvore existe um e apenas um caminho entre cada par de vrtices. Uma rvore com n vrtices tem n-1 arestas Um floresta com n vrtices e k componentes possui n-k arestas Um grafo G uma rvore se, e somente se, a remoo de qualquer aresta o desconectar (grafo minimamente conectado) Um grafo G com n vrtices, n-1 arestas e nenhum ciclo conexo Toda rvore um grafo bipartido e planar Em qualquer rvore com pelo menos 2 vrtices existem pelo menos 2 vrtices pendentes
112
Uma rvore geradora de um grafo conexo G um subgrafo de G que contm todos os vrtices de G e uma rvore rvore geradora s definida para grafos conexo porque toda rvore conexa. Grafos no conexo possuem florestas geradoras
113
rvore Geradora
Um fazendeiro possui 6 lotes murados como mostrado na figura abaixo. Os lotes esto cheios de gua. Quantos muros devem ser removidos para que toda a gua seja liberada?
114
rvore Geradora Mnima a rvore geradora de menor peso de G Dado um grafo G com pesos associados s arestas, encontrar uma rvore geradora mnima de G
115
A partir de um grafo conectado no orientado G=(V,E) com uma funo peso w:ER, desejamos encontrar uma rvore geradora mnima correspondente a G Algoritmos:
116
Algoritmo de Kruskal
Encontre uma aresta segura para adicionar floresta crescente encontrando, de todas as arestas que conectam duas rvores quaisquer na floresta, uma aresta (u,v) de peso mnimo Utiliza um estrutura de dados de conjuntos disjuntos para manter vrios conjuntos disjuntos de elementos Cada conjunto contm os vrtices em uma rvore da floresta atual A operao FIND-SET(u) retorna um elemento representativo do conjunto que contm u A combinao de rvores realizada pelo procedimento UNION
117
Algoritmo de Kruskal
MST-KRUSKAL(G,w) A for cada vrtice v V[G] do MAKE-SET(v) ordenar as arestas de E por peso w no decrescente for cada aresta (u,v)E, em ordem de peso no decrescente do if FIND-SET(u) FIND-SET(v) then A A {(u,v)} UNION(u,v) return A
118
Algoritmo de Kruskal
119
Algoritmo de Kruskal
120
Algoritmo de Kruskal
121
Algoritmo de Kruskal
122
Algoritmo de Kruskal
Anlise de Complexidade (considerando que a implementao da floresta de conjuntos disjuntos seja feita com as heursticas de unio por ordenao e compresso de caminho):
Tempo para ordenar as arestas O(e log e) O segundo for executa O(e) operaes FIND-SET e UNION sobre a floresta de conjuntos disjuntos que juntamente com as n operaes MAKE-SET, demoram ao todo o tempo O((n+e)(n)), onde a funo de crescimento muito lento Como G supostamente conectado, e n-1, e assim as operaes de conjuntos disjuntos demoram o tempo O(e (n)) Como (n)=O(log n)=O(log e), o tempo total O(e log e) Considerando que e n2, log e = O(log n), e portanto podemos redefinir o tempo de execuo do algoritmo de Kruskal como O(e log n)
123
Algoritmo de Prim
As arestas no conjunto A sempre formam uma rvore nica A rvore comea a partir de um vrtice de raiz arbitrria r e aumenta at a rvore alcanar todos os vrtices em V Em cada etapa, uma aresta leve conectando um vrtice de A a um vrtice em V-A adicionada rvore Quando o algoritmo termina, as arestas em A formam uma rvore geradora mnima Durante a execuo do algoritmo, todos os vrtices que no esto na rvore residem em uma fila de prioridade mnima Q baseada em um campo chave Para cada vrtice v, chave[v] o peso mnimo de qualquer aresta que conecta v a um vrtice na rvore [v] o pai de v na rvore
124
Algoritmo de Prim
MST-PRIM (G,w,r) for cada u V[G] do chave[u] [u] NIL BUILD-MIN-HEAP chave[r] 0 Q V[G] while Q 0 do u EXTRACT-MIN(Q) for cada v Adj[u] do if v Q e w(u,v) < chave[v] then [v] u chave[v] w(u,v) DECREASE-KEY
125
Algoritmo de Prim
126
Algoritmo de Prim
127
Algoritmo de Prim
128
Algoritmo de Prim
Anlise de Complexidade
BUILD-MIN-HEAP executado em tempo O(n) O corpo do while executado n vezes, e como cada operao de EXTRACT-MIN demora O(log n), o tempo total para todas as chamadas a EXTRACT-MIN O(n log n) O loop for executado completamente O(e) vezes, pois a soma dos comprimentos de todas as listas de adjacncias 2*e Dentro do loop for, o teste de pertinncia a Q pode ser implementado em tempo constante, mantendo-se um bit para cada vrtice que informa se ele est ou no em Q, e atualizando-se o bit quando o vrtice removido de Q A operao DECREASE-KEY sobre o heap mnimo pode ser implementada em tempo O(log n) Portanto, o tempo total O(n log n + e log n) = O(e log n)
129
Exerccios
16. Seja G um grafo conexo. O que podemos dizer sobre:
a) Uma aresta de G que aparece em todas as rvores geradoras? b) Uma aresta de G que no aparece em nenhuma rvore geradora?
17. Em um dado grafo simples e conexo G, existe uma aresta es cujo peso menor do que o peso de qualquer outra aresta de G. Podemos dizer toda AGM de G conter es? Justifique. 18. Em um dado grafo simples e conexo G, existe uma aresta eb cujo peso maior do que o peso de qualquer outra aresta de G. Podemos dizer que nenhuma AGM conter eb? Justifique.
130
Conectividade
131
Cut-set
Cut-set de um grafo conexo G um conjunto de arestas de G cuja remoo desconecta G. Nenhum subconjuto prprio de um cut-set pode ser um cut-set. Um cut-set particiona os vrtices do grafo em 2 subconjuntos disjuntos
a b g e f c d h k
Conectividade e Separabilidade
Conectividade de aresta (G): corresponde ao menor nmero de arestas do grafo cuja remoo o desconecta. o nmero de aresta do menor cut-set Conectividade de vrtice K(G) (ou simplesmente conectividade): corresponde ao menor nmero de vrtices do grafo cuja remoo o desconecta Grafo K-conexo: grafo de conectividade de vrtice igual a K Grafo separvel: grafo com conectividade de vrtice igual a1
133
Exerccios
19. Para os grafos abaixo, encontre o valor de (G) e K(G). Estes grafos so separveis?
20. Qual o valor da conectividade de vrtices e de arestas das rvores? E dos grafos completos?
134
Conectividade e Separabilidade
O vrtice que desconecta o grafo separvel chamado de ponto de articulao ou cut-vrtice. A conectividade de aresta de um grafo G no pode exceder ao grau do vrtice de menor grau. A conectividade de vrtice no pode exceder a conectividade de aresta de G. Para todo grafo conexo G tem-se:
135
Exerccios
21. D exemplos (se existirem) de grafos G com as seguintes caractersticas:
a) K(G) = 2, (G) = 3, (G) = 4 b) K(G) = 3, (G) = 2, (G) = 4 c) K(G) = 2, (G) = 2, (G) = 4
136
137
Um motorista deseja encontrar a rota mais curta possvel do Rio de Janeiro a So Paulo Dado um mapa rodovirio do Brasil no qual a distncia entre cada par de intersees adjacentes esteja marcada, como podemos determinar essa rota mais curta?
138
Para resolver de forma eficiente problemas de menor caminho, utilizamos um grafo ponderado G=(V,E), com funo de peso w:ER que mapeia arestas para pesos de valores reais O peso do caminho p=<v0,v1,...,vk> o somatrio dos pesos de suas arestas constituintes
w( p ) = w(vi 1,vi )
i =1
139
Algoritmo de Dijkstra
O algoritmo de Dijkstra resolve o problema de caminhos mais curtos de nica origem em um grafo ponderado G=(V,E) para o caso no qual os pesos de arestas so no negativos u, v) E Portanto, w( u, v) 0 para cada aresta(
140
Algoritmo de Dijkstra
Mantm um conjunto S de vrtices cujos pesos finais de caminhos mais curtos desde a origem s j foram determinados O algoritmo seleciona repetidamente o vrtice u V-S com a estimativa mnima de caminhos mais curtos, adiciona u a S e relaxa todas as arestas que saem de u A fila de prioridades mnima Q de vrtices possui os valores d como chave
141
Algoritmo de Dijkstra
DIJKSTRA(G,w,s) for cada vrtice v V[G] do d[v] [v] NIL d[s] 0 S Q V[G] while Q do u EXTRACT-MIN(Q) S S {u} for cada vrtice v Adj[u] do
if d[v] > d[u] + w(u,v) then d[v] d[u] + w(u,v) [v] u
142
Algoritmo de Dijkstra
143
Algoritmo de Dijkstra
144
Colorao
145
Colorao de Grafos
Dado um grafo G, como pintar seus vrtices com vrias cores de maneira que vrtices adjacentes so pintados com cores diferentes? Qual o menor nmero de cores necessrias?
v5 v1 v3
v2
v4
Dado um grafo G sem autoloops, uma colorao de G uma atribuio de cores aos vrtices de G de maneira que cores diferentes so atribudas a vrtices adjacentes
146
Colorao de Grafos
Se existe uma colorao para um grafo G que utiliza K cores, ento G um grafo K-colorido O nmero cromtico de um grafo G, denotado por X(G), o menor nmero K para o qual G K-colorido
X(G) = 3
147
Colorao de Grafos
Observaes
No precisamos considerar grafos desconexos porque as cores utilizadas em um componente no tem efeito sobre as do outro componente Arestas paralelas no afetam a colorao Grafo no pode ter loops
148
Colorao de Grafos
grafo que consiste de um nico vrtice grafo com pelo menos uma aresta grafo completo Kn grafo bipartite rvore com 2 ou mais vrtices
149
Colorao de Circuitos
Um grafo consistindo simplesmente de um circuito com n3 vrtices 2-cromtico se n par e 3-cromtico se n impar
Um grafo simples G com pelo menos uma aresta 2cromtico se, e somente se, G no contiver circuitos de tamanho mpar
150
Colorao de Grafos
X(G) d+1
Se d o maior grau dos vrtices de um grafo simples G, tal que G no contm um grafo circuito com um nmero mpar de vrtices e nem um grafo completo, de d+1 vrtices, ento
X(G) d
151
Exerccios
23. Qual o nmero cromtico dos seguintes grafos?
a)
b)
152
Colorao de Arestas
Uma colorao de arestas de um grafo simples G uma atribuio de cores s arestas de G de maneira que cores diferentes so atribudas a arestas adjacentes Se existe uma colorao de arestas para um grafo G que utiliza K cores, ento, G um grafo K-colorido de arestas O ndice cromtico de um grafo G, denotado por X(G) o menor nmero K para qual G K-colorido de arestas
153
Colorao de Arestas
Se G um grafo simples cujo vrtice de maior grau tem grau d, ento d X(G) d+1
154
Colorao de Arestas
Como alocar horrios para as aulas, sem que haja conflito para os professores e para as turmas?
155
Exerccios
24. Mostre que se um grafo bipartido possui algum circuito, esse deve ser de tamanho par. 25. Qual o ndice cromtico do Cn? 26. Qual o ndice cromtico do Kn? 27. Encontre o X(G) para os seguintes grafo G:
(a)
(b)
156
157
Conjunto Independente
Uma colorao de um grafo induz a um particionamento dos vrtices em subconjuntos de vrtices chamados conjunto independentes Conjunto independente: conjunto de vrtices do grafo no qual nenhum par de vrtices do conjunto adjacente
158
Conjunto Independente
Conjunto independente mximo: conjunto independente no qual nenhum vrtice pode ser adicionado sem destruir a independncia Nmero de independncia: nmero de vrtices do maior conjunto independente mximo do grafo ((G))
159
Conjunto Dominante
Conjunto dominante: conjunto de vrtices do grafo que dominam todos os vrtices do grafo: um vrtice v pertence ao conjunto dominante ou adjacente a um vrtice que pertence. Conjunto dominante mnimo: conjunto dominante com o menor nmero de vrtices. (G)
160
Casamento
Uma agncia de casamentos tem cadastrados r rapazes e m moas que desejam se casar. A agncia detectou a seguinte afinidade entre eles:
R a p a z e s
M o a s
Casamento
Um casamento em um grafo um conjunto de arestas no qual nenhum par de arestas do grafo adjacente Casamento mximo um casamento no qual nenhuma aresta pode ser includa Casamento completo (em grafos bipartidos) um casamento no qual todos os vrtices de um dos conjuntos so casados a algum vrtice do outro conjunto
162
Casamento
Um casamento completo de V1 em V2 em um grafo bipartido G existe se, e somente se, todo subconjunto de r vrtices de V1 for coletivamente adjacente a r ou mais vrtices de V2 para todos os valores possveis de r. s1 c1 s2 c2 s3 c3 s4 s5
V1
V2
163
Exerccios
29. Encontre um casamento mximo e um casamento completo para o seguinte grafo bipartido.
a b c d e f g 1 2 3 4 5 6
164
Exerccios
30. Encontre um conjunto dominante mnimo em cada um dos seguintes grafos:
(a)
(b)
165
Coberturas
166
Cobertura de Vrtices
Em um grafo G, um conjunto g de vrtices chamado de cobertura de vrtices se todas as arestas de G so incidentes a pelo menos um vrtice de g Se este conjunto o menor com tal propriedade dizemos que g uma cobertura mnima de vrtices
167
Cobertura de Arestas
Em um grafo G, um conjunto e de arestas chamado de cobertura de aresta se todos os vrtices de G so incidentes a pelo menos uma aresta de e Se este conjunto o menor com tal propriedade dizemos que e uma cobertura mnima de aresta
168
Exerccios
31. Quantos vrtices existem em uma cobertura mnima de vrtices de grafos bipartidos, grafos completos e grafos circuitos? 32. Podemos dizer que o nmero de vrtices de uma cobertura mnima de vrtices sempre maior ou igual ao nmero de vrtices do conjunto dominante mnimo? Justifique. 33. Dado um grafo conexo G, quais arestas estaro sempre presentes em todas as coberturas de aresta de G? 34. D exemplos de grafos que no possuem cobertura de aresta.
169
Modelagens
170
Exemplo 1
A rainha a pea mais poderosa do jogo de Xadrez. Numa jogada ela pode mover-se tantas casas quantas quiser em qualquer direo vertical, horizontal ou diagonal, desde que no haja nenhuma outra pea que obstrua sua passagem. O desenho que se segue mostra uma posio particular da rainha, juntamente com as 27 possibilidades de movimento. Estas 27 casas (alm daquela onde a rainha est) esto sob o domnio da rainha. Qualquer outra pea que estivesse numa destas casas estaria sob ataque da rainha em questo.
171
Exemplo 1 (cont.)
Encontre o nmero mximo de rainhas que podem ser colocadas em um tabuleiro de forma que nenhuma rainha ataque a outra. Modele este problema utilizando Teoria dos Grafos e proponha uma soluo para ele. Encontre o menor nmero de rainhas que podem ser colocadas em um tabuleiro de forma que toda posio no ocupada seja atacada. Modele este problema utilizando Teoria dos Grafos e proponha uma soluo para ele.
172
Exemplo 2
Uma empresa possui N tarefas a serem executadas e K funcionrios j contratados. Muitas das tarefas so complexas e exigem trabalho especializado, de modo que a partir das caractersticas de cada funcionrios e de cada tarefa, a empresa j designou quais funcionrios estaro responsveis por quais tarefas. Se todos os funcionrios designados para uma determinada tarefa estiverem disponveis, esta tarefa poder ser executada em uma hora. A empresa deseja saber o nmero mnimo de horas que sero necessrios para que todas as tarefas sejam executadas. Modele este problema utilizando teoria de grafos e proponha uma soluo para ele.
173
Exemplo 3
Suponha que N candidatos a uma vaga devem ser entrevistados individualmente por profissionais de uma empresa. Os entrevistadores so escolhidos de acordo com a rea de atuao que o candidato est pleiteando Como determinar o nmero mnimo de perodos de entrevista considerando que cada profissional entrevista individualmente cada candidato? Como determinar o nmero mnimo de perodos de entrevista considerando que todos os profissionais entrevistam conjuntamente todos os candidatos no mesmo perodo.
174
Exemplo 4
Existem 2n meninas que toda manh vo andando para o colgio em grupo de 2. Encontre o nmero de dias que sero necessrios para que cada garota saia exatamente 1 vez com todas as outras meninas.
175
Exemplo 5
Neste ano, Maria ficou responsvel pela organizao da quadrilha do seu bairro. Sabe-se que existem n meninas e n meninos dispostos a participar. Ela gostaria de saber de quantas maneiras possveis ela poderia fazer o agrupamento dos casais de forma que nenhum casal de repita de um agrupamento para o outro. Modele este problema utilizando teoria dos grafos e proponha uma soluo para ele.
176
Exemplo 6
Suponha que n times esto participando de uma competio na qual cada time deve jogar exatamente uma vez contra cada um dos outros n-1 times. Assumindo que qualquer quantidade de jogos com qualquer quantidade de times pode ser jogado simultaneamente, quantas rodadas sero necessrias para finalizar este torneio? Modele este problema utilizando teoria de grafos e proponha uma soluo para ele.
177