Você está na página 1de 177

Pontifcia Universidade Catlica de Minas Gerais Mestrado em Informtica

Projeto e Anlise de Algoritmos


Teoria dos Grafos

Raquel Aparecida de Freitas Mini raquelmini@pucminas.br

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

Por definio um grafo deve ter pelo menos 1 vrtice


3

Grafo da Amizade

Modelagem:

Vrtices: pessoas Arestas: relao de amizade

n: nmero de vrtices e: nmero de arestas

n=4

e=5
4

Problema das Pontes de Knigsberg

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

Problema das Pontes de Knigsberg

As pontes so identificadas pelas letras de a at g

Este problema pode ser representado pelo grafo


vrtices: pontos de terra aresta: pontes

Problema do Desenho da Casa

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

O Problema das 3 Casas e 3 Servios

Suponha que tenhamos trs casas e trs servios, a exemplo de:

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

grau de entrada do vrtice 5 2 grau de sada do vrtice 5 1


15

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

5 um vrtice isolado 1 um vrtice pendente

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

grafo no conectado com 5 componentes


20

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

grafo possui 3 componentes fortemente conectados


21

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

Condies necessrias mas no suficientes para que G e H sejam isomorfos:


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

No existe um algoritmo eficiente para determinar se dois grafos so isomorfos


25

Nmero de Vrtices de Grau mpar

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

O nmero de vrtices de grau mpar em um grafo par

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

Nmero Mnimo e Mximo de Arestas

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 e conexo n(n + 1) n 1 e 2

Grafo simples

( n k )(n k + 1) nk e
2

30

Estruturas de Dados

Cormen pginas 419 at 422

31

Matriz de Adjacncias

A matriz de adjacncias de um grafo simples G com n vrtices uma matriz n x n, definida como:

Mij = 1, se existe uma aresta entre os vrtices i e j Mij = 0, caso contrrio

Vantagem: verificar adjacncia O(1)

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

Estruturas de Dados para Dgrafos

Matriz de Adjacncias

Lista de Adjacncias

34

Algoritmos Elementares em Grafos

Cormen pginas 422 at 444

35

Algoritmos Elementares em Grafos


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

Sada do Mostre s e Mostre v: V1

40

Busca em Largura

V3
1

V1
0

V5

V7
Q

V2 V3

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3

41

Busca em Largura

V3
1

V1
0

V5
2

V7
Q

V3 V5 V6

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6

42

Busca em Largura

V3
1

V1
0

V5
2

V7
Q

V5 V6 V4

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4

43

Busca em Largura

V3
1

V1
0

V5
2

V7
3 Q

V6 V4 V7

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4 V7

44

Busca em Largura

V3
1

V1
0

V5
2

V7
3 Q

V4 V7 V8

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4 V7 V8

45

Busca em Largura

V3
1

V1
0

V5
2

V7
3 Q

V7 V8
2 1 2 3

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4 V7 V8

46

Busca em Largura

V3
1

V1
0

V5
2

V7
3 Q

V8
2 1 2 3

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4 V7 V8

47

Busca em Largura

V3
1

V1
0

V5
2

V7
3 Q

V4

V2

V6

V8

Sada do Mostre s e Mostre v: V1 V2 V3 V5 V6 V4 V7 V8

48

Busca em Largura

Anlise de Complexidade (considerando matriz de adjacncias):


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

Anlise de Complexidade (considerando matriz de adjacncias):


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

Nmero de Componentes de um Grafo

Como encontrar o nmero de componentes de um grafo?

grafo com 5 componentes

70

Nmero de Componentes de um Grafo

k0 k k+1 Mostre k

A varivel k armazenar o nmero de componentes do grafo G

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

Algoritmo a seguir ordena topologicamente um gao

Os vrtices topologicamente ordenados aparecem na ordem inversa de seus tempos de trmino

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

Componentes Fortemente Conectados

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

Componentes Fortemente Conectados

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

Componentes Fortemente Conectados

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

Componentes Fortemente Conectados


Grafo orientado G

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

Componentes Fortemente Conectados

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

Grafos Eulerianos Grafos Unicursais Problema do Carteiro Chins


Deo pginas 23 at 30

82

Problema das Pontes de Knigsberg


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

Problema das Pontes de Knigsberg

vrtices: pontos de terra aresta: pontes


84

Problema das Pontes de Knigsberg

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

Mapa do Departamento de Matemtica

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?

vrtices: cidades aresta: estradas


88

Problema do Domin

possvel arranjar todas as peas de um domin em um caminho fechado?

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?

Quantos traos so necessrios para traar o diagrama abaixo?

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

Grafos Hamiltonianos Passeio do Cavalo Problema do Caixeiro Viajante

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

O ciclo de hamilton de um grafo com n vrtices contm n arestas


99

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

Consideraes sobre 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

Problema do Caixeiro Viajante

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

grafo com peso nas arestas


E
2 6

Vrtices: cidades Arestas: estradas

Encontrar um ciclo de hamilton de peso mnimo


104

Problema do Caixeiro Viajante

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

Problema do Caixeiro Viajante

106

Problema do Caixeiro Viajante

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

rvores rvores Geradoras Mnimas

Cormen pginas 445 at 458 e Deo pginas 39 at 44 e 55 at 57 e 61 at 64

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 com 6 vrtices e 5 arestas

floresta 6 vrtices e 3 arestas


111

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

rvore Geradora (rvore Espalhada ou rvore de Extenso)

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

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

rvore Geradora Mnima

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:

Algoritmo de Kruskal Algoritmo de Prim

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

Deo pginas 68, 69, 75 at 79

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

{a,b,g} {a,b,e,f} {d,h,f} {k}

O cut-set com o menor nmero de arestas o mais vulnervel


132

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:

K(G) (G) grau do vrtice de menor grau

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

22. Encontre um grafo 4-conexo com 8 vrtices e 16 arestas.

136

Algoritmos para o Menor Caminho

Cormen pginas 470 at 475

137

Algoritmos para o Menor Caminho

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

Algoritmos para o Menor Caminho

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

Deo pginas 165 at 169 e 186 at 190

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

GRAFOS CONEXOS SIMPLES

148

Colorao de Grafos

O que podemos dizer sobre o nmero cromtico dos seguintes 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

Todo grafo 2-cromtico bipartido? Todo grafo 2-cromtico uma rvore?

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

Se d o maior grau dos vrtices de um grafo simples G ento

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

Qual a colorao de arestas do Kn?

154

Colorao de Arestas

Trs professores lecionam disciplinas em 4 perodos do curso:


1 Perodo 2 Perodo 3 Perodo 4 Perodo Joo Jos Ana

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

Independncia Dominncia Casamento


Deo pginas 169 at 173 e 177 at 182

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

Como maximizar o nmero de casamentos?


161

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

Deo pginas 182 at 186

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