Pontifícia Universidade Católica de Minas Gerais Mestrado em Informática
Projeto e Análise de Algoritmos Teoria dos Grafos
Raquel Aparecida de Freitas Mini
[email protected]
1
Conceitos Básicos Cormen – páginas 853 até 861 ou Deo – páginas 1 até 23 (mais didático e detalhado)
2
Conceitos Básicos
Grafo é uma coleção de vértices e arestas Vértice é um objeto simples que pode ter nomes e outros atributos Aresta é uma conexão entre dois vértices e1
V2
e2 e3
V3
e5
V1 e4 V4
Por definição um grafo deve ter pelo menos 1 vértice 3
Grafo da Amizade
Modelagem:
Vértices: pessoas Arestas: relação de amizade
n: número de vértices e: número de arestas
n=4
e=5 4
Problema das Pontes de Königsberg
No século XVIII havia na cidade de Königsberg 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 possível cruzar as sete pontes numa caminhada contínua sem passar duas vezes por qualquer uma delas 5
Problema das Pontes de Königsberg
As pontes são identificadas pelas letras de a até g
Este problema pode ser representado pelo grafo vértices: pontos de terra aresta: pontes
6
Problema do Desenho da Casa
No desenho abaixo, uma criança diz ter posto a ponta do lápis numa das bolinhas e com movimentos contínuos (sem levantar e sem retroceder o lápis) traçou as linhas que formam o desenho da casa, traçando cada linha uma única vez
A mãe da criança acha que ela trapaceou pois não foi capaz de achar nenhuma seqüência que pudesse produzir tal resultado. Você concorda com esta mãe? 7
O Problema das 3 Casas e 3 Serviços
Suponha que tenhamos três casas e três serviços, a exemplo de:
É possível conectar cada serviço a cada uma das três casas sem que haja cruzamento de tubulações? 8
Problema de Transporte
Nos problemas que envolvem transportes de carga ou pessoas, os pontos de parada, embarque e desembarque são os vértices e as estradas entre os pontos são as arestas
9
Problema de Transporte
Problema de Conectividade: dadas as direções das vias, é possível ir da cidade A até a cidade B, sem andar na contramão? Problema de Fluxo Máximo: 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 rápido para sair de uma cidade A e chegar a uma cidade B?
10
Terminologia
Grafo não orientado: G=(V,E)é um par onde V é um conjunto finito e o conjunto de arestas E consiste em pares de vértices não orientados. A aresta (vi,vj) e (vj,vi) são consideradas a mesma aresta. V1 e1 V5
e9
e4
e2 e 3 V4 e8
e5 e7
V2 e6
V3
11
Terminologia
Grafo orientado: G é um par (V,E), onde V é um conjunto finito e E é uma relação binária em V.
V1 e1 V5
e9
e4
e2 e 3 V4 e8
e5 e7
V2 e6
V3
12
Terminologia
Autoloop: uma aresta associada ao par de vértices (vi,vi) Arestas paralelas: quando mais de uma aresta está associada ao mesmo par de vértices Grafo simples: um grafo que não possui autoloops e nem arestas paralelas e1 e e2 são arestas paralelas e1
e2
e3
e3 é um autoloop
grafo simples 13
Terminologia
Se (u,v) é uma aresta em um grafo G=(V,E), dizemos que o vértice v é adjacente ao vértice u (em grafo não orientado, a relação de adjacência é simétrica). Se (u,v) é uma aresta de um grafo orientado e (v,u) não é uma aresta, dizemos que o vértice v é adjacente ao vértice u, mas u não é 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 vértice u e é incidente no ou entra no vértice v Se (u,v) é uma aresta em um grafo não orientado G=(V,E) dizemos que a aresta (u,v) é incidente nos vértices u e v
14
Terminologia
O grau de um vértice em um grafo não orientado é o número de arestas incidentes nele. Em um grafo orientado, o grau de saída de um vértice é o número de arestas que saem dele, e o grau de entrada de um vértice é o número de arestas que entram nele. O grau de um vértice em um grafo orientado é seu grau de entrada somado a seu grau de saída
grau do vértice 2 é 4
grau de entrada do vértice 5 é 2 grau de saída do vértice 5 é 1 15
Terminologia
Um grafo no qual todos os vértices possuem o mesmo grau é chamado de grafo regular Um vértice com nenhuma aresta incidente é chamado de vértice isolado. Um vértice com grau 1 é chamado de vértice pendente Um grafo sem nenhuma aresta é chamado de grafo nulo (todos os vértices em um grafo nulo são vértices isolados)
grafo regular
5 é um vértice isolado 1 é um vértice pendente
grafo nulo
16
Terminologia
Um grafo não orientado G=(V,E) é um grafo completo se para cada par de vértices vi e vj existe uma aresta entre vi e vj. Em um grafo completo quaisquer dois vértices distintos são adjacentes (Kn)
K1
K2
K3
K4
K5
K6
K7
K8 17
Terminologia
Um caminho de comprimento k de um vértice u até um vértice u’ em um grafo G=(V,E) é uma seqüência de vértices tais que u=V0, u’=Vk e (Vi-1,Vi)∈ E para i=1,2,...,k O comprimento de um caminho é o número de arestas no caminho Se existe um caminho de u até u’ dizemos que u’ é acessível a partir de v Um caminho simples é aquele em que todos os vértices no caminho são distintos é um caminho simples não é um caminho simples 18
Terminologia
Em um grafo orientado, um caminho forma um ciclo se V0=Vk e o caminho contém pelo menos uma aresta Ciclo simples é um ciclo no qual os vértices V1,V2,...,Vk são distintos Um autoloop é um ciclo de comprimento 1 Um grafo sem ciclos é acíclico é um ciclo é um ciclo simples
19
Terminologia
Um grafo não orientado é conectado se todo par de vértices está conectado por um caminho Cada um dos subgrafos conectados é chamado de componente Os componentes conexos de um grafo são as classes de equivalência de vértices sob a relação “é acessível a partir de”
grafo não conectado com 5 componentes 20
Terminologia
Um grafo orientado é fortemente conectado se cada um de dois vértices quaisquer é acessível a partir do outro Os componentes fortemente conectados de um grafo orientado são as classes de equivalência de vértices sob a relação “são mutuamente acessíveis”
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 vértices de G são todos os vértices de G As arestas de G são exatamente as arestas que faltam em G para formarmos um grafo completo
G
G 22
Terminologia
Um grafo bipartido é um grafo não orientado G=(V,E) em que V pode ser particionado em dois conjuntos V1 e V2 tais que (u,v)∈E implica que: u∈V1 e v∈V2 ou u∈V2 e v∈V1 Em um grafo bipartido, todas as arestas ligam um vértice do conjunto V1 com um vértice do conjunto V2 a b
d
c
e
a
b
c
d 23
Terminologia
Dois grafos G e H são ditos isomorfos se existir uma correspondência um-para-um entre seus vértices e entre suas arestas, de maneira que as relações de incidência são preservadas e
a
c b
d
5 4
a
b
c
d
e
f
1
2
3 6
1
2
3
5
4
24
Terminologia
Condições necessárias mas não suficientes para que G e H sejam isomorfos:
mesmo número de vértices mesmo número de arestas mesmo número de componentes mesmo número de vértices com o mesmo grau
Exemplo:
d
5 1
2
3
4 6
a
b
c
e
f
Não existe um algoritmo eficiente para determinar se dois grafos são isomorfos 25
Número de Vértices de Grau Ímpar
A soma dos graus de todos os vértices de um grafo G é duas vezes o número de arestas de G. n
∑ d(vi) = 2 e
i =1
O número de vértices de grau ímpar em um grafo é par n
∑ d(vi) =
i =1
∑ d(vj) par
d(vj) +
∑ d(vk)
d(vk)ímpar
26
Exercícios 1. Todos os grafos abaixo são isomorfos, exceto:
(a)
(b)
(d)
(c)
(e) 27
Exercícios 2. Com relação ao grafo completo Kn, responda: a) Qual é o grau dos seus vértices? b) Quantas arestas ele possui?
3. Encontre um grafo com 5 vértices que seja isomorfo a seu complemento. 4. Qual o número de arestas de um grafo que é isomorfo a seu complemento?
28
Exercícios 5. Com relação ao grafo abaixo, responda: v4 v5
v3 v1 a) b) c) d) e) f) g)
v7
v2 v6
O grafo é simples? Completo? Regular? Conectado? Encontre 2 caminhos simples entre V3 e V6 Encontre 1 ciclo Indique uma aresta cuja remoção tornará o grafo não conectado 29
Número Mínimo e Máximo de Arestas
O número mínimo de arestas de um grafo simples com n vértices e k componentes é n-k O número máximo de arestas de um grafo simples com n vértices e k é (n − k )(n − k + 1) 2
Grafo simples e conexo
Grafo simples
n(n + 1) n −1 ≤ e ≤ 2
( n − k )(n − k + 1) n−k ≤ e ≤ 2
30
Estruturas de Dados
Cormen – páginas 419 até 422
31
Matriz de Adjacências
A matriz de adjacências de um grafo simples G com n vértices é uma matriz n x n, definida como:
Mij = 1, se existe uma aresta entre os vértices i e j Mij = 0, caso contrário
Vantagem: verificar adjacência é O(1)
32
Lista de Adjacências
Consiste de uma lista para cada vértice do grafo contendo todos os vértices adjacentes a ele Armazena apenas os elementos diferentes de zero da matriz de adjacências
Desvantagem: para encontrar se um vértice é adjacente a outro devemos percorrer uma lista encadeada Adequada quando e d[u] + w(u,v) then d[v] ← d[u] + w(u,v) π[v] ← u
142
Algoritmo de Dijkstra
143
Algoritmo de Dijkstra
144
Coloração
Deo – páginas 165 até 169 e 186 até 190
145
Coloração de Grafos
Dado um grafo G, como pintar seus vértices com várias cores de maneira que vértices adjacentes são pintados com cores diferentes? Qual é o menor número de cores necessárias? v5
v1
v3
v2
v4
Dado um grafo G sem autoloops, uma coloração de G é uma atribuição de cores aos vértices de G de maneira que cores diferentes são atribuídas a vértices adjacentes 146
Coloração de Grafos
Se existe uma coloração para um grafo G que utiliza K cores, então G é um grafo K-colorido O número cromático de um grafo G, denotado por X(G), é o menor número K para o qual G é K-colorido
X(G) = 3 147
Coloração de Grafos
Observações
Não precisamos considerar grafos desconexos porque as cores utilizadas em um componente não tem efeito sobre as do outro componente Arestas paralelas não afetam a coloração Grafo não pode ter loops
GRAFOS CONEXOS SIMPLES
148
Coloração de Grafos
O que podemos dizer sobre o número cromático dos seguintes grafos?
grafo que consiste de um único vértice grafo com pelo menos uma aresta grafo completo Kn grafo bipartite árvore com 2 ou mais vértices
Todo grafo 2-cromático é bipartido?
Todo grafo 2-cromático é uma árvore?
149
Coloração de Circuitos
Um grafo consistindo simplesmente de um circuito com n≥3 vértices é 2-cromático se n é par e 3-cromático se n é impar
Um grafo simples G com pelo menos uma aresta é 2cromático se, e somente se, G não contiver circuitos de tamanho ímpar
150
Coloração de Grafos
Se d é o maior grau dos vértices de um grafo simples G então
X(G) ≤ d+1
Se d é o maior grau dos vértices de um grafo simples G, tal que G não contém um grafo circuito com um número ímpar de vértices e nem um grafo completo, de d+1 vértices, então
X(G) ≤ d
151
Exercícios 23. Qual é o número cromático dos seguintes grafos?
a)
b)
152
Coloração de Arestas
Uma coloração de arestas de um grafo simples G é uma atribuição de cores às arestas de G de maneira que cores diferentes são atribuídas a arestas adjacentes Se existe uma coloração de arestas para um grafo G que utiliza K cores, então, G é um grafo K-colorido de arestas O índice cromático de um grafo G, denotado por X’(G) é o menor número K para qual G é K-colorido de arestas
153
Coloração de Arestas
Se G é um grafo simples cujo vértice de maior grau tem grau d, então d ≤ X’(G) ≤ d+1
Qual é a coloração de arestas do Kn?
154
Coloração de Arestas
Três professores lecionam disciplinas em 4 períodos do curso: 1º Período 2º Período
João
3º Período
José
4º Período
Ana
Como alocar horários para as aulas, sem que haja conflito para os professores e para as turmas?
155
Exercícios 24. Mostre que se um grafo bipartido possui algum circuito, esse deve ser de tamanho par. 25. Qual é o índice cromático do Cn? 26. Qual é o índice cromático do Kn? 27. Encontre o X’(G) para os seguintes grafo G:
(a)
(b)
156
Independência Dominância Casamento Deo – páginas 169 até 173 e 177 até 182
157
Conjunto Independente
Uma coloração de um grafo induz a um particionamento dos vértices em subconjuntos de vértices chamados conjunto independentes Conjunto independente: conjunto de vértices do grafo no qual nenhum par de vértices do conjunto é adjacente
158
Conjunto Independente
Conjunto independente máximo: conjunto independente no qual nenhum vértice pode ser adicionado sem destruir a independência Número de independência: número de vértices do maior conjunto independente máximo do grafo (β(G))
159
Conjunto Dominante
Conjunto dominante: conjunto de vértices do grafo que “dominam” todos os vértices do grafo: um vértice v pertence ao conjunto dominante ou é adjacente a um vértice que pertence. Conjunto dominante mínimo: conjunto dominante com o menor número de vértices. α(G)
160
Casamento
Uma agência de casamentos tem cadastrados r rapazes e m moças que desejam se casar. A agência detectou a seguinte afinidade entre eles: R a p a z e s
M o ç a s
Como maximizar o número de casamentos? 161
Casamento
Um casamento em um grafo é um conjunto de arestas no qual nenhum par de arestas do grafo é adjacente Casamento máximo é um casamento no qual nenhuma aresta pode ser incluída Casamento completo (em grafos bipartidos) é um casamento no qual todos os vértices de um dos conjuntos são casados a algum vértice 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 vértices de V1 for coletivamente adjacente a r ou mais vértices de V2 para todos os valores possíveis de r. s1 c1 s2 c2 s3 c3 s4 s5
V1
V2 163
Exercícios 29. Encontre um casamento máximo e um casamento completo para o seguinte grafo bipartido. a b c d e f g
1 2 3 4 5 6
164
Exercícios 30. Encontre um conjunto dominante mínimo em cada um dos seguintes grafos:
(a)
(b)
165
Coberturas
Deo – páginas 182 até 186
166
Cobertura de Vértices
Em um grafo G, um conjunto g de vértices é chamado de cobertura de vértices se todas as arestas de G são incidentes a pelo menos um vértice de g Se este conjunto é o menor com tal propriedade dizemos que g é uma cobertura mínima de vértices
167
Cobertura de Arestas
Em um grafo G, um conjunto e de arestas é chamado de cobertura de aresta se todos os vértices de G são incidentes a pelo menos uma aresta de e Se este conjunto é o menor com tal propriedade dizemos que e é uma cobertura mínima de aresta
168
Exercícios 31. Quantos vértices existem em uma cobertura mínima de vértices de grafos bipartidos, grafos completos e grafos circuitos? 32. Podemos dizer que o número de vértices de uma cobertura mínima de vértices é sempre maior ou igual ao número de vértices do conjunto dominante mínimo? Justifique. 33. Dado um grafo conexo G, quais arestas estarão sempre presentes em todas as coberturas de aresta de G? 34. Dê exemplos de grafos que não possuem cobertura de aresta.
169
Modelagens
170
Exemplo 1
A rainha é a peça mais poderosa do jogo de Xadrez. Numa jogada ela pode mover-se tantas casas quantas quiser em qualquer direção vertical, horizontal ou diagonal, desde que não haja nenhuma outra peça que obstrua sua passagem. O desenho que se segue mostra uma posição particular da rainha, juntamente com as 27 possibilidades de movimento. Estas 27 casas (além daquela onde a rainha está) estão sob o domínio da rainha. Qualquer outra peça que estivesse numa destas casas estaria sob ataque da rainha em questão.
171
Exemplo 1 (cont.)
Encontre o número máximo 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 solução para ele. Encontre o menor número de rainhas que podem ser colocadas em um tabuleiro de forma que toda posição não ocupada seja atacada. Modele este problema utilizando Teoria dos Grafos e proponha uma solução para ele.
172
Exemplo 2
Uma empresa possui N tarefas a serem executadas e K funcionários já contratados. Muitas das tarefas são complexas e exigem trabalho especializado, de modo que a partir das características de cada funcionários e de cada tarefa, a empresa já designou quais funcionários estarão responsáveis por quais tarefas. Se todos os funcionários designados para uma determinada tarefa estiverem disponíveis, esta tarefa poderá ser executada em uma hora. A empresa deseja saber o número mínimo de horas que serão necessários para que todas as tarefas sejam executadas. Modele este problema utilizando teoria de grafos e proponha uma solução para ele.
173
Exemplo 3
Suponha que N candidatos a uma vaga devem ser entrevistados individualmente por profissionais de uma empresa. Os entrevistadores são escolhidos de acordo com a área de atuação que o candidato está pleiteando Como determinar o número mínimo de períodos de entrevista considerando que cada profissional entrevista individualmente cada candidato? Como determinar o número mínimo de períodos de entrevista considerando que todos os profissionais entrevistam conjuntamente todos os candidatos no mesmo período.
174
Exemplo 4
Existem 2n meninas que toda manhã vão andando para o colégio em grupo de 2. Encontre o número de dias que serão necessários para que cada garota saia exatamente 1 vez com todas as outras meninas.
175
Exemplo 5
Neste ano, Maria ficou responsável pela organização da quadrilha do seu bairro. Sabe-se que existem n meninas e n meninos dispostos a participar. Ela gostaria de saber de quantas maneiras possíveis 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 solução para ele.
176
Exemplo 6
Suponha que n times estão participando de uma competição 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 serão necessárias para finalizar este torneio? Modele este problema utilizando teoria de grafos e proponha uma solução para ele.
177