Coloração e Planaridade
“Pois todos pecaram e estão destituídos da Glória de Deus, sendo justificados gratuitamente por sua graça, por meio da redenção que há em Cristo Jesus”
2
Problema 1
• Um zoológico tem várias seções e em cada seção só convivem espécies que não predam uma à outra
• Deseja-se determinar o número mínimo de seções que podem ser construídas para
abrigar todos os animais • Como tratar um grafo?
Problema 2
• Dado um projeto de um circuito, que mostra os pinos que precisam ser interligados por fios (para passar algum sinal elétrico)
• Deseja-se construir este circuito em uma placa plana sem cruzar os fios
• Como determinar se é possível? Como tratar com grafos?
4
Problema 3
• Para pintar um “mapa político”, é importante não deixar estados vizinhos com mesma cor • Quantas cores são suficientes para pintar
qualquer mapa?
6
Problema
• Em uma festa, cada pessoa é amiga de precisamente k outras pessoas do sexo
oposto presentes à festa. Prove que, em uma festa assim, o número de mulheres é igual ao número de homens.
Grafo Bipartido
• Grafo cujo conjunto de vértices V pode ser “partido” em dois conjuntos disjuntos V1 e
V2 , de modo que não haja arestas ligando
dois vértices do mesmo conjunto
– Ou seja, os vértices de V1 só podem ter arestas
ligando-os a vértices de V2, e vice-versa
8
Grafo Bipartido
• Exemplo
Grafo Bipartido
• Como reescrever o lema do aperto de mãos para grafos bipartidos G = (V1 + V2, E) ?
• Use o resultado para resolver o problema anterior
10
Grafo Bipartido Completo
• Cada vértice tem aresta para todos os vértices da outra partição
• Nomenclatura: Km,n , para grafos com uma partição de
m elementos e outra com n
Grafo K-Partido
• Generalização do conceito anterior
• É um grafo cujo conjunto de vértices pode ser particionado em k conjuntos disjuntos, de
modo que não haja arestas entre vértices de um mesmo conjunto
12
Grafos K-Partidos
• Exemplo de grafo 3-partido
– No diagrama, vértices de uma mesma partição aparecem alinhados verticalmente
Grafos K-Partidos
• Atenção: para ser k-partido, o grafo não precisa necessariamente ter as suas k
partições explicitamente representadas – basta que se prove que elas existem
• Um problema importante é o de descobrir
se um grafo qualquer é k-partido, para
um valor k dado
– Relacionado a qual dos problemas dados no início da aula?
14
• Como atribuir cores aos vértices sem que vértices adjacentes recebam as mesmas cores?
• Origem: coloração de mapas políticos
– Quantas cores são necessárias para colorir um mapa qualquer?
Problemas de Coloração dos
Vértices
16
• Uma coloração própria de um grafo consiste em atribuir uma cor a cada vértice, evitando que vértices vizinhos tenham a mesma cor
– Chamaremos apenas de coloração
• Uma coloração que use no máximo k cores é chamada uma k-coloração própria
– Chamaremos apenas de k-coloração
• O grafo é chamado k-colorível sse existir uma k-coloração própria para ele
Problemas de Coloração dos
Vértices
• Achar uma k-coloração equivale ao problema de encontrar k partições dos vértices de
modo que não haja arestas dentro de cada partição
– Ou seja, é o mesmo que descobrir se o grafo é k-partido
• Teorema:
Problemas de Coloração dos
Vértices
18 • O número mínimo de cores que pode ser
usado para colorir um grafo é chamado o
número cromático do grafo
• Ou seja, o número cromático é o menor valor
k tal que o grafo é k-colorível
Problemas de Coloração dos
Vértices
Complexidade
• Dois problemas principais de coloração:
– Testar se existe uma k-coloração (para um k fixo) é NP-Completo
– Achar o número cromático de um grafo é NP-Difícil (NP-Hard)
• Todo problema NP pode ser “convertido”, em tempo polinomial, para uma instância deste problema
20 • Algoritmos que encontram as soluções exatas
são ineficientes, mas existem algoritmos heurísticos eficientes
• Varemos apenas uma “estratégia” para criar
algoritmos heurísticos (inexatos,
não-ótimos)
– Algoritmos de Coloração Sequencial ou Coloração
Gulosa
Coloração Sequencial / Gulosa
• Recebe um grafo G e um valor k
• Considera as cores ordenadas em uma seqüência {C1, C2, ..., Ck}
• Para cada vértice, testa cada uma das cores, na ordem, até achar a primeira permitida
22
Coloração Sequencial / Gulosa
• Pseudo-código
SEQ-COLORING( grafo G , natural k )
para todo vértice v
para cada Ci = C1, ..., Ck (nesta ordem) se (v não tem vizinho com a cor Ci) cor[v] = Ci
Coloração Sequencial / Gulosa
• Algoritmos desta estratégia variam quanto à
ordem em que os vértices são coloridos
– Loop externo
• Algumas possibilidades para definir a ordem
– A ordem de visita em uma busca em largura
– A ordem de visita em uma busca em profundidade – Por ordem do grau do vértice
– O próximo vértice é o que tem maior diversidade de cores em sua vizinhança (vértice mais restringido)
24 • Um caso especial importante do problema de
coloração é o problema de coloração em
grafos planares
• Veremos a definição desse tipo de grafo a seguir...
Problemas de Coloração dos
Vértices
26
Problema das Três Casas
• É possível ligar os três serviços às três casas sem cruzar tubulação?
Grafos Planares
• O problema das três casas e três serviços é o problema de descobrir se o grafo tem uma
incorporação planar (planar embedding)
– Uma representação no plano (2D) em que não há intersecção entre arestas
• Um grafo é chamado planar sse ele tem uma incorporação planar
28
Exemplo
Exemplo
30
Grafos Planares
• Grafos planares surgem naturalmente na representação de terrenos reais
• Exemplos
– O problema das Pontes de Königsberg – Representação de Mapas
Grafos Planares
• Como identificar se um grafo é planar?
• É preciso desenhar o grafo no plano para identificar?
32
Teorema de Kuratowski (informal)
• Um grafo é planar sse ele não tiver
subgrafo “derivado” de um desses grafos:
– Do grafo completo de cinco vértices (K5)
– Ou do grafo bipartido completo com três + três vértices (K3,3)
Problema das Três Casas
• Veja que, no problema, três casas tem que ser ligadas a três serviços
• Isso corresponde exatamente a um grafo
K3,3 , que, pelo Teorema anterior, não é
planar
Subdivisão de Aresta
• Dada uma aresta e assim
• Uma subdivisão de e consiste em:
– acrescentar um novo vértice w e
– trocar a aresta e por duas novas arestas assim:
Subdivisão de um Grafo
• Uma grafo H é uma subdivisão do grafo G sse:
– H pode ser formado a partir de G por subdivisões de
36
Teorema de Kuratowski
• Um grafo é planar sse ele não tem subgrafo formado pela subdivisão de um desses
grafos:
– Do grafo completo de cinco vértices (K5)
– Ou do grafo bipartido completo com três + três vértices (K3,3)
Exemplo
38
Exemplo
• Não, pois ele apresenta como subgrafos tanto o K3,3 como o K5
• São dois problemas distintos
1. Testar se um grafo é planar
2. Achar uma incorporação plana do grafo (desenhar no plano sem cruzar aresta)
• Eles modelam qual dos três problemas do início da aula?
40
Algoritmos
• Problema de testar se é planar
– Existem algoritmos baseados no teorema de Kuratowski – Alguns bem eficientes: tempo O(E)
– Não veremos porque são difíceis de entender
• Problema de achar uma incorporação
plana
– Também tem algoritmos eficientes: tempo O(E) – Também são difíceis de entender
Coloração de Grafos
Planares
42
História
• Na década de 1850, Francis Guthrie observou que era
possível pintar os condados da Inglaterra com apenas quatro
cores sem que condados vizinhos tivessem a mesma cor
• Ele observou que o mesmo acontecia com outros mapas
• Nascia a “Conjectura das Quatro Cores”: qualquer mapa planar pode ser pintado com apenas quatro cores
Conjectura das 4 Cores
• O problema de colorir uma mapa é, na
verdade, o problema de colorir os vértices de um grafo planar em que
– Cada região do mapa é um vértice
44
História
• Francis contou dessa conjectura ao seu irmão, Frederick, que a apresentou a De Morgan
– O mesmo De Morgan das leis de teoria dos conjuntos
• De Morgan popularizou a conjectura, mas não conseguiu provar que era verdade
• A primeira “prova” surgiu em 1879 por Kempe, mas foi desmentida por Heawood em 1890
– Heawood ainda conseguiu provar que a conjectura era válida para
cinco cores
História
• Finalmente, a conjectura foi provada com auxílio do computador em 1977 por Appel e Haken
– A conjectura passou a ser teorema (verdade matematicamente
comprovada)
• Eles provaram que bastaria 4-colorir 1936 grafos planares básicos específicos para provar
• Então, fizeram um programa para isso!
• Primeiro teorema importante provado com auxílio do computador
46
Teorema das 4 Cores
• O teorema pode ser expresso assim:
• Provas melhoradas, também com auxílio do
computador, foram apresentadas em 1997 e em 2005