Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Teoria</strong> <strong>de</strong> <strong>Grafos</strong><br />
Problemas <strong>de</strong> Coloração<br />
Prof. Max Pereira<br />
http://paginas.unisul.br/max.pereira<br />
1
Problemas <strong>de</strong> Coloração<br />
Problemas nos quais dois vértices<br />
adjacentes não po<strong>de</strong>m ter a mesma cor e<br />
que utilize o número mínimo <strong>de</strong> cores para<br />
colorir os vértices do grafo.<br />
2
Problemas <strong>de</strong> Coloração<br />
Tendo pintado os vértices, é possível<br />
agrupá-los em diferentes conjuntos -<br />
problemas <strong>de</strong> particionamento.<br />
A coloração (particionamento) po<strong>de</strong> ser<br />
executada em arestas, vértices ou faces do<br />
grafo.<br />
3
Problemas <strong>de</strong> Coloração<br />
A coloração clássica po<strong>de</strong> ser utilizada para<br />
resolver uma série <strong>de</strong> problemas <strong>de</strong> otimização<br />
combinatória que envolve o gerenciamento <strong>de</strong><br />
<strong>de</strong>terminado recurso.<br />
Os problemas po<strong>de</strong>m ser mo<strong>de</strong>lados e<br />
solucionados utilizando-se um grafo não<br />
orientado e em seguida <strong>de</strong>terminando sua k-<br />
coloração.<br />
4
Problemas <strong>de</strong> Coloração<br />
Programação <strong>de</strong> horários<br />
Alocação <strong>de</strong> faixas <strong>de</strong> frequências (rádios)<br />
5
Número Cromático<br />
Uma coloração <strong>de</strong> interesse é aquela que<br />
utiliza um número mínimo <strong>de</strong> cores.<br />
Um grafo G, que exige k cores para pintar<br />
seus vértices, e não menos, é chamado um<br />
grafo k-cromático.<br />
O número k é chamado número cromático<br />
<strong>de</strong> G.<br />
6
Número Cromático<br />
Exemplo<br />
7
O Problema da Coloração<br />
Um problema comum que ocorre quando<br />
se trabalha com a representação <strong>de</strong><br />
regiões na forma <strong>de</strong> mapas coloridos é<br />
como representá-las <strong>de</strong> forma que cada<br />
região fique visivelmente clara e distinta<br />
das <strong>de</strong>mais.<br />
8
O Problema da Coloração<br />
9
<strong>Teoria</strong> da Coloração<br />
A teoria da coloração <strong>de</strong> mapas diz ser<br />
possível colorir qualquer mapa planar<br />
utilizando no mímino quatro cores.<br />
10
O Problema da Coloração (<strong>Grafos</strong>)<br />
Uma possível abordagem seria representar<br />
o problema proposto por uma lista <strong>de</strong><br />
adjacências on<strong>de</strong> temos um vetor com as<br />
regiões que <strong>de</strong>vem ser coloridas e uma<br />
lista com os <strong>de</strong>mais elementos que são as<br />
regiões adjacentes a este.<br />
11
O Problema da Coloração (<strong>Grafos</strong>)<br />
<br />
O procedimento para se atribuir as cores certas a cada região é o<br />
seguinte:<br />
<br />
<br />
<br />
Escolhe-se uma região inicial, como por exemplo a região A e<br />
atribui-se uma cor a ela.<br />
para atribuir uma cor para B é verificado se <strong>de</strong>ntre as cores<br />
existentes, existe uma que não esteja colorindo nenhuma<br />
região adjacente a B, então essa cor <strong>de</strong>verá ser escolhida. Se<br />
todas as cores existentes estiverem sendo utilizadas em<br />
regiões vizinhas a B, então uma nova cor é criada.<br />
o raciocínio é repetido analogamente para cada uma das<br />
regiões subsequentes.<br />
12
Representação através <strong>de</strong> <strong>Grafos</strong><br />
Seja G=(V,E) um grafo e C um conjunto <strong>de</strong><br />
cores. Uma coloração <strong>de</strong> G é uma<br />
atribuição <strong>de</strong> alguma cor <strong>de</strong> C para cada<br />
vértice <strong>de</strong> G, tal que dois vértices<br />
adjacentes sempre possuam cores<br />
distintas.<br />
13
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Profundida<strong>de</strong>)<br />
Programa Principal<br />
especificar a lista <strong>de</strong> adjacências;<br />
<strong>de</strong>terminar a estrutura <strong>de</strong> cores;<br />
escolher o vertice Vi <strong>de</strong> maior grau;<br />
chamar o método Colorir_Vertice (Vi);<br />
Colorir_Vertice (Vk)<br />
se o vertice Vk ainda nao foi colorido {<br />
procurar a cor C apropriada<br />
se nao existir cor apropriada para colorir o vertice<br />
criar uma nova cor C;<br />
colorir o vertice Vk com a cor C;<br />
para todo vertice Vj adjacente a Vk faça<br />
chamar o método Colorir_Vertice (Vj)<br />
}<br />
14
Representação através <strong>de</strong> Grafo<br />
15
A: [B, F]<br />
B: [A, C, D]<br />
C: [B, D, E]<br />
D: [B, C, E, F]<br />
E: [C, D, F]<br />
F: [A, D, E]<br />
Algoritmo <strong>de</strong> Coloração<br />
(Lista <strong>de</strong> Adjacência)<br />
16
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
17
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
18
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
19
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
20
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
21
Algoritmo <strong>de</strong> Coloração<br />
(Busca em profundia<strong>de</strong>)<br />
22
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
Programa Principal<br />
lista <strong>de</strong> adjacências; estrutura <strong>de</strong> cores; criar a estrutura <strong>de</strong> fila Q;<br />
vertice Vi <strong>de</strong> maior grau e chamar o método Colorir_Vertice (Vi);<br />
marcar Vi como visitado;<br />
inserir o vertice Vi na fila Q;<br />
enquanto a fila Q nao estiver vazia<br />
u=remove o vertice da fila;<br />
para todo vertice Vj adjacente a u<br />
Se Vj não foi visitado<br />
marcar Vj como visitado;<br />
chamar o método Colorir_Vertice (Vj);<br />
inserir Vj na fila Q;<br />
Colorir_Vertice (Vk)<br />
procurar a cor C apropriada<br />
se nao existir cor apropriada para colorir o vertice Vk<br />
criar uma nova cor C;<br />
colorir o vertice Vk com a cor C<br />
23
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
24
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
25
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
26
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
27
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
28
Algoritmo <strong>de</strong> Coloração<br />
(Busca em Largura)<br />
29
Problema do Semáforo<br />
Sistema <strong>de</strong> controle das fases <strong>de</strong> semáforo<br />
em um <strong>de</strong>terminado cruzamento.<br />
Definem-se quais fluxos <strong>de</strong> veículos não são<br />
permitidos simultaneamente e o objetivo é<br />
planejar o controle dos semáforos com o menor<br />
número <strong>de</strong> fases possível.<br />
O problema do semáforo consiste em como<br />
programar um sistema <strong>de</strong> semáforos para<br />
controlar o tráfego dos veículos em um<br />
cruzamento entre ruas <strong>de</strong> modo a evitar colisões<br />
30
Problema do Semáforo<br />
As pistas AD e CB admitem tráfego<br />
nas duas direções simultaneamente,<br />
porém, entre as pistas AB e CD existe<br />
uma incompatibilida<strong>de</strong> que não po<strong>de</strong><br />
ocorrer tráfego simultâneo.<br />
31
Problema do Semáforo<br />
Resolvendo esse problema, o número cromático <strong>de</strong> G é<br />
2, sendo uma 2-coloração. Dessa forma são<br />
necessárias apenas duas fases, sendo:<br />
A para B – fase 1 (AB)=1<br />
A para D – fase 2 (AD)=2<br />
C para B – fase 1 (CB)=1<br />
C para D – fase 2 (CD)=2<br />
D para B – fase 1 (DB)=1<br />
32