Você está na página 1de 70

UNIVERSIDADE ESTADUAL DO CEARÁ

CENTRO DE CIÊNCIAS E TECNOLOGIA


PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
MESTRADO ACADÊMICO EM CIÊNCIA DA COMPUTAÇÃO

THALYSON GOMES NEPOMUCENO DA SILVA

PROPOSTA E AVALIAÇÃO DE NOVAS HEURÍSTICAS BASEADAS EM UM


PROCEDIMENTO DE DIVISÃO DE GRAFO E USO DE B-ESTRATÉGIA PARA O
PROBLEMA DE COLORAÇÃO DE VÉRTICES

FORTALEZA – CEARÁ
2016
THALYSON GOMES NEPOMUCENO DA SILVA

PROPOSTA E AVALIAÇÃO DE NOVAS HEURÍSTICAS BASEADAS EM UM


PROCEDIMENTO DE DIVISÃO DE GRAFO E USO DE B-ESTRATÉGIA PARA O
PROBLEMA DE COLORAÇÃO DE VÉRTICES

Dissertação apresentada ao Curso de Mestrado


Acadêmico em Ciência da Computação do
Programa de Pós-Graduação em Ciência da
Computação do Centro de Ciências e Tec-
nologia da Universidade Estadual do Ceará,
como requisito parcial à obtenção do título de
mestre em Ciência da Computação. Área de
Concentração: Ciência da Computação

Orientador: Prof. Dr. Leonardo Sampaio


Rocha

Co-Orientador: Prof. Dr. Gerardo Valdi-


sio Rodrigues Viana

FORTALEZA – CEARÁ
2016
Dados Internacionais de Catalogação na Publicação

Universidade Estadual do Ceará

Sistema de Bibliotecas

Silva, Thalyson Gomes Nepomuceno da.


Proposta e Avaliação de Novas Heurísticas Baseadas
em um Procedimento de Divisão de Grafo e Uso de B-
estratégia para o Problema de Coloração de Vértices
[recurso eletrônico] / Thalyson Gomes Nepomuceno da
Silva. - 2016.
1 CD-ROM: il.; 4 ¾ pol.

CD-ROM contendo o arquivo no formato PDF do


trabalho acadêmico com 69 folhas, acondicionado em
caixa de DVD Slim (19 x 14 cm x 7 mm).

Dissertação (mestrado acadêmico) - Universidade


Estadual do Ceará, Centro de Ciências e Tecnologia,
Mestrado Acadêmico em Ciência da Computação,
Fortaleza, 2016.
Área de concentração: Heurísticas em Grafos.
Orientação: Prof. Dr. Leonardo Sampaio Rocha.
Coorientação: Prof. Dr. Gerardo Valdisio Rodrigues
Viana.

1. Coloração. 2. Heurística. 3. Grafo. I. Título.


Aos meus pais.
AGRADECIMENTOS

Gostaria de agradecer aos meus familiares, por estarem ao meu lado nessa caminhada.
Aos meus amigos e colegas, por sempre estarem dispostos à me ajudar em dificuldades na
pesquisa.
À minha namorada, por ter me aguentado e me ajudado durante todo o período do mestrado.
Gostaria de agradecer aos meus orientadores, que sempre estiveram dispostos a me ajudar, até
mesmo no período de férias deles.
À UECE e todo seu corpo docente, por estarem comigo deste 2010, me ensinando e me dando
oportunidade de sempre aprender um pouco mais.
“I’m on a boat.”
(Andy Samberg)
RESUMO

O problema de Coloração de Vértices é extensivamente estudado em Teoria dos Grafos, e consiste


em colorir os vértices de um grafo de tal forma que vértices adjacentes tenham cores distintas e
que o número de cores utilizadas seja o menor possível. Neste trabalho são apresentadas quatro
novas heurísticas para o problema de coloração de vértices, baseadas em uma nova técnica
proposta de divisão de grafo e na utilização da b-estratégia para reduzir o número de cores.
Novas instâncias voltadas para a aplicação em alocação de frequências foram formuladas e
também utilizadas em testes. Nos testes computacionais, os algoritmos propostos se mostraram
competitivos em relação ao tempo de processamento e qualidade de solução, conseguindo, para
a maioria das instâncias, soluções tão boas quanto as melhores soluções conhecidas.

Palavras-chave: Coloração. Heurística. Grafo


ABSTRACT

The vertex coloring problem is extensively studied in graph theory, and consists of coloring the
vertices of a graph such that adjacent vertices have different colors and the number of colors used
is minimum. This work presents four new heuristics for the vertices coloring problem, based on
a proposal technical of graph division and a post-processing using b-coloring. New instances
focused on the allocation of frequencies were made and also used in tests. In computational
tests, the proposed algorithms proved competitive with the processing time and solution quality.
Obtaining, for most instances, as good as the best current solution algorithms in respect of
solution quality and running in a better time cost.

Keywords: Coloring. Heuristic. Graph


LISTA DE ILUSTRAÇÕES

Figura 1 – Representação em grafo de um mapa . . . . . . . . . . . . . . . . . . . . . 19


Figura 2 – Graus de cada vértice no grafo exemplo . . . . . . . . . . . . . . . . . . . 20
Figura 3 – Exemplos de um grafo G com ω(G) = 4 . . . . . . . . . . . . . . . . . . . 21
Figura 4 – Exemplos de grafos bipartido, 3-partido e 4-partido . . . . . . . . . . . . . 22
Figura 5 – Exemplos de colorações . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Figura 6 – Representação de variáveis em uso e grafo de interferência . . . . . . . . . 25
Figura 7 – Representação em grafo das estações de transmissão . . . . . . . . . . . . . 26
Figura 8 – Exemplo de transformação de Mycielski . . . . . . . . . . . . . . . . . . . 27
Figura 9 – Redução de uma classe de cor . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 10 – Diferença na coloração dependendo da sequência S . . . . . . . . . . . . . 29
Figura 11 – Execução da divisão em raiz quadrada em um grafo de 9 vértices. . . . . . 39
Figura 12 – Execução de busca em largura com utilização de passos de tamanho dois.
Nessa figura é ilustrado um grafo e 4 vértices, inicialmente, não coloridos.
Em (a), o vértice 1 é adicionado na fila para coloração. Em (b), o vértice 1 é
colorido e o vértice 3 é adicionado na fila para coloração. Em (c), o vértice
3 é colorido, e nenhum vértice é adicionado na fila, pois todos os vértices
com distância 2 do vértice 3 já foram coloridos. Em (d), os vértices 2 e 4 são
coloridos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Figura 13 – (a) Representa um grafo de 8 vértices, sendo o número escrito em cada vértice
correspondente ao respectivo índice. (b) Ilustra a coloração final do grafo (a)
caso fosse utilizado o algoritmo sequencial para sua coloração. . . . . . . . 43
Figura 14 – A figura ilustra a configuração final caso o procedimento de b-coloração fosse
aplicado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Figura 15 – (a) Apresenta a configuração da coloração do grafo após a classe de cor 2 ser
analisada. (b) Apresenta a configuração da coloração do grafo após a classe
de cor 3 ser analisada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Figura 16 – A figura ilustra o processo de geração das instâncias. Inicialmente são gerados
pontos aleatórios no plano, em seguida pontos próximos são conectados por
arestas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Figura 17 – Instância myciel3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Figura 18 – Exemplos de Queen Graphs: queen_2_2, queen_2_2, queen_2_4, queen_2_5
e queen_2_6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Figura 19 – Ilustração da instância Miles250 . . . . . . . . . . . . . . . . . . . . . . . 50
Figura 20 – Ilustração da instância Huck . . . . . . . . . . . . . . . . . . . . . . . . . . 50
LISTA DE TABELAS

Tabela 1 – A tabela apresenta os números de cores utilizadas por cada heurística em cada
instância. Os valores são apresentados de forma x → y, em que x representa a
quantidade de cores obtida pela heurística sem utilização da b-estratégia, e y
representa a quantidade de cores utilizadas ao final da b-estratégia. Na última
linha da tabela, são apresentadas as médias de cores utilizadas por cada uma
das heurísticas para o grupo de instâncias utilizado. . . . . . . . . . . . . . 52
Tabela 2 – Resumo de desempenho dos algoritmos para as instâncias da família QUEEN.
São apresentadas as quantidade de cores utilizadas por cada algoritmo em
cada instância. Também é apresentada a quantidade de vértices e a quantidade
de arestas e a densidade de cada instância. Números em negrito indicam
que foram as melhores soluções para determinada instância, considerando os
algoritmos testados. Onde é apresentado o caractere 0 −0 , indica que não se
tem dados suficientes para a inferência da informação. . . . . . . . . . . . 53
Tabela 3 – Para cada algoritmo testado, foi contabilizada a quantidade de soluções
ótimas encontradas nas 18 instâncias com ótimos conhecidos, e quantas
vezes cada algoritmo conseguiu encontrar a melhor solução entre as soluções
dos algoritmos testados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Tabela 4 – Tabela comparativa com o algoritmo DSATUR. A primeira coluna apresenta
o nome das instâncias utilizadas. Cada par de colunas posteriores apresenta
as quantidades de cores utilizadas nas colorações e os tempos de execução,
respectivamente. Nas últimas duas colunas é apresenta a quantidade de
vértices e a quantidade de arestas de cada instância. . . . . . . . . . . . . . 54
Tabela 5 – Tabela comparativa com o algoritmo FLOW. A primeira coluna apresenta o
nome das instâncias utilizadas. Cada par de colunas posteriores apresentam
as quantidades de cores utilizadas nas colorações e os tempos de execução,
respectivamente. Nas últimas duas colunas é apresenta a quantidade de
vértices e a quantidade de arestas de cada instância. . . . . . . . . . . . . . 55
Tabela 6 – Resultados médios do GRASP, BT e dos algoritmos propostos. O resultado
apresentado é a média aritmética do número de cores utilizadas nas soluções
finais em cada uma das famílias de instâncias. . . . . . . . . . . . . . . . . 56
Tabela 7 – Quantidade de cores utilizadas nas soluções para as instâncias da família MYC. 57
Tabela 8 – Comparação de tempo para MYC. . . . . . . . . . . . . . . . . . . . . . . 57
Tabela 9 – Quantidade de cores utilizadas nas soluções para as instâncias da família REG. 58
Tabela 10 – Tempo de execução das heurísticas, em segundos, para as instâncias da
família REG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Tabela 11 – Quantidade de cores utilizadas nas soluções para as instâncias da família SGB. 59
Tabela 12 – Tempo de execução das heurísticas, em segundos, para as instâncias da
família SGB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Tabela 13 – Quantidade de cores utilizadas nas soluções para as instâncias da família LEI. 60
Tabela 14 – Tempo de execução das heurísticas, em segundos, para as instâncias da
família LEI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Tabela 15 – Quantidade de cores utilizadas nas soluções para as instâncias da família
QUEEN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Tabela 16 – Tempo de execução das heurísticas, em segundos, para as instâncias da
família QUEEN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Tabela 17 – A tabela apresenta a quantidade de cores utilizadas nas soluções dos algorit-
mos RLF, DSATUR, SS1, SS2, SSP1 e SSP2 para as instâncias propostas. . 62
LISTA DE ALGORITMOS

Algoritmo 1 – Algoritmo de Busca em Largura . . . . . . . . . . . . . . . . . . . . . 22


Algoritmo 2 – Algoritmo para verificar 2-Coloração . . . . . . . . . . . . . . . . . . 23
Algoritmo 3 – Algoritmo da Construção de Mycielski . . . . . . . . . . . . . . . . . 27
Algoritmo 4 – Algoritmo Guloso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Algoritmo 5 – Algoritmo DSATUR . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Algoritmo 6 – Divisão em Raiz Quadrada . . . . . . . . . . . . . . . . . . . . . . . . 39


Algoritmo 7 – Algoritmo de Coloração por Busca em Largura . . . . . . . . . . . . . 40
Algoritmo 8 – Algoritmo Sqrt Start . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Algoritmo 9 – Algoritmo Sqrt Start Priority . . . . . . . . . . . . . . . . . . . . . . . 42
Algoritmo 10 – B-Estratégia Modificada . . . . . . . . . . . . . . . . . . . . . . . . . 45
LISTA DE ABREVIATURAS E SIGLAS

BFS Breadth-First Search


CA Cultural Algorithm
DSATUR Degree Saturation
GA Genetic Algorithm
GRASP Greedy Randomized Adaptive Search Procedure
LCA Lowest Common Ancestor
LCP Longest Common Prefix
NPC NP-Completo
PCG Problema de Coloração de Grafos
RLF Recursive-Largest-First
RMQ Range Minimum Query
SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . 19
2.1 DEFINIÇÕES DE GRAFOS . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2 Adjacência, Vizinhança e Grau . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.3 Caminho, Circuito, Conectividade e Clique . . . . . . . . . . . . . . . . 20
2.1.4 Busca em Largura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.5 Conjuntos independentes . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 PROBLEMA DE COLORAÇÃO DE GRAFOS . . . . . . . . . . . . . . . 23
2.2.1 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1.1 Problema de uso de registradores num processador . . . . . . . . . . . . . . 24
2.2.1.2 Problema de Programação de Horários . . . . . . . . . . . . . . . . . . . . 25
2.2.1.3 Problema de Fluxo Aéreo . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.1.4 Problema de alocação de frequência . . . . . . . . . . . . . . . . . . . . . . 26
2.3 CONSTRUÇÃO DE MYCIELSKI . . . . . . . . . . . . . . . . . . . . . . 27
2.4 B-COLORAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 ALGORITMOS PARA COLORAÇÃO DE VÉRTICES . . . . . . . . . . . 28
2.5.1 Algoritmos de Natureza Gulosa . . . . . . . . . . . . . . . . . . . . . . . 28
2.6 BUCKET SORT E DECOMPOSIÇÃO EM RAIZ QUADRADA . . . . . . 30
3 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . 31
3.1 UM ALGORITMO DE COLORAÇÃO DE GRAFOS PARA GRANDES
PROBLEMAS DE ESCALONAMENTO . . . . . . . . . . . . . . . . . . . 31
3.2 NOVO MÉTODO PARA COLORIR VÉRTICES DE UM GRAFO . . . . . 31
3.3 COLORAÇÃO DE GRAFOS PARA O GERENCIAMENTO DE FLUXO
AÉREO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILI-
ZANDO ALGORITMOS GENÉTICOS HÍBRIDOS . . . . . . . . . . . . . 33
3.5 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILI-
ZANDO ALGORITMOS CULTURAIS . . . . . . . . . . . . . . . . . . . 34
3.6 META-HEURÍSTICA BUSCA TABU PARA O PROBLEMA DE COLORA-
ÇÃO DE GRAFOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.7 UM GRASP PARA COLORAÇÃO DE GRAFOS ESPARSOS . . . . . . . 35
4 PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1 JUSTIFICATIVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.3 ALGORITMOS PROPOSTOS . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3.1 Divisão em Raiz Quadrada . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3.2 Utilização da BFS na coloração . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.3 Sqrt Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.4 Sqrt Start Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3.5 Modificação do procedimento de b-coloração . . . . . . . . . . . . . . . 43
4.3.6 Heurísticas Propostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.7 Formulação de instâncias . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 TESTES COMPUTACIONAIS . . . . . . . . . . . . . . . . . . . . . . . 48
5.1 INSTÂNCIAS DE DIMACS . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.1 Mycielski graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.2 Queens Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.3 Miles graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1.4 Books graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.5 Register graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.6 Leighton Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE DIMACS . 51
5.3 IMPACTO DA UTILIZAÇÃO DA B-ESTRATÉGIA . . . . . . . . . . . . . 52
5.3.1 Comparação com RLF e DSATUR . . . . . . . . . . . . . . . . . . . . . 53
5.3.2 Comparação com FLOW . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3.3 Comparação com as propostas de BT e GRASP . . . . . . . . . . . . . . 55
5.3.4 Comparação com GA e CA . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4 TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE ALOCAÇÃO
DE FREQUÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . . . 63
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
ÍNDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
17

1 INTRODUÇÃO

Qual o número mínimo de cores para colorir um mapa em que países adjacentes
possuem cores distintas? Apesar de parecer simples, esse problema despertou a atenção de vários
pesquisadores e, consequentemente, um grande empenho em resolvê-lo. Durante as pesquisas
relacionadas ao problema, foram desenvolvidos avanços em teoria dos grafos e em matemática.
Em 1852 o problema de coloração de países de um mapa foi proposto por Francis Cuthrie, ele
presumiu que países do mapa poderiam ser coloridos com no máximo quatro cores, de tal forma
que os países vizinhos não compartilhassem uma mesma cor. Porém, não sabia como provar
isso. O problema ficou conhecido como o Problema das Quatro Cores. Em 1976, Kenneth Appel
e Wolfang Haken, provaram computacionalmente que qualquer mapa pode ser colorido com
no máximo quatro cores. O problema foi estendido para ser aplicado em grafos gerais, que
consiste em colorir os vértices do grafo com um número mínimo de cores, de forma que vértices
adjacentes não compartilhem a mesma cor. Esse problema ficou conhecido como Problema de
Coloração de Grafos (KUBALE, 2004).
Alguns problemas reais podem ser modelados como um problema de coloração em
grafo, por exemplo:
• Problema de grade de horários de professores (WERRA, 1985);
• Alocação de tempo e frequência em sistemas de comunicação (GAMST, 1986);
• Alocação de registradores em um processador (CHAITIN et al., 1981);
• Controle de fluxo aéreo (BARNIER; BRISSET, 2004).
Em geral, problemas em que eventos conflitantes não podem ocorrer simultanea-
mente, podem ser modelados utilizando uma coloração de grafos, em que os vértices representam
objetos, e as arestas representam os conflitos existentes entre os objetos. A coloração é, então,
um particionamento dos objetos em conjuntos (cores), de tal forma que objetos conflitantes
(vértices adjacentes no grafos) não pertençam ao mesmo conjunto, sendo a solução do problema
a quantidade mínima de conjuntos necessários para particionar todos os objetos (LEIGHTON,
1979).
Apesar de ser um problema muito estudado, não é conhecido um algoritmo eficiente
para resolvê-lo, sendo classificado como um problema NP-Completo (GAREY; JOHNSON,
1979). O fato do problema ser classificado como NP-Completo justifica o uso de métodos
heurísticos para obter uma solução (GAREY; JOHNSON, 2002).
Inicialmente, algoritmos enumerativos de tempo exponencial foram propostos para
18

solucionar o problema, como em (BROWN, 1972), (CHRISTOFIDES, 1971), (CHRISTOFI-


DES; THEO-RY, 1975) e (JR; ACTION, 1967). Porém, estes se limitavam em solucionar o
problema para grafos pequenos. Então foram propostos algoritmos construtivos gulosos de
tempo polinomial, que não garantem a otimalidade das soluções encontradas, porém possuem
bom desempenho para grande variedade de grafos. Os algoritmos mais conhecidos atualmente
são DSATUR (BRÉLAZ, 1979) e RLF (LEIGHTON, 1979), que apesar de serem propostas
antigas, vêm sendo amplamente aplicados quando se necessita de tempo de execução pequeno,
ou para inicializar algoritmos mais robustos, como as meta-heurísticas (RUIZ, 2012).
O presente trabalho propõe novas heurísticas aplicáveis ao problema de coloração
de grafos. Para testar das heurísticas propostas, elas foram implementadas e confrontadas com
outros algoritmos encontrados na literatura.
O presente trabalho está dividido da seguinte forma:
• No Capítulo 2 são apresentadas as definições básicas de grafos necessárias para o enten-
dimento do problema abordado, Em seguida, são apresentadas definições do Problema
de Coloração de Grafos e alguns algoritmos utilizados no problema. Para finalizar, os
procedimentos de b-coloração e decomposição em raiz quadrada, são apresentados.
• No Capítulo 3 são relatados trabalhos relacionados com o presente estudo. Apresenta-se
inicialmente, os algoritmos DSATUR e RLF. Em seguida, são apresentados trabalhos que
utilizam técnicas de busca para melhorar soluções encontradas.
• No Capítulo 4 o presente trabalho é explicado em detalhes. São fornecidas as justificativas
para sua realização. São expostos os objetivos que o trabalho pretende alcançar. Também
são apresentadas as propostas do trabalho e a metodologia para alcançar os objetivos.
• No Capítulo 5 são apresentados detalhes sobre os testes computacionais realizados,
detalhando-se as instâncias utilizadas e realizando-se testes comparativos entre as propostas
apresentadas o os algoritmos relacionados.
• No Capítulo 6 são apresentadas conclusões sobre os resultados obtidos no estudo empí-
rico, destacando os pontos positivos e negativos das propostas apresentadas no trabalho.
Também são apresentados possíveis trabalhos futuros.
19

2 FUNDAMENTAÇÃO TEÓRICA

2.1 DEFINIÇÕES DE GRAFOS

Um grafo é uma abstração matemática. Eles são utilizados para modelar situações
reais, onde os vértices representam objetos e as arestas representam os relacionamentos entre
esses objetos. A Teoria dos Grafos tem sido utilizada amplamente em várias áreas da ciência,
pois é possível representar qualquer tipo de relacionamento entre elementos de uma determinada
natureza (FEOFILOFF et al., 2011). Nessa seção, vamos definir um grafo e seus elementos.
As definições foram baseadas em (DIESTEL, 2000), e são voltadas para grafos finitos e não
direcionados.

2.1.1 Grafo

Um grafo é um dupla G(V, E), que consiste em um conjunto finito não vazio V =
{v1 , v2 , ..., vn } de vértices e um conjunto finito E = {e1 , e2 , ..., em } de arestas. Por exemplo,
grafos podem representar um mapa, onde seus vértices são as regiões delimitadas por suas
fronteiras, e suas arestas representam a existência de uma fronteira entre regiões do mapa.

Figura 1 – Representação em grafo de um mapa

O conjunto de vértices de um grafo pode ser denotado por V (G), e o conjunto de


arestas como E(G). O número de vértices de um grafo G(V, E) é denotado por n(G), e o número
de arestas por m(G). Uma aresta {v, u} liga os vértices v e u. Por simplificação também podemos
denotar a aresta entre os vértices v e u por vu. Dado dois grafos G(V, E) e G0 (V 0 , E 0 ), dizemos
que G0 é subgrafo de G se V 0 ⊆ V e E 0 ⊆ E.
20

2.1.2 Adjacência, Vizinhança e Grau

Um vértice v é incidente a uma aresta e se v é uma extremidade de e. Dois vértices


v e u são ditos adjacentes se eles são incidentes a uma mesma aresta e. O conjunto de arestas
que um vértice v é incidente é denotado por E(v). A vizinhança de um vértice v, é o conjunto de
vértices de V que são adjacentes à v, e é detonado como N(v). O grau de um vértice v é igual a
quantidade de vértices na vizinhança de v e é denotado por d(v). O número que representa o
grau de um grafo G, ∆(G) := max{d(v)|v ∈ V }, é o maior grau de um vértice de G.

Figura 2 – Graus de cada vértice no grafo exemplo

2.1.3 Caminho, Circuito, Conectividade e Clique

Um caminho simples é um grafo não vazio P(V, E), de tal forma que V = {x0 , x1 , . . . , xk }
e E = {x0 x1 , x1 x2 , . . . , xk−1 xk }, onde os vértices xi são todos distintos. Os vértices x0 e xk são
chamados de extremos. O tamanho do caminho é igual ao número de arestas de E. Um caminho
P também pode ser denotado por x0 x1 . . . xk . A distância entre dois vértices v e u é igual ao
tamanho do menor caminho simples em que v e u sejam extremos.
Um circuito é um grafo C(V, E), de tal forma que V = {x0 , x1 , . . . , xk }, E = {x0 x1 , x1 x2 , . . . , xk x0 }
e |V | ≥ 3, onde os vértices xi são todos distintos. O tamanho do circuito é igual ao número de
arestas de E.
Dois vértices distintos v e u estão conectados se existe um caminho em que v e u
sejam extremos. Um grafo G(V, E) é conexo se para qualquer par de vértices v e u, existe um
caminho em que v e u são extremos, caso contrário, dizemos que o grafo é desconexo. Um grafo
completo G(V, E) é um grafo, tal que para qualquer par de vértices v e u, então vu ∈ E. Uma
clique em um grafo G(V, E) é um subgrafo completo de G. Detonamos como ω(G) o tamanho
21

da clique de tamanho máximo no grafo G. Na Figura 3 é apresentado um grafo que possui uma
clique de tamanho 4.

Figura 3 – Exemplos de um grafo G com ω(G) = 4

A densidade de um grafo G(V, E) representa a relação entre quantidade de arestas e


a quantidade máxima de arestas suportadas pelo grafo simples não orientado, dada pela fórmula
2·|E|
D = |V |·(|V |−1) (COLEMAN; MORÉ, 1983). Podemos perceber que o número máximo de arestas
de um grafo de |V | vértices é |V | · (|V | − 1)/2, quando temos um grafo completo. Portanto, a
densidade pode variar entre 1 e 0.

2.1.4 Busca em Largura

Um algoritmo de busca em grafo examina de forma sistemática os vértices de um


grafo. Um dos algoritmos de busca conhecido, é o algoritmo BFS, que realiza uma busca em
largura no grafo.
Uma busca em largura iniciada em um vértice v, primeiramente, visita o vértice v.
Em seguida, visita todos os vértices que estão à distância 1 de v, em seguida, todos os vértices
que estão à distância 2 de v, e assim sucessivamente.
Para implementar a BFS, é necessário utilizar uma fila e uma estrutura de marcação
para evitar que se visite mais de uma vez um mesmo vértice. O Algoritmo 1 apresenta o
pseudocódigo do algoritmo de busca em largura.
22

Algoritmo 1: Algoritmo de Busca em Largura


Entrada: Um grafo G(V, E) e um vértice inicial v.

Inicializa uma fila F de vértices;


Inicializa a marcação dos vértices em 0 (não adicionado na fila);
Adiciona v na fila;
Altera a marcação de v para 1 (adicionado na fila);
while |F| 6= 0 do
v ← remover(F);
Visita v;
for Cada vértice x na vizinhança de v do
if A marcação de x é 0 (não adicionado na fila) then
Adiciona x na fila;
Altera a marcação de x para 1 (adicionado na fila);
end if
end for
end while

2.1.5 Conjuntos independentes

Um conjunto independente de vértices de um grafo G(V, E) é um conjunto S, S ⊆ V ,


tal que não existe dois vértices adjacentes em G contidos em S. Dado um inteiro r ≥ 2 e um grafo
G(V, E), dizemos que G é r-partido se os vértices de G podem ser particionados em r conjuntos
independentes. Usualmente, os grafos 2-partidos são chamados de bipartidos.

Figura 4 – Exemplos de grafos bipartido, 3-partido e 4-partido

Determinar se um grafo é bipartido é equivalente a determinar se o grafo pode ser


colorido utilizando duas cores, de tal forma que vértices adjacentes não compartilhem a mesma
cor. Para isso, podemos utilizar uma busca em largura, verificando se é possível bipartir o grafo
em tempo linear. Tal algoritmo é exposto no Algoritmo 2.
23

Algoritmo 2: Algoritmo para verificar 2-Coloração


Entrada: Um grafo G(V, E).
Saída: Sim se o grafo for 2-colorível e Não caso contrário.

Inicializa Cor de todos os vértices em 0 (sem cor).


Inicializa uma fila F de pares (v, c), onde v é um vértice e c é a cor utilizadas;
Adiciona (1, 1) na fila;
while |F| 6= 0 do
(v, c) ← remover(F);
if Cor de v é diferente de 0 then
if Cor de v diferente de c then
Retorna: Nao;
end if
else
Colore v com a cor c;
if c = 1 then
c←2
else
c←1
end if
Para cada vértice x na vizinhança de v, adiciona na fila (v, c);
end if
end while
Retorna: Sim;

2.2 PROBLEMA DE COLORAÇÃO DE GRAFOS

A coloração de vértices de um grafo é uma atribuição de cores aos vértices de tal


forma que vértices vizinhos não compartilham uma mesma cores. Também existem derivações
desse problema, como a coloração de arestas e a coloração de mapas. É possível transformar o
problema de coloração de mapas no problema de coloração de vértices, fazendo com que cada
país seja representado por um vértice, e cada fronteira entre dois países seja representada por
uma aresta.

Definição 2.2.1 (Coloração) Dado um grafo G(V, E), e um conjunto de cores S = s1 , s2 , . . . , sN ,


uma coloração do grafo é uma atribuição de cores aos vértices, de tal forma que para qualquer
dois vértices adjacentes em G, eles não compartilham uma mesma cor.

Definição 2.2.2 (k-coloração) Uma coloração de um grafo G(V, E) é dita uma k-coloração
quando o conjunto de cores S utilizado possui k cores, |S| = k.
24

Definição 2.2.3 (k-colorível) Um grafo é dito k-colorível se ele possui uma k-coloração.

Observação 2.2.1 Os vértices associados a uma cor formam uma classe de cores. Em uma
coloração, cada classe é um conjunto independente. Os únicos grafos que podem possuir uma
1-coloração são aquelas que não possuem arestas.

Definição 2.2.4 (Número cromático) O número cromático χ(G) é o menor inteiro k tal que G
seja k-colorível.

Figura 5 – Exemplos de colorações

Definição 2.2.5 (Coloração ótima) Um grafo G(V, E) é k-cromático se χ(G) = k. Uma k-


coloração de um grafo k-cromático é dita coloração ótima.

Teorema 2.2.1 (Teorema de Brooks (BROOKS, 1941)) Para qualquer grafo G(V, E), o nú-
mero cromático χ(G) é no máximo ∆(G) + 1.

Observação 2.2.2 Se um grafo for completo, será necessário colorir cada vértice utilizando
cores diferentes, logo χ(G) = |V |.

2.2.1 Aplicações

2.2.1.1 Problema de uso de registradores num processador

A partir de um conjunto de variáveis e um conjunto de registradores disponíveis, O


problema consiste em determinar os registradores que iram armazenar quais variáveis de um
determinado escopo de um programa, de tal forma que minimize a quantidade de acessos à
memória (CHAITIN et al., 1981).
Durante a fase de compilação de um programa, o compilador decide como será
a alocação das variáveis em um conjunto de registradores. Para isso, não se pode realizar a
25

alocação de duas variáveis que ainda estão em uso em um mesmo registrador, uma vez que uma
variável está em uso se seu valor atual ainda será utilizado em uma instrução futura (CHOW;
HENNESSY, 1990). Para exemplificar, visualizamos na Figura 6, retirada de (PROLO, 2007),
que a variável s1 se mantém em uso da instrução a até a instrução e, enquanto a variável s2
se mantém em uso da instrução b até a instrução f . Após identificar os intervalos de usos das
variáveis, é necessário gerar um grafo de interferência, conectando variáveis que são utilizadas
durante intervalos coincidentes.

Figura 6 – Representação de variáveis em uso e grafo de interferência

2.2.1.2 Problema de Programação de Horários

Essa classe de problema consiste em definir o emprego de recursos em intervalos de


tempo, a fim de otimizar uma configuração, sujeito a restrições específicas de cada problema
(WERRA, 1985). Por exemplo, caso uma instituição de ensino deseje destinar um período
exclusivamente para aplicação de provas a fim de realiza-las com o menor número possível
de dias, duas provas não podem ser realizadas no mesmo intervalo de tempo se é o mesmo
professor que irá aplicá-las, ou se será aplicada na mesma turma, ou se será aplicada na mesma
sala (BELLO et al., 2007).
Existe uma variedade de problemas relacionados com a programação de horários,
por exemplos, o problema de grade de horário de professores (ERBEN; KEPPLER, 1996)
(NEUFELD; TARTAR, 1974), o problema do horário de trens (CAPRARA et al., 2002) e o
problema de horário de semana de provas (CARTER, 1986).
26

2.2.1.3 Problema de Fluxo Aéreo

Essa classe de problemas consiste em determinar a quantidade mínima de alturas


que são necessárias para manter um determinado fluxo aéreo. Em uma fluxo aéreo ideal, todos
os voos são diretos, se deslocando sem escalas a partir de uma origem para um destino. Porém
conflitos podem acontecer, como aviões utilizarem a mesma rota e também a mesma altura,
o que poderia ocasionar colisões. Para solucionar o problema, podemos alocar os aviões que
poderiam se chocar, em alturas diferentes (BARNIER; BRISSET, 2004).

2.2.1.4 Problema de alocação de frequência

Essa classe de problemas consiste em determinar quais as frequências que serão


utilizadas para a comunicação em uma rede, a fim de minimizar a quantidade de frequências
necessárias. Existem algumas variações desse problema. Em (DIAS et al., 2012) o problema
é modelado para minimizar canais em telefones celulares. Em (GANDHAM et al., 2008) o
problema é modelado para minimizar o tempo do ciclo na comunicação em rede sem fio. Em
(GAMST, 1986) é estudado limites inferiores para problemas de alocação de frequências.
Tomando como exemplo estações de rádio, onde cada estação necessita utilizar uma
frequência única em uma determinada região, para que não ocorra interferência. Considerando
que cada estação possua um raio de transmissão em que ela consiga estabelecer uma comunicação,
podemos utilizar coloração de grafos para resolver o problema (CHARTRAND; ZHANG, 2012).
Tal situação ilustrada em na Figura 7.

Figura 7 – Representação em grafo das estações de transmissão


27

2.3 CONSTRUÇÃO DE MYCIELSKI

Um grafo obtido pela construção de Mycielski a partir de um grafo G é denotado


como µ(G) (MYCIELSKI, 1955). A construção de µ(G) a partir dex um grafo G(V, E) é
conseguida utilizando o Algoritmo 3.

Algoritmo 3: Algoritmo da Construção de Mycielski


Entrada: Um grafo G(V, E).
Saída: Um grafo µ(G).

µ(G) ← G
Adicione um vértice k ao grafo µ(G);
for Cada vértice v ∈ G do
Adicione um vértice v0 em µ(G);
Adicione uma aresta kv0 em µ(G);
end for
for Cada aresta vu ∈ G do
Adicione uma aresta vu0 em µ(G);
Adicione uma aresta v0 u em µ(G);
end for

RETORNE: µ(G);

O passo a passo de uma construção de Mycielski é ilustrado na Figura 8. Na


transformação de Mycielski de um grafo G com χ(G) = k, o grafo final µ(G) terá χ(µ(G)) =
k + 1, o que nos dá controle sobre o número cromático de instâncias geradas utilizando essa
construção, tomando como base instâncias com o número cromático conhecido. Ao final da
construção, |V (µ(G))| = 2 · |V (G)| + 1 e |E(µ(G))| = 3 · |E(G)| + |V (G)|.

Figura 8 – Exemplo de transformação de Mycielski


28

2.4 B-COLORAÇÃO

Em uma b-coloração de um grafo G(V, E), cada classe de cor utilizada na coloração
contém pelo menos um b-vértice, ou seja, um vértice que apresenta todas as demais cores
utilizadas na sua vizinhança.
Uma estratégia utilizada para encontrar uma b-coloração em um grafo, a partir de
uma coloração qualquer, é verificar se existem classes de cor que não contém um b-vértice. Caso
uma classe de cor não contenha um b-vértice, então podemos recolorir todos os vértices dessa
classe de cor, reduzindo assim uma classe de cor. A Figura 9, retirado de (ROCHA, 2009), ilustra
o funcionamento da estratégia citada. Denominaremos essa estratégia de b-estratégia.

Figura 9 – Redução de uma classe de cor

Definição 2.4.1 (Número b-cromático) O número b-cromático de um grafo G, denotado por


χb (G), é o maior inteiro k tal que G possui uma b-coloração utilizando k cores.

2.5 ALGORITMOS PARA COLORAÇÃO DE VÉRTICES

2.5.1 Algoritmos de Natureza Gulosa

Algumas das primeiras abordagens algorítmicas, utilizadas no problema de coloração,


eram baseados em métodos gulosos que realizavam a coloração sequencial dos vértices usando
uma função gulosa como guia (NETTO, 2003). As abordagens gulosas também são chamadas
de sequenciais. Uma abordagem sequencial considera a existência de uma classe de cor C para
cada vértice do grafo G(V, E) inicialmente vazia, e então busca uma sequência S (|S| = |V |) de
29

vértices do grafo. A ideia do algoritmo é colorir todos os vértices do grafo seguindo a sequência
S, sempre colorindo o vértice com a menor cor possível, de tal forma que vértices adjacentes não
compartilhem a mesma classe de cor. Tal algoritmo é apresentado no Algoritmo 5.

Algoritmo 4: Algoritmo Guloso


Entrada: Um grafo G(V, E) e uma sequência S de vértices.
Saída: Número de cores utilizadas para colorir o grafo G.

for Cada elemento de S =< v1 , v2 , . . . , vk > do


Colore o vértice vi com a menor cor que não pertença a nenhum vértice de N(vi );
end for
Retorna: A maior cor utilizada;

O problema com esse algoritmo é que ele pode apresentar um desempenho ruim
dependendo da sequência S escolhida, retornando uma coloração que usa um número de cores
bem superior ao número cromático do grafo.
A Figura 10 ilustra a diferença de coloração dependendo da sequência S utilizada.
Perceba que para S =< 1, 2, 4, 3 > são utilizadas 3 cores na coloração, enquanto para S =<
1, 2, 3, 4 > são utilizadas apenas 2.

Figura 10 – Diferença na coloração dependendo da sequência S

Várias heurísticas para determinar uma boa sequência S foram propostas na literatura,
como as heurístcas: DSATUR (BRÉLAZ, 1979) e RLF (Recursive Largest First) (LEIGHTON,
1979). Embora as heurísticas gulosas sejam muito rápidas, podem gerar soluções insatisfatória
para algumas instâncias de grafos. Nas últimas décadas, os algoritmos gulosos têm sido ampla-
mente utilizados em aplicações onde o tempo de execução é priorizado e para gerar soluções
iniciais em meta-heurísticas (LÜ; HAO, 2010).
Importante notar que não existe algoritmo polinomial que garante uma solução ótima
30

no caso geral, pois determinar um número cromático de um grafo é um problema NP-completo


(GAREY; JOHNSON, 1979). Porém, a solução ótima pode ser obtida aplicando o algoritmo
sequencial, caso seja utilizada uma sequência ótima. Contudo, para um grafo de n vértices,
existem n! de sequências possíveis, o que resulta em uma execução em tempo exponencial.

2.6 BUCKET SORT E DECOMPOSIÇÃO EM RAIZ QUADRADA

Bucket Sort é um algoritmo de ordenação que funciona distribuindo elementos de


um vetor em um número finito de recipientes, também conhecidos como buckets. E então
cada bucket é ordenado utilizando algum outro algoritmo especifico, ou utilizando o Bucket
Sort recursivamente, e após a ordenação, os bucktes são percorridos, recolocando no vetor os
elementos já ordenados (KNUTH, 1998).
A mesma ideia de dividir em buckets foi utilizada para reduzir a complexidade do

problema RMQ (Range Minimum Query) de O(N) para O( N) (BERKMAN; VISHKIN, 1993).
O problema RMQ consiste em determinar qual o menor elemento em um intervalo de um vetor

em múltiplas consultas e atualizações. Para isso, o vetor é particionado em N buckets, e então
é salvo o menor elemento de cada bucket. Tal técnica de decompor o problema em raiz quadrada
ficou conhecida como Sqrt-Decomposition.
Importantes problemas foram reduzidos ao problema RMQ, como o LCA (Lowest
Common Ancestor) (BENDER; FARACH-COLTON, 2000) e LCP (Longest Common Prefix)
(MANBER; MYERS, 1993), como mostrado em (FISCHER; HEUN, 2006). Sendo possível
resolvê-los em menor complexidade de tempo utilizando a técnica Sqrt-Decomposition para o
RMQ.
31

3 TRABALHOS RELACIONADOS

Nesse capítulo são descritos trabalhos relacionados com a pesquisa realizada. Ini-
cialmente, são apresentados os algoritmos propostos em (LEIGHTON, 1979) e (BRÉLAZ,
1979), pois são propostas gulosas, e apesar de serem trabalhos antigos, ainda hoje são frequen-
temente utilizados para gerar soluções iniciais para meta-heurísticas mais avançadas (NETO;
GOMES, 2015). Também são apresentados os trabalhos (DOUIRI; ELBERNOUSSI, 2015),
(ABBASIAN et al., 2011), (AGUIAR et al., 2005), e (LAGUNA; MARTÍ, 2001), que utilizaram
meta-heurísticas para resolução do problema de coloração.

3.1 UM ALGORITMO DE COLORAÇÃO DE GRAFOS PARA GRANDES PROBLEMAS


DE ESCALONAMENTO

No trabalho, é proposto o algoritmo RLF (Recursive Largest First). RLF é uma


heurística gulosa para encontrar uma boa solução para o problema de coloração. A ideia principal
do algoritmo é que vértices de maiores graus possuem mais restrições de cores, então o algoritmo
tem preferência em colorir vértices com maiores graus.
O RLF funciona da seguinte forma: Dado um grafo G(V, E), o vértice v, ainda não
colorido, de maior grau em G é selecionado, e recebe a menor cor possível c. Enquanto existir
vértices que podem ser coloridos com a corc sem gerar conflitos de cores, é escolhido o vértice
u, ainda não colorido, de maior grau, e então é colorido com a cor c. Quando não existir mais
nenhum vértice colorível com a corc, se todos os vértices foram coloridos, encerra o algoritmo,
caso contrário, repete o processo recursivamente.
O algoritmo RLF tem complexidade de tempoO(n2 ) para um grafo de n vértices.

3.2 NOVO MÉTODO PARA COLORIR VÉRTICES DE UM GRAFO

No trabalho, é proposto o algoritmo DSATUR (Degree Saturation). O algoritmo é


semelhante ao RLF, pois também tem preferência em colorir vértices com maiores graus o mais
breve possível.
Dado um grafo G(V, E) e C uma coloração parcial de vértices de G, define-se o grau
de saturação de um vértice v como sendo a quantidade de diferentes cores apresentadas nos
vértices de sua vizinhança. O funcionamento do algoritmo DSATUR pode ser descrito pelo
seguinte algoritmo:
32

Algoritmo 5: Algoritmo DSATUR


Entrada: Um grafo G(V, E).
Saída: Número de cores utilizadas para colorir o grafo G.

Atribua cor 1 para o vértice v de maior grau;


while Existe vértice não colorido do
Seleciona um vértice não colorido v de maior grau de saturação;
Colore o vértice v com a menor cor que não pertença a nenhum vértice na vizinhança dev;
end while
Retorna: A maior cor utilizada;

Assim como o algoritmo RLF, o DSATUR também tem complexidade de tempo


O(n2 ) para um grafo de n vértices.

3.3 COLORAÇÃO DE GRAFOS PARA O GERENCIAMENTO DE FLUXO AÉREO

Em Barnier e Brisset (2004) é proposto um algoritmo para o problema de coloração,


com objetivo de aplicá-lo ao problema de fluxo aéreo, modelado por coloração de vértices. A
ideia básica do algoritmo é que as maiores cliques de um grafo possuem maiores restrições de
coloração, então devem ser coloridos o mais cedo possível.
Dado um grafo G(V, E), é utilizado um algoritmo guloso para encontrar um conjunto
de cliques do grafo, tentando encontrar as maiores cliques possíveis. A estratégia foi inspirada
no trabalho (BOMZE et al., 1999), e funciona da seguinte forma: Para cada vértice do grafo, é
inicializada uma clique de tamanho 1, e então cada clique é formada incrementalmente, tentando
adicionar à clique um vértice de sua vizinhança que seja adjacente à todos os vértices da clique.
Entretanto, várias cliques idênticos são conseguidos por vértices iniciais diferentes, então é
necessário filtrar o conjunto de cliques retornado pelo algoritmo para obter apenas cliques
distintas. A complexidade da proposta para o pior caso é O(n4 ).
Após conseguir um conjunto de cliques distintas, as cliques são ordenadas de forma
decrescente pelo tamanho, cada clique de tamanho máximo é colorido de forma sequencial, e
em seguida é aplicado a técnica de busca incompleta proposta em (PRESTWICH, 1999) com
a utilização da técnica de Branch and Bound (LAND; DOIG, 1960), para descobrir uma boa
sequência de coloração das cliques restantes.
33

3.4 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILIZANDO AL-


GORITMOS GENÉTICOS HÍBRIDOS

Esse trabalho se baseia na meta-heurística Genetic Algorithm (GA). Holland (1992)


projetou uma adaptação para que um algoritmo simule a evolução de indivíduos, conhecida
como a meta-heurística Genetic Algorithm. O funcionamento do GA pode ser dividido em 7
etapas (LUCAS, 2002):
• Geração de soluções inciais;
• Avaliação;
• Seleção;
• Cruzamento;
• Mutação;
• Atualização;
• Finalização.
Na proposta de (DOUIRI; ELBERNOUSSI, 2015), é utilizado o algoritmo DSATUR,
para inicializar um valor k, como a melhor solução encontrada. Após isso, o algoritmo tenta
encontrar uma coloração utilizando k − 1 cores, caso seja possível, repete recursivamente o
processo, caso contrário, retorna a melhor coloração encontrada até o momento.
Para geração de soluções inciais na busca de uma k-coloração, o trabalho utiliza o
algoritmo aproximativo proposto em (DOUIRI; ELBERNOUSSI, 2011) para dividir o grafo em
conjuntos independentes de vértices, e então colorir cada conjunto com uma cor. Perceba que
se existir mais de k conjuntos independentes, a coloração gerada pelo algoritmo não será uma
coloração própria, necessitando remover os conflitos de cores para se tornar uma solução válida.
Após a geração de uma população inicial, a meta-heurística GA irá realizar repetidas vezes os
processos citados anteriormente, até atingir um determinado número de interações ou encontrar
uma coloração própria.
O trabalho utiliza o número de conflitos de cores como critério de seleção de solução,
dando maior probabilidade de permanecer na população para as soluções com menor número de
conflitos de cores.
O processo de cruzamento de duas soluções acontece da seguinte forma: Dado duas
soluções S1 e S2 que são colorações de um grafo G(V, E), é escolhido aleatoriamente um valor
inteiro b, tal que 1 ≤ b < |V |. Então, é gerada uma solução S3 em que os vértices de índices
menores ou iguais a b são coloridos com as cores dos respectivos vértices em S1 , e os demais
34

são coloridos utilizando as cores dos respectivos vértices em S2 . Porém, em alguns casos é
necessário realizar modificações na solução gerada para se obter indivíduos que satisfazem o
problema trabalhado.
O processo de mutação de uma solução S é semelhante ao processo de busca utilizado
em (LAGUNA; MARTÍ, 2001), em que um vértice que apresente conflitos de cores é escolhido
aleatoriamente, e então sua cor é modificada para tentar reduzir o número de conflitos de cores
da solução.
Na etapa de atualização de solução, as soluções que possuem menor quantidade de
conflitos também possuem maior probabilidade de passarem para a geração seguinte.
Ao final do algoritmo, a solução que apresenta uma coloração válida e que tenha
utilizado a menor quantidade de cores é retornada.

3.5 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILIZANDO AL-


GORITMOS CULTURAIS

Esse trabalho se baseia na meta-heurística Cultural Algorithm (CA). A CA foi


introduzida por Reynolds (REYNOLDS, 1994), e é considerada uma extensão do algoritmo
genético convencional. CA é um modelo computacional do processo evolutivo cultural humano,
no qual possui um sistema de herança que ocorre em dois níveis: nível populacional e nível de
crenças. No nível populacional são salvas as informações de conhecimento de cada indivíduo,
enquanto no nível de crenças são salvos conhecimentos que auxiliam a evolução da população,
normalmente armazenando boas soluções já encontradas (REYNOLDS; SALEEM, 2005).
Na geração de uma população inicial, o trabalho utiliza uma heurística gulosa com
prioridade para vértices de maior grau, utilizando também um fator de aleatoriedade para obter
diversidade da população.
No espaço de crenças, o menor número de cores de uma coloração própria já
encontrada é salvo, pois isso auxilia no processo de mutação, que seleciona aleatoriamente
um vértice que possua conflitos de cores, trocando sua cor para uma das cores utilizadas na
solução salva no espaço de crenças. Já os processos de cruzamentos e seleções, ocorrem de
forma semelhante aos processos utilizados em (DOUIRI; ELBERNOUSSI, 2015).
35

3.6 META-HEURÍSTICA BUSCA TABU PARA O PROBLEMA DE COLORAÇÃO DE


GRAFOS

Esse trabalho se baseia na meta-heurística Tabu Search. Tal meta-heurística é


comumente utilizada para obter soluções em problemas de otimização combinatória (GLOVER,
1997). Na busca tabu, é utilizada uma estrutura de memória para evitar movimentos cíclicos
(revisitar soluções previamente visitadas), conhecida como lista tabu. Porém, somente evitar que
movimentos previamente realizados serem desfeitos pode também evitar que soluções não antes
alcançadas sejam descobertas. Para contornar esse problema, também é utilizado um critério de
aspiração nas restrições de movimentos já realizados, normalmente esse critério de aspiração
está relacionado com um número de interações de busca.
No trabalho, as soluções iniciais são geradas utilizando o algoritmo XRLF, proposto
em (JOHNSON et al., 1991). XRLF é uma extensão do RLF, adicionando um fator aleatório na
escolha do elemento de maior grau quando existe mais de uma opção.
O processo de refinamento utilizado no trabalho funciona da seguinte forma: Uma
classe de cor c é escolhida para ser eliminada, em seguida os vértices que pertenciam à cor
eliminada são associados à outras cores, o que pode gerar conflitos de cores, então é aplicado
uma busca tabu para tentar zerar os conflitos de cores. Caso a busca tabu consiga zerar os
conflitos de cores na solução, a nova solução é aceita, caso contrário é rejeitada.
Na busca tabu proposta para buscar uma coloração própria, são realizadas perturba-
ções na solução atual. Cada perturbação altera a cor de um vértice para a cor que mais reduza
o número de conflitos na solução. Com isso, dada uma solução T , ela possui n perturbações
possíveis, sendo n o número de vértices do grafo. A estrutura de memória tabu evita que um
mesmo vértice retorne para uma cor anterior, e impede trocas consecutivas de cores do mesmo
vértice por um determinado número de interações.

3.7 UM GRASP PARA COLORAÇÃO DE GRAFOS ESPARSOS

Esse trabalho se baseia na meta-heurística Greedy Randomized Adaptive Search


Procedure (GRASP). A GRASP trata-se de uma meta-heurística de partidas múltiplas usada para
obter soluções de qualidade em problemas de otimização combinatória. Para essa meta-heurística
cada iteração consiste em duas fases: uma etapa construtiva e uma etapa de busca local. A
solução inicial é gerada na primeira dessas duas etapas e utilizada na segunda para verificar
sua vizinhança em busca do ótimo local. Ao final é retornado o melhor dentre os ótimos locais
36

encontrados (FEO; RESENDE, 1995).


A fase construtiva do trabalho é semelhante a utilizada em (AGUIAR et al., 2005),
porém a coloração é realizada por classes de cor. Para gerar uma coloração, o algoritmo colore
todos os vértices possíveis de cada cor sequencialmente, primeiro a cor 1, em sequência a cor
2, e assim por diante. Para cada cor a ser utilizada, é gerado uma lista de vértices candidatos
possíveis de serem coloridos com a cor atual, e então são selecionados aleatoriamente entre
aqueles de maior grau para serem coloridos, até que não exista nenhum vértice não colorido.
Já na fase de refinamento, o algoritmo combina as duas classes de cores com menores
cardinalidades em uma, eliminando uma cor. Como esse processo pode gerar conflitos de cores,
também é utilizado um processo de busca local na tentativa de zerar os conflitos. Na busca
utilizada no trabalho, um vértice que possui conflitos de cores é escolhido aleatoriamente, e então
é testado alterar a cor dele para qualquer uma das demais cores possíveis, sendo escolhida a
solução que mais reduza o número de conflitos de cores. Se ao final da fase de busca os conflitos
forem zerados, uma nova solução é aceita. Caso contrário, uma nova busca é efetuada, até que
uma nova solução seja encontrada, ou um critério de parada seja satisfeito.
37

4 PROPOSTA

4.1 JUSTIFICATIVA

O problema de coloração de grafos é um dos problemas da classe NPC, considerados


intratáveis, motivam diversas pesquisas nas áreas de computação (GLOVER; KOCHENBER-
GER, 2006). A versão de otimização do problema é muito estudada na ciência da computa-
ção, pois sua estrutura é bastante utilizada para modelar problemas práticos de diversas áreas
(DOUIRI; ELBERNOUSSI, 2015). Algoritmos construtivos, como DSATUR (BRÉLAZ, 1979)
e RLF (LEIGHTON, 1979), com tempo de execução pequeno, são considerados muito eficientes
para a maioria das instâncias, porém, em algumas famílias de grafos, os algoritmos encontram
soluções de baixa qualidade (RUIZ, 2012). Então, várias técnicas meta-heurísticas vêm sido
aplicadas com sucesso em obter boas soluções para instâncias em que os algoritmos construtivos
não conseguem boas soluções (DOUIRI; ELBERNOUSSI, 2015). Porém, as propostas que
utilizam meta-heurísticas são mais custosas que os algoritmos construtivos, no que diz respeito
ao tempo de processamento (GLOVER; KOCHENBERGER, 2006). Tendo em vista que muitas
aplicações de coloração de grafos requerem respostas em um pequeno intervalo de tempo, o uso
de algoritmos rápidos é essencial (GANDHAM et al., 2008).
Portanto, o presente trabalho propõe novos algoritmos para coloração de grafos, que
executam em um tempo semelhante aos algoritmos construtivos utilizados atualmente, porém,
na maioria das instâncias, conseguem encontrar soluções com qualidade próxima as soluções
conseguidas em trabalhos que utilizam meta-heurísticas, além disso, também conseguem boas
soluções em instâncias que são consideradas difíceis para algoritmos construtivos. Também
serão propostas novas instâncias baseadas na aplicação em alocação de frequências, realizando
testes computacionais e comparando os algoritmos propostos nas instâncias geradas.

4.2 OBJETIVOS

O objetivo geral do trabalho é desenvolver e analisar novas heurísticas para o pro-


blema de coloração de vértices, que tenham baixo custo quanto ao tempo de processamento e
que consigam encontrar soluções de boa qualidade.
Como objetivos específicos, temos:
• Gerar novas heurísticas para o problema de coloração de vértice.
• Proposta de modificação na b-estratégia, estudando o impacto da proposta na redução do
38

número de cores utilizadas em uma coloração de vértices.


• Testar as heurísticas propostas para o problema de coloração de vértice, realizando testes
comparativos entre os métodos propostos e outros métodos encontrados na literatura.
• Formular novas instâncias voltados para o problema de alocação de frequência, e realização
de testes computacionais nas instâncias geradas.

4.3 ALGORITMOS PROPOSTOS

O trabalho traz como proposta 4 algoritmos para o problema de coloração de vértices.


p
A principal ideia dos algoritmos é dividir o grafo G(V, E) em |V | subgrafos, em seguida,
colori-los utilizando uma busca a partir dos vértice iniciais de cada subgrafo, e por fim utilizar
b-estratégia para tentar diminuir o número de cores utilizadas na coloração.

4.3.1 Divisão em Raiz Quadrada

p
Na divisão proposta, um grafo G(V, E) é dividido em |V | subgrafos, em seguida,
colori-los utilizando busca em largura a partir dos vértice iniciais de cada subgrafo. A inspiração
para a divisão do grafo antes da coloração vem do algoritmo de ordenação por Bucket, que divide
p
um vetor em buckets para então ordena-lo. A divisão de um grafo G(V, E) em |V | grafos
p
é realizada da seguinte forma: Inicialmente, |V | vértices são selecionados, e adicionados
em uma fila, em seguida, é realizada uma busca em largura a partir dos vértices selecionados,
realizando uma busca para cada vértice, essas buscas acontecem simultaneamente. O algoritmo
p
da divisão de um grafo G(V, E) em |V | subgrafos é apresentado no Algoritmo 6. Para melhor
entendimento do procedimento, a Figura 11 ilustra o passo a passo da execução do algoritmo
para um grafo de 9 vértices. Na Figura 11(a), os vértices 1, 4 e 7 são selecionados como iniciais
e adicionados na fila. Na Figura 11(b), o vértice 1 é removido da fila e o vértice 2 é adicionado
na fila e no subgrafo iniciado em 1. Na Figura 11(c), o vértice 4 é removido da fila e os vértices 6
e 8 são adicionados na fila e no subgrafo iniciado em 4. Na Figura 11(d), o vértice 7 é removido
da fila e os vértices 5 e 9 são adicionados na fila e no subgrafo iniciado em 7. Na Figura 11(e), o
vértice 2 é removido da fila e o vértice 3 é adicionado na fila e no subgrafo iniciado em 1. Na
Figura 11(f), não é possível adicionar outro vértice na fila, assim, todos os vértices são removidos
da fila e 3 subgrafos são retornados.
39

Algoritmo 6: Divisão em Raiz Quadrada


Entrada: Um grafo G(V, E).
Saída: Os subgrafos
p resultantes da divisão.
inteiro raiz ← |V |;
inteiro x ← 1;
Inicializa uma fila F de pares (v, g);
while x ≤ |V | do
Acrescenta o par (x, x) na fila F;
Inicializa um subgrafo com o vértice x;
x ← x + raiz
end while
while fila F não vazia do
(v, g) ← remove(F);
for Cada vértice u vizinho do vértice v que ainda não foi adicionado na fila F do
Acrescenta o par (u, g) na fila F;
Acrescenta vértice u ao subgrafo iniciado em g;
end for
end while
Retorna: Os subgrafos gerados;

Figura 11 – Execução da divisão em raiz quadrada em um grafo de 9 vértices.

4.3.2 Utilização da BFS na coloração

Para utilizar uma busca em largura na coloração de grafos: Inicialmente escolhemos


um vértice inicial, e o adicionamos em uma fila, após isso, enquanto a fila não estiver vazia,
removemos e colorimos o vértice do inicio da fila e adicionamos na fila os vértices adjacentes ao
vértice colorido que não foram adicionados anteriormente na fila. No Algoritmo 7, é apresentado
o pseudocódigo do procedimento de coloração utilizando uma busca em largura.
Além da utilização de busca em largura para a coloração de grafo, em algumas
heurísticas propostas também é utilizada busca em largura com passos de tamanho 2, que
chamamos de busca 2-Step. O funcionamento é semelhante à coloração por busca em largura,
40

Algoritmo 7: Algoritmo de Coloração por Busca em Largura


Entrada: Um grafo G(V, E) e um vértice inicial v.

Inicializa uma fila F de vértices;


Adiciona v na fila;
while |F| 6= 0 do
v = remover(F);
Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v;
for Cada vértice x na vizinhança de v do
if x ainda não foi adicionado na fila F then
Adiciona x na fila;
end if
end for
end while

porém, após colorir um vértice v, somente serão adicionados na fila, os vértices que possuam
distância igual a 2 de v. Perceba que a utilização dessa busca pode não colorir todo o grafo,
como ilustrado na Figura 12, então, ao final da busca, os vértices não coloridos são coloridos de
forma sequencial pelos identificadores dos vértices.

Figura 12 – Execução de busca em largura com utilização de passos de tamanho dois. Nessa
figura é ilustrado um grafo e 4 vértices, inicialmente, não coloridos. Em (a), o
vértice 1 é adicionado na fila para coloração. Em (b), o vértice 1 é colorido e o
vértice 3 é adicionado na fila para coloração. Em (c), o vértice 3 é colorido, e
nenhum vértice é adicionado na fila, pois todos os vértices com distância 2 do
vértice 3 já foram coloridos. Em (d), os vértices 2 e 4 são coloridos.

4.3.3 Sqrt Start

O primeiro algoritmo proposto nesse trabalho é o Sqrt Start 1 (SS1). Ele é a aplicação
do método sequencial guloso, utilizando como ordem de coloração, a sequência em que os
41

vértices são visitados na divisão por raiz quadrada. Para melhor entendimento do funcionamento
do algoritmo, um pseudocódigo é apresentado em Algoritmo 8.
A complexidade do algoritmo é O(n2 ), tornando sua execução tão rápida quanto os
algoritmos DSATUR e RLF, o que torna possível também uma aplicação em grafos com número
elevado de vértices.

Algoritmo 8: Algoritmo Sqrt Start


Entrada: Um grafo G(V, E).
Saída: Número de cores utilizadas para colorir o grafo G.
p
inteiro raiz ← |V |
inteiro x ← 1
Inicializa uma fila F;
while x ≤ |V | do
Acrescenta o vértice de índice x na fila F
x ← x + raiz
end while
while |F| 6= 0 do
v = remove(F);
Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v;
Para cada vértice u na vizinhança de v que ainda não foi adicionado na fila F, adicione u na fila;
end while
while Existe vértices não coloridos do
v ← vértice não colorido de menor índice;
Adiciona v em F;
while |F| 6= 0 do
v = remove(F);
Colore v com a menor cor c possível para que a coloração não se torne imprópria;
Para cada vértice u na vizinhança de v que ainda não foi adicionado na fila F, adicione u na fila;
end while
end while
Aplica a b-estratégia;
Retorna: A maior cor utilizada;

4.3.4 Sqrt Start Priority

O segundo algoritmo proposto no trabalho, é o Sqrt Start Priority 1 (SSP1). O


algoritmo é uma modificação do algoritmo Sqrt Start 1, adicionando um critério de prioridade na
coloração dos vértices. O algoritmo prioriza como próximo vértice a ser colorido, o vértice que
pode receber a menor cor possível. Para isso, é utilizada uma fila de prioridade implementada
em uma árvore binária balanceada, onde são armazenados os vértices e a menor cor possível
para cada vértice ainda não colorido. Durante a execução da heurística, deve-se atualizar os
elementos da fila de prioridade após cada atribuição de cor para um vértice.
42

Algoritmo 9: Algoritmo Sqrt Start Priority


Entrada: Um grafo G(V, E).
Saída: Número de cores utilizadas para colorir o grafo G.
p
inteiro raiz ← |V |
inteiro x ← 1
Inicializa uma fila de prioridade F de pares (v, c) com prioridade para menor cor.
while x ≤ |V | do
Acrescenta o vértice de índice x na fila de prioridade F com cor 1;
x ← x + raiz
end while
while |F| 6= 0 do
v = remove(F);
Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v;
for Para cada vértice u na vizinhança de v do
if u não foi colorido then
c ← menor cor que não é utilizada por vértices na vizinhança de u
if u já foi adiciona na fila de prioridade then
Busca u na fila de prioridade, e atualiza a cor se necessário;
else
Adiciona (x, c) na fila de prioridade;
end if
end if
end for
end while
while Existe vértices não coloridos do
v ← vértice de menor índice;
Adiciona v em F;
while |F| 6= 0 do
v = remove(F);
Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v;
for Para cada vértice u na vizinhança de v do
if u não foi colorido then
c ← menor cor que não é utilizada por vértices na vizinhança de u
if u já foi adiciona na fila de prioridade then
Busca u na fila de prioridade, e atualiza a cor se necessário;
else
Adiciona (x, c) na fila de prioridade;
end if
end if
end for
end while
end while
Aplica a b-estratégia;
Retorna: A maior cor utilizada;

Por conta da utilização de uma árvore binária balanceada no algoritmo, sua comple-
xidade é multiplicada por log(|V |) no pior caso, tornando a complexidade do algoritmo igual a
O(n2 .log(n)).
43

4.3.5 Modificação do procedimento de b-coloração

Como dito na Seção 2.4, o procedimento para conseguir uma b-coloração, a partir
de uma coloração, consiste em verificar se existem classes de cor que não pussem um b-vértice.
Então podemos recolorir todos os vértices dessa classe de cor, reduzindo assim uma classe de
cor.
Tomando como exemplo o grafo da Figura 13(a), se utilizarmos o algoritmo sequen-
cial para sua coloração, resultará na coloração ilustrada na Figura 13(b). Caso a b-estratégia
fosse utilizada, apenas a cor 1 seria eliminada, recolorindo o vértice 1 com a cor 2, o vértice 2
com a cor 3, o vértice 4 com a cor 3 e o vértice 5 com a cor 2, resultando na Figura 14. Perceba
que todas as cores utilizadas possuem um b-vértice, o vértice 6 é um b-vértice de cor 2, o vértice
7 é um b-vértice de cor 3 e o vértice 8 é um b-vértice de cor 4. Perceba também que 3 cores são
utilizadas na coloração.

Figura 13 – (a) Representa um grafo de 8 vértices, sendo o número escrito em cada vértice
correspondente ao respectivo índice. (b) Ilustra a coloração final do grafo (a) caso
fosse utilizado o algoritmo sequencial para sua coloração.

A modificação que propomos é permitir movimentos parciais de vértices de uma


classe de cor para outra, ou seja, excluímos a necessidade de todos os vértices da classe de cor
analisada precisarem ser realocados para permitir trocas de cores. Na prática, analisaremos cada
classe de cor por vez, de forma sequencial, verificando se é possível recolorir cada um de seus
vértices com alguma cor diferente da atual, caso seja possível, então o vértice recebe a cor em
uso de menor índice possível.
Continuando com a aplicação da proposta no grafo da Figura 14. Analisando a classe
de cor 2, o vértice 1 recebe cor 4, o vértice 3 recebe cor 4, o vértice 5 recebe cor 3 e a cor do
44

Figura 14 – A figura ilustra a configuração final caso o procedimento de b-coloração fosse


aplicado.

vértice 6 não é alterada, pois ele é um b-vértice. Resultando no grafo da Figura 15(a). Agora
analisando a classe de cor 3, o vértice 2 recebe a cor 2, o vértice 4 recebe a cor 4, o vértice 5
recebe a cor 2 e o vértice 7 recebe a cor 2. Resultando no grafo da Figura 15(b). Por fim, a classe
de cor 4 é analisada, porém nenhum vértice pode ser recolorido. Resultando em uma coloração
que utiliza apenas 2 cores, reduzindo em uma cor do resultado alcançado pela b-estratégia padrão
padrão.

Figura 15 – (a) Apresenta a configuração da coloração do grafo após a classe de cor 2 ser
analisada. (b) Apresenta a configuração da coloração do grafo após a classe de cor 3
ser analisada.

Ao decorrer do presente trabalho, sempre que nos referimos à b-estratégia, estaremos


considerando a utilização da b-estratégia em conjunto com a b-estratégia modificada. O algoritmo
da b-estratégia modificada é apresentado no Algoritmo 10.
45

Algoritmo 10: B-Estratégia Modificada


Entrada: Uma coloração de um grafo G(V, E).
Saída: A coloração resultante da b-estratégia modificada em G.

for Cada classe de cor ci utilizada na coloração de G do


for Cada vértice v j da classe de cor ci do
if v j não é um b-vértice then
Atribua ao vértice v j a classe de cor de menor índice que não exista na sua vizinhança
e seja diferente de ci ;
end if
end for
end for
Retorna: A coloração atual de G;

4.3.6 Heurísticas Propostas

Com a utilização das estratégias explicadas anteriormente, elaboramos 4 heurísticas.


• Sqrt Start 1 (SS1): É utilizada a divisão por raiz quadrada, em seguida os vértices são
coloridos utilizando uma busca em largura, partido do vértice central de cada subgrafo;
• Sqrt Start 2 (SS2): Semelhante à SS1, porém é utilizada uma busca com passos de
tamanho dois, 2-Step;
• Sqrt Start Priority 1 (SSP1): Semelhante à SS1, porém é utilizada a prioridade de menor
cor;
• Sqrt Start Priority 2 (SSP2): Semelhante à SSP1, porém é utilizada uma busca com
passos de tamanho dois, 2-Step;
Em todas as heurísticas propostas, a b-estratégia modificada é executada ao final dos
algoritmos.

4.3.7 Formulação de instâncias

Como dito anteriormente, uma das aplicações de coloração de vértices se dá em


alocação de frequências em um sistema de comunicação sem fio, sendo o problema de alocação
de frequências em estações de rádio FM uma das aplicações citadas na literatura (KIM, 2012).
Instâncias de grafos voltados para essa aplicação não estão disponíveis na literatura.
Então, decidimos formula-las e deixa-las disponíveis online, tanto as instâncias utilizadas em
testes no presente trabalho, quanto o gerador de instâncias utilizado, possibilitando acesso e
utilização em trabalhos futuros.
Para gerar um grafo G(V, E), consideramos que seus vértices são estações de rádio,
46

e estão dispostos em um plano, sendo cada vértice adicionado aleatoriamente em uma posição
(x, y) do plano, tal que 0 ≤ x, y ≤ 3000. Consideramos também que cada estação possui um raio
de alcance r, tal que 80 ≤ r ≤ 100. Para finalizar, para cada par de vértice, é verificado se a
distância entre eles é menor ou igual a soma de seus raios, caso positivo, adicionamos uma aresta
entre eles.

Figura 16 – A figura ilustra o processo de geração das instâncias. Inicialmente são gerados
pontos aleatórios no plano, em seguida pontos próximos são conectados por arestas.

Geramos 10 instâncias utilizando o gerador: alo100, alo200, alo200, alo300, alo400,


alo500, alo600, alo700, alo800, alo900 e alo1000.
Tanto o gerador, quanto as instâncias geradas no presente trabalho se encontram dis-
poníveis pelo link <https://www.dropbox.com/sh/bt1h7vd0lde2g1v/AAAWfZkBSAbAcix0LhGO5ysSa?
dl=0>.

4.4 METODOLOGIA

Inicialmente implementamos os algoritmos de coloração: DSATUR e RLF. Em


seguida implementamos nossas heurísticas propostas.
Implementamos o gerador de instâncias voltadas para a aplicação de alocação de
frequências em estações de rádios FM. Geramos 10 instâncias, com número de vértices variando
de 100 a 1000.
Para os testes computacionais, foram inicialmente utilizadas as instâncias de DI-
MACS (JOHNSON; TRICK, 1996), com acesso em <http://mat.gsia.cmu.edu/COLOR/instances.
html>. Além das instâncias de DIMACS, também foram utilizadas as instâncias propostas em
testes.
Implementadas as estratégias propostas e realizamos testes comparativos com as
heurísticas DSATUR e RLF. Aplicamos a construção de Mycielski duas vezes em cada instância
47

da família QUEEN para gerar uma extensão dessas instâncias e então utilizamos tanto as
instâncias originais quanto as extensões geradas nos testes. Essas instâncias foram escolhidas
por serem consideradas difíceis (AGUIAR et al., 2005). Um fato importante para decisão de
aplicar a construção de Mycielski, é o fato de estar provado que o número cromático do grafo
aumenta em uma unidade para cada aplicação da construção, assim temos conhecimento do
número cromático de cada instância resultante.
Após confrontar as abordagens propostas com os algoritmos DSATUR e RLF,
selecionamos alguns trabalhos cujo objetivo principal seja encontrar boas soluções para o
problema de coloração de grafos e que também utilizassem as instâncias de DIMACS, com
o objetivo de comparar os resultados e tempo entre os estratégias. Os trabalhos escolhidos
foram (AGUIAR et al., 2005), (ABBASIAN et al., 2011), (DOUIRI; ELBERNOUSSI, 2015) e
(LAGUNA; MARTÍ, 2001), (BARNIER; BRISSET, 2004).
Realizamos testes computaciais comparando a performance dos algoritmos propostos
com os algoritmos DSATUR e RLF para as instâncias propostas de alocação de frequências.
Também realizamos estudo sobre o impacto da utilização da b-estratégia quando aplicada nas
soluções para as instâncias QUEEN. Teste realizado tanto utilizando os algoritmos propostos,
quanto os algoritmos RLF e DSATUR.
Para finalizar a pesquisa, expomos, analisamos e discutimos os resultados obtidos
nos testes computacionais realizados.
48

5 TESTES COMPUTACIONAIS

Foram implementadas as 4 heurísticas propostas nesse trabalho e foram testadas tanto


utilizando as instâncias obtidas no repositório <http://mat.gsia.cmu.edu/COLOR/instances.html>,
como as instâncias obtidas pela construção de Mycielski, e também instâncias propostas para a
aplicação em alocação de frequências de FM.
Todos os testes realizados foram executados em um computador com processador
Intel Core i3-3220 3.30GHz, utilizando como sistema operacional o Windows 7 Ultimate.
Para verificações de tempo, os tempos dos outros autores foram ajustados utilizando a medida
bogoMIPS (DORST, 2004). Optamos em utilizar a medida, por ela apresentar boa aproximação
para todos os processadores.

5.1 INSTÂNCIAS DE DIMACS

5.1.1 Mycielski graphs

Os grafos Mycielski são construídas com base na construção de Mycielski. Nas


instâncias de DIMACS (JOHNSON; TRICK, 1996), são disponibilizados apenas 5 instâncias:
myciel3, myciel4, myciel5, myciel6 e myciel7. A instância myciel3 pode ser representada pelo
grafo da Figura 17 e os demais são conseguidos utilizando o operador de Mycielski repetidas
vezes nessa instância.

Figura 17 – Instância myciel3

5.1.2 Queens Graphs

Os grafos dessa família são inspirados no problema das 8 rainhas (WIRTH, 1971),
em que o objetivo é posicionar 8 rainhas em um tabuleiro de xadrez, de tal forma que nenhuma
delas se ataquem. Os grafos são gerados com base em um tabuleiro NxN, em que cada célula é
um vértice do grafo, e um par vértices são ligados se rainhas posicionadas neles se atacarem. Tal
49

construção gera grafos considerados densos, pois cada rainha pode atacar todos as células em
todas as direções. Todas as instâncias contém cliques de tamanho pelo menos N, o que significa
que possuem número cromático de pelo menos N. Em (GARDNER, 1968), foi afirmado que
em uma grafo Queen NxN é N-colorível se o resto da divisão de N por 6 for 1 ou 5, porém
sem provas matemáticas. Nas instâncias de DIMACS, são disponibilizadas 12 instâncias desse
tipo: queen_5_5, queen_6_6, queen_7_7, queen_8_8, queen_8_12, queen_9_9, queen_10_10,
queen_11_11, queen_12_12, queen_13_13, queen_15_15 e queen_16_16. A Figura 18, extraída
de (WEISSTEIN, 2011), ilustra alguns exemplos de Queen Graphs.

Figura 18 – Exemplos de Queen Graphs: queen_2_2, queen_2_2, queen_2_4, queen_2_5 e


queen_2_6

5.1.3 Miles graphs

Nos grafos dessa família, os vértices são dispostos em um espaço, e um par de


vértices é conectado se eles estão próximos o suficiente. Eles foram inspirados em mapas dos
Estados Unidos, onde cada vértice representa uma cidade, e a ligação entre os vértices acontece
caso a distância seja menor que uma certa quilometragem. Apesar de serem baseados em mapas
reais, os grafos dessa família não são planares, pois os vértices não são conectados apenas com
suas cidades de fronteira, e sim utilizando uma distância de ligação. Nas instâncias de DIMACS,
são disponibilizadas 5 instâncias: miles250, miles500, miles750, miles1000 e miles1500.
50

Figura 19 – Ilustração da instância Miles250

5.1.4 Books graphs

Os grafos dessa família foram extraídos de livros. Para cada obra literária, cada
personagem é representado por um vértice, e um par de vértices é conectado se os personagem
representados por eles se encontram pelo menos uma vez nas obras. No repositório de DIMACS,
são disponibilizadas 5 instâncias desse grupo: anna, david, homer, huck e jean. A instância
homer não foi utilizada nesse trabalho, pois é dito na literatura que a instância apresenta erro de
formatação (GONZÁLEZ-VELARDE; LAGUNA, 2002)(LAGUNA; MARTÍ, 2001)(CHAMS
et al., 1987)(GALINIER; HAO, 1999).

Figura 20 – Ilustração da instância Huck

5.1.5 Register graphs

Com base em programas computacionais reais, foram modelados grafos para o


problema de alocação de registradores, utilizando as variáveis dos programas. Nas instâncias
de DIMACS, são disponibilizadas 14 instâncias: zeroin.i.1, zeroin.i.2, zeroin.i.3, mulsol.i.1,
mulsol.i.2, mulsol.i.3, mulsol.i.4, mulsol.i.5, inithx.i.1, inithx.i.2, inithx.i.3, fpsol2.i.1, fpsol2.i.2
51

e fpsol2.i.3.

5.1.6 Leighton Graphs

As instâncias desse grupo são geradas utilizando o método proposto em por Leighton
para produzir grafos com número cromático conhecido (LEIGHTON, 1982). O método para gerar
um grafo de N vértices e número cromático k, consiste em introduzir cliques no grafo, o tamanho
das cliques introduzidas variam de 2 até k. Nas instâncias de DIMACS, são disponibilizadas
12 instâncias: le450_5a, le450_5b, le450_5c, le450_5d, le450_15a, le450_15b, le450_15c,
le450_15c, le450_25a, le450_25b, le450_25c e le450_25d.

5.2 TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE DIMACS

Em (RUIZ, 2012) é mencionando que uma das dificuldades para se comparar métodos
de coloração é por conta das diferentes formas de comparações utilizadas entre os autores.
Enquanto alguns autores disponibilizam os resultados de cada instância separadamente, outros
autores disponibilizam apenas as médias dos resultados. E também não existe um consenso
no que diz respeito as instâncias utilizadas, cada trabalho utiliza instâncias diferentes, porém,
normalmente são utilizadas as instâncias de DIMACS (JOHNSON; TRICK, 1996).
Vamos utilizar as seguintes abreviações para os trabalhos relacionados:
• DSATUR para o algoritmo proposto em (BRÉLAZ, 1979);
• RLF para o algoritmo proposto em (LEIGHTON, 1979);
• FLOW para o algoritmo proposto em (BARNIER; BRISSET, 2004);
• GRASP para o algoritmo proposto em (LAGUNA; MARTÍ, 2001);
• BT para o algoritmo proposto em (AGUIAR et al., 2005);
• GA para o algoritmo proposto em (DOUIRI; ELBERNOUSSI, 2015);
• CA para o algoritmo proposto em (ABBASIAN et al., 2011).
Nossos testes foram realizados e comparados seguindo a métrica de comparação
de cada autor. Primeiramente vamos comparar os resultados obtidos com os resultados de
algoritmos DSATUR, e RLF. Em seguida comparamos os resultados do algoritmo FLOW. Após
isso, confrontamos nossas propostas com os algoritmos GRASP e BT, pois os dois autores
utilizaram as mesmas métricas de avaliação dos resultados. Para finalizar apresentaremos uma
comparação geral dos resultados, apresentando os resultados obtidos em cada família de instância
utilizada, comparando com os resultados apresentados pelos algoritmos CA e GA.
52

5.3 IMPACTO DA UTILIZAÇÃO DA B-ESTRATÉGIA

Para estudar sobre o impacto da b-estratégia no resultado final obtidos pelos algorit-
mos propostos, utilizamos as instâncias da família Queen. Escolhemos as instâncias dessa família
por que, apesar de serem instâncias conhecidas pela sua dificuldade, os algoritmos propostos
conseguiram obter soluções comparáveis a soluções obtidas por meta-heurísticas avançadas.
Também iremos utilizar a b-estratégia no algoritmo DSATUR, aplicando o procedimento ao final
da execução do algoritmo.
Nos experimentos, foram verificadas as quantidades de cores utilizadas nas soluções
encontradas por cada heurística sem a utilização da b-estratégia, e em seguida, foi a b-estratégia
em cada solução, também registrando as quantidades de cores utilizadas nas soluções finais
obtidas. Os resultados obtidos nesse experimento foram compilados na Tabela 1.

Tabela 1 – A tabela apresenta os números de cores utilizadas por cada heurística em cada
instância. Os valores são apresentados de forma x → y, em que x representa a
quantidade de cores obtida pela heurística sem utilização da b-estratégia, e y
representa a quantidade de cores utilizadas ao final da b-estratégia. Na última linha
da tabela, são apresentadas as médias de cores utilizadas por cada uma das
heurísticas para o grupo de instâncias utilizado.
DSATUR SS1 SS2 SSP1 SSP2 Vértices Arestas
queen5_5 5→5 7→5 7→5 6→5 6→5 25 160
queen6_6 9→9 9→7 9→8 10 → 8 9→8 36 290
queen7_7 11 → 10 11 → 8 12 → 8 10 → 9 10 → 8 49 476
queen8_8 12 → 11 12 → 10 13 → 10 13 → 10 12 → 9 64 728
queen8_12 14 → 14 17 → 13 16 → 12 15 → 13 16 → 13 96 1368
queen9_9 13 → 12 13 → 11 15 → 11 14 → 11 14 → 11 81 2112
queen10_10 14 → 14 16 → 13 17 → 12 15 → 13 15 → 12 100 2940
queen11_11 15 → 15 18 → 14 16 → 14 17 → 13 18 → 14 121 3960
queen12_12 16 → 16 18 → 15 19 → 15 19 → 15 18 → 14 144 5192
queen13_13 17 → 16 21 → 16 20 → 16 20 → 16 20 → 15 169 6656
queen15_15 21 → 20 21 → 19 22 → 19 23 → 18 21 → 19 225 10360
queen16_16 23 → 22 26 → 20 24 → 20 26 → 20 24 → 20 256 12640
Média 14,16 → 13,66 15,75 → 12,58 15 → 12,5 15,6 → 12,58 15,25 → 12,33

Analisando a os resultados obtidos, podemos observar que o resultado médio do


DSATUR sem uso da b-estratégia é melhor que os das heurísticas propostas. Porém, observamos
também que a b-estratégia consegue reduzir um maior número de cores das soluções das
heurísticas propostas.
Esse fato ocorre por conta do procedimento de construção de solução do DSATUR.
O algoritmo tem prioridade em colorir vértices que possuem maior grau de saturação, ou seja,
aqueles vértices que possuem maior número de cores em sua vizinhança. Isso gera maior
53

quantidade de cores que possuem b-vértices, reduzindo o número de cores que necessitam ser
removidas para gerar uma b-coloração.

5.3.1 Comparação com RLF e DSATUR

Os algoritmos propostos foram confrontados com os algoritmos DSATUR e RLF.


Para a realização dos testes, foram utilizadas as instâncias da família Queen e as extensões
delas utilizando a construção de Mycielski em até dois passos. A escolha pela utilização das
instâncias da família Queen se deu por serem instâncias que são consideradas difíceis para
algoritmos determinísticos (RUIZ, 2012) (COUDERT, 1997) (KIROVSKI; POTKONJAK, 1998).
Dentre as instâncias utilizadas, 18 delas tem valores ótimos conhecidos, e 18 instâncias não
possuem. Em uma instância que o número cromático k seja conhecido, definimos como Gap
a percentagem em que a solução encontrada c supera o número cromático, dado pela seguinte
fórmula: Gap = 100 ∗ (k − c)/k. Os resultados foram compilados na Tabela 2.

Tabela 2 – Resumo de desempenho dos algoritmos para as instâncias da família QUEEN. São
apresentadas as quantidade de cores utilizadas por cada algoritmo em cada instância.
Também é apresentada a quantidade de vértices e a quantidade de arestas e a
densidade de cada instância. Números em negrito indicam que foram as melhores
soluções para determinada instância, considerando os algoritmos testados. Onde é
apresentado o caractere 0 −0 , indica que não se tem dados suficientes para a inferência
da informação.
Instância \Método DSATUR RLF SS1 SS2 SSP1 SSP2 Melhor Ótimo Gap Vértices Arestas Densidade
queen10_10 14 15 13 12 13 12 12 - - 100 2940 0.5939393939
queen11_11 18 15 14 14 13 14 13 - - 121 3960 0.5454545455
queen12_12 16 19 15 15 15 14 14 - - 144 5192 0.5042735043
queen13_13 17 20 16 16 16 15 15 - - 169 6656 0.4688644689
queen15_15 21 23 19 19 18 19 18 - - 225 10360 0.4111111111
queen16_16 23 24 20 20 20 20 20 - - 256 12640 0.387254902
queen5_5 5 7 5 5 5 5 5 5 0.00% 25 160 0.5333333333
queen6_6 9 10 7 8 8 8 7 7 0.00% 36 290 0.4603174603
queen7_7 11 10 8 8 9 8 8 7 14.29% 49 476 0.4047619048
queen8_12 14 15 13 12 13 13 12 12 0.00% 96 1368 0.3
queen8_8 12 12 10 10 10 9 9 9 0.00% 64 728 0.3611111111
queen9_9 13 15 11 11 11 11 11 10 10.00% 81 2112 0.6518518519
queen10_10_mm1 15 16 13 13 13 13 13 - - 201 8920 0.4437810945
queen11_11_mm1 16 17 15 14 14 15 14 - - 243 12001 0.4081556304
queen12_12_mm1 17 19 16 15 14 15 14 - - 289 15720 0.377739331
queen13_13_mm1 18 21 17 17 16 17 16 - - 339 20137 0.3514862718
queen15_15_mm1 22 25 18 20 20 20 18 - - 451 31305 0.3084996305
queen16_16_mm1 23 25 21 20 21 21 20 - - 513 38176 0.2906920078
queen5_5_mm1 6 8 6 6 6 6 6 6 0.00% 51 505 0.3960784314
queen6_6_mm1 9 11 8 8 8 8 8 8 0.00% 73 906 0.3447488584
queen7_7_mm1 11 11 9 9 9 10 9 8 12.50% 99 1477 0.3044733045
queen8_12_mm1 15 16 13 13 13 13 13 13 0.00% 193 4200 0.2266839378
queen8_8_mm1 13 13 11 10 11 11 10 10 0.00% 129 2248 0.2722868217
queen9_9_mm1 14 16 12 11 12 12 11 11 0.00% 163 6417 0.4860259032
queen10_10_mm2 15 18 17 15 15 16 15 - - 403 26961 0.3328395245
queen11_11_mm2 18 19 18 17 17 18 17 - - 487 36246 0.3062843816
queen12_12_mm2 19 22 19 18 19 19 18 - - 579 47449 0.283563715
queen13_13_mm2 20 23 20 19 20 21 19 - - 679 60750 0.2639227391
queen15_15_mm2 23 27 25 22 23 24 22 - - 903 43242 0.1061796967
queen16_16_mm2 23 27 25 23 24 25 23 - - 1027 115041 0.2183558539
queen5_5_mm2 7 10 7 7 7 7 7 7 0.00% 103 1566 0.3040186372
queen6_6_mm2 10 13 10 9 9 10 9 9 0.00% 147 2791 0.2600875967
queen7_7_mm2 12 12 11 11 11 11 11 9 22.22% 199 4530 0.2299375666
queen8_12_mm2 16 17 16 15 16 16 15 14 7.14% 387 12793 0.1712790028
queen8_8_mm2 13 15 13 12 13 14 12 11 9.09% 259 6873 0.2057106941
queen9_9_mm2 15 18 15 14 15 15 14 12 16.67% 371 19414 0.2828585998
54

Como podemos notar, os algoritmos propostos conseguem soluções de melhor


qualidade para a maioria das instâncias da família QUEEN, também como para as extensões das
instâncias, obtidas utilizando a construção de Mycielski. Mostrando que apesar das heurísticas
propostas serem gulosas, não apresentam a mesma deficiência nesse tipo de grafo que os
algoritmos gulosos. Para tornar mais claro a comparação entre os algoritmos, vamos realizar um
comparativo entre os algoritmos quanto ao número de soluções ótimas encontradas, e o número
de melhores soluções entre os algoritmos. Tais resultados foram compilados na Tabela 3.

Tabela 3 – Para cada algoritmo testado, foi contabilizada a quantidade de soluções ótimas
encontradas nas 18 instâncias com ótimos conhecidos, e quantas vezes cada
algoritmo conseguiu encontrar a melhor solução entre as soluções dos algoritmos
testados.
Ótimos encontrados Melhores soluções entre os algoritmos
DSATUR 3 5
RLF 0 0
Sqrt Start 1 Step 7 13
Sqrt Start 2 Step 9 27
Sqrt Priority 1 Step 6 18
Sqrt Priority 2 Step 6 14

Para realizar uma análise do tempo de processamento, confrontamos as heurísticas


propostas com o algoritmo DSATUR, utilizando 5 instâncias: queen5_5_mm8, queen6_6_mm8,
queen7_7_mm8, queen8_8_mm8 e queen9_9_mm8. As instâncias foram obtidas aplicando oito
vezes a transformação de Mycielski nas seguintes instâncias: queen5_5, queen6_6, queen7_7,
queen8_8 e queen9_9. Os resultados obtidos foram compilados na Tabela 4.

Tabela 4 – Tabela comparativa com o algoritmo DSATUR. A primeira coluna apresenta o nome
das instâncias utilizadas. Cada par de colunas posteriores apresenta as quantidades de
cores utilizadas nas colorações e os tempos de execução, respectivamente. Nas
últimas duas colunas é apresenta a quantidade de vértices e a quantidade de arestas
de cada instância.
DSATUR tempo(s) SS1 tempo(s) SS2 tempo(s) SSP1 tempo(s) SSP2 tempo(s) Vértices Arestas
queen5_5_mm8 14 0,23 15 0,11 13 27.47 14 3,9 14 913,76 6655 1210410
queen6_6_mm8 18 0,42 18 0,17 19 65,13 18 7,72 18 2148,87 9471 2132695
queen7_7_mm8 21 0,81 18 0,24 17 143,08 18 14,13 19 5768.95 12799 3435006
queen8_8_mm8 21 1,38 18 0,41 18 224,65 19 21,05 17 9660,68 16639 5182953
queen9_9_mm8 23 2,19 21 0,67 20 397,94 21 32,54 20 15429,54 20991 14370562

A partir dos resultados obtidos, observamos que a heurística SS1 executa em menor
tempo computacional que as demais. Também notamos que a utilização de passos de tamanho 2
na coloração pode aumentar consideravelmente o tempo de execução em instâncias grandes.
55

5.3.2 Comparação com FLOW

Realizamos um comparativo entre os resultados dos algoritmos SS1, SS2, SSP1 e


SSP2 e o algoritmo proposto em (BARNIER; BRISSET, 2004). Os resultados de cada algoritmo
para cada instância são apresentados na Tabela 5.
A partir dos resultados obtidos, observamos que o algoritmo proposto em (BAR-
NIER; BRISSET, 2004) supera todas os algoritmos propostos neste trabalho nas instâncias
queen_7_7, queen_9_9 e queen_10_10, utilizando pelo menos uma cor a menos em cada, porém
é superado na instância queen_13_13 em duas cores pelo algoritmo SSP2. Percebemos também
que nossas heurísticas foram mais rápidas para a maioria das instâncias utilizadas.

Tabela 5 – Tabela comparativa com o algoritmo FLOW. A primeira coluna apresenta o nome das
instâncias utilizadas. Cada par de colunas posteriores apresentam as quantidades de
cores utilizadas nas colorações e os tempos de execução, respectivamente. Nas
últimas duas colunas é apresenta a quantidade de vértices e a quantidade de arestas
de cada instância.
FLOW tempo(s) SS1 tempo(s) SS2 tempo(s) SSP1 tempo(s) SSP2 tempo(s) Vértices Arestas
miles250 8 0,01 9 < 0,005 8 < 0,005 8 < 0,005 8 < 0,005 128 387
miles500 20 0,01 20 < 0,005 20 < 0,005 20 < 0,005 20 < 0,005 128 1170
miles750 31 0,02 31 < 0,005 31 < 0,005 31 < 0,005 31 < 0,005 128 2113
miles1000 42 0,02 42 < 0,005 42 < 0,005 42 < 0,005 42 < 0,005 128 3216
miles1500 73 0,04 73 < 0,005 73 < 0,005 73 < 0,005 73 < 0,005 128 5198
queen5_5 5 < 0,005 5 < 0,005 5 < 0,005 5 < 0,005 5 < 0,005 25 160
queen6_6 7 0,02 7 < 0,005 8 < 0,005 8 < 0,005 8 < 0,005 36 290
queen7_7 7 0,03 8 < 0,005 8 < 0,005 9 < 0,005 8 < 0,005 49 476
queen8_8 9 3,23 10 < 0,005 10 < 0,005 10 < 0,005 9 < 0,005 64 728
queen9_9 10 99,20 11 < 0,005 11 < 0,005 11 < 0,005 11 < 0,005 81 2112
queen10_10 11 2352,28 13 < 0,005 12 < 0,005 13 < 0,005 12 < 0,005 100 2940
queen11_11 13 3,72 14 < 0,005 14 < 0,005 13 < 0,005 14 < 0,005 121 3960
queen12_12 14 40,95 15 < 0,005 15 < 0,005 15 < 0,005 14 < 0,005 144 5192
queen13_13 17 0,15 16 < 0,005 16 < 0,005 16 < 0,005 15 < 0,005 169 6656
queen15_15 18 18,40 19 < 0,005 19 < 0,005 18 < 0,005 19 0,01 225 10360

5.3.3 Comparação com as propostas de BT e GRASP

Realizamos um comparativo entre os resultados dos algoritmos SS1, SS2, SSP1 e


SSP2 e os algoritmos propostos em (AGUIAR et al., 2005) e em (LAGUNA; MARTÍ, 2001),
que utilizam BT (Busca Tabu) e GRASP, respectivamente. Nos dois trabalhos, as instâncias são
divididas em 4 grupos de instâncias: LEI, MYC, REG e SGB.
• LEI: Leighton Graphs.
• MYC: Mycielski graphs.
• REG: Register graphs.
• SGB: Books graphs, Miles graphs e a intância games120.
56

Nos trabalhos, os algoritmos são confrontados utilizando a média dos resultados


em cada grupo de instâncias e o tempo necessário para execução da família de instâncias.
Realizamos os testes em cada família de instância em relação a qualidade de solução, tais
resultados compilados na Tabela 6. Não foram confrontados os tempos de execução, pois no
trabalho (AGUIAR et al., 2005) o algoritmo realiza grande processamento para geração de
soluções iniciais para a Busca Tabu, tolerando até cem mil iterações de tentativas para gerar uma
boa solução inicial, e apesar disso, o tempo gasto nesse processo é desprezado na análise de
tempo do trabalho.
Os algoritmos propostos tiveram um pior resultado para as instâncias do grupo LEI,
pois já é conhecido que as instâncias desse grupo são difíceis para algoritmos construtivos
gulosos (RUIZ, 2012). Já para os demais grupos, os algoritmos conseguiram resultados tão
bons quanto os resultados alcançados pelas meta-heurísticas. SS2, SSP1 e SSP2 superaram os
resultados do GRASP para as instâncias do grupo SGB.

Tabela 6 – Resultados médios do GRASP, BT e dos algoritmos propostos. O resultado


apresentado é a média aritmética do número de cores utilizadas nas soluções finais
em cada uma das famílias de instâncias.
LEI MYC REG SGB
GRASP 16,5 6 37,4 22,7
BT 15,8 6 37,4 22,6
SS1 20,83 6 37,4 22,7
SS2 19,5 6 37,4 22,6
SSP1 20,27 6 37,4 22,6
SSP2 20,91 6 37,5 22,6
SS1 / SS2 / SS1 / SS2 19,5 6 37,4 22,6

5.3.4 Comparação com GA e CA

Para realizar uma comparação mais geral entre os algoritmos propostos e os trabalhos
relacionados, vamos apresentar todos os resultados das instâncias utilizadas, proporcionando
uma melhor base de dados para alguma comparação futura por outros trabalhos. Dividimos
as instâncias em 5 grupos: LEI (Leighton Graphs), MYC (Mycielski graphs), REG (Register
graphs), SGB (Books graphs, Miles graphs e a intância games120) e QUEEN (Queen graphs).
Os trabalhos (LAGUNA; MARTÍ, 2001) e (AGUIAR et al., 2005) não serão representados, pois
não é informado os resultados de cada instância, e sim da média deles. Nas tabelas apresentadas
a seguir, onde é apresentado o caractere 0 −0 , indica que o dado não foi fornecido pelo autor.
57

Na Tabela 7 são apresentados os resultados para as instâncias do grupo MYC.


Podemos perceber que os algoritmos propostos tiveram mesmos resultados dos demais para
todas as instâncias desse grupo. Na tabela 8 são apresentados os tempos de execução para as
instâncias do grupo MYC. Podemos notar que os algoritmos propostos são mais rápidos para
todas as instâncias.

Tabela 7 – Quantidade de cores utilizadas nas soluções para as instâncias da família MYC.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
myciel3 4 4 4 4 4 4 4 11 20
myciel4 5 5 5 5 5 5 5 23 71
myciel5 6 6 6 6 6 6 6 47 236
myciel6 7 7 7 7 7 - 7 95 755
myciel7 8 8 8 8 8 - 8 191 2360

Tabela 8 – Comparação de tempo para MYC.


SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
myciel3 <0,005 <0,005 <0,005 <0,005 0,01 0,14 <0,005 11 2
myciel4 <0,005 <0,005 <0,005 <0,005 0,89 0,31 <0,005 23 71
myciel5 <0,005 <0,005 <0,005 <0,005 5,41 0,95 <0,005 47 236
myciel6 <0,005 <0,005 <0,005 <0,005 12,77 - <0,005 95 755
myciel7 <0,005 <0,005 <0,005 <0,005 20,19 - <0,005 191 2360

Na Tabela 9 são apresentadas os resultados para as instâncias do grupo REG. É


possível notar que o algoritmo SSP2 obteve soluções de qualidade inferior aos demais para
as instância zeroin.i.3. Porém é notável que os algoritmos também se comportam muito bem
para esse grupo, no que diz respeito a qualidade de solução. Na Tabela 10 são apresentados
os tempos de execução para as instâncias do grupo REG. Podemos notar que os algoritmos
propostos executam em tempo inferior ao demais.
58

Tabela 9 – Quantidade de cores utilizadas nas soluções para as instâncias da família REG.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
fpsol2.i.1 65 65 65 65 65 - 65 496 11654
fpsol2.i.2 30 30 30 30 30 - 30 451 8691
fpsol2.i.3 30 30 30 30 30 - 30 425 8688
inithx.i.1 54 54 54 54 - - 54 864 18707
inithx.i.2 31 31 31 31 - - 31 645 13979
inithx.i.3 31 31 31 31 - - 31 621 13969
mulsol.i.1 49 49 49 49 49 49 49 197 3925
mulsol.i.2 31 31 31 31 31 31 31 188 3885
mulsol.i.3 31 31 31 31 31 - 31 184 3916
mulsol.i.4 31 31 31 31 31 - 31 185 3946
mulsol.i.5 31 31 31 31 31 - 31 186 3973
zeroin.i.1 49 49 49 49 49 - 49 211 4100
zeroin.i.2 30 30 30 30 30 - 30 211 3541
zeroin.i.3 30 30 30 31 30 - 30 206 3540

Tabela 10 – Tempo de execução das heurísticas, em segundos, para as instâncias da família


REG.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
fpsol2.i.1 <0,005 0,04 0,01 0,05 82,03 - 0,10 496 11654
fpsol2.i.2 <0,005 0,04 0,01 0,04 69,79 - 0,09 451 8691
fpsol2.i.3 <0,005 0,04 0,01 0,04 67,14 - 0,09 425 8688
inithx.i.1 <0,005 0,01 <0,005 0,01 - - 0,02 864 18707
inithx.i.2 <0,005 0,07 0,01 0,07 - - 0,15 645 13979
inithx.i.3 <0,005 0,07 0,02 0,07 - - 0,16 621 13969
mulsol.i.1 <0,005 <0,005 <0,005 0,01 25,75 - 0,01 197 3925
mulsol.i.2 <0,005 <0,005 <0,005 <0,005 22,07 - <0,005 188 3885
mulsol.i.3 <0,005 <0,005 <0,005 <0,005 23,49 - <0,005 184 3916
mulsol.i.4 <0,005 <0,005 <0,005 0,01 25,22 - 0,01 185 3946
mulsol.i.5 <0,005 <0,005 <0,005 <0,005 28,33 - <0,005 186 3973
zeroin.i.1 <0,005 <0,005 <0,005 <0,005 28,24 - <0,005 211 4100
zeroin.i.2 <0,005 0,01 <0,005 0,01 83,39 - 0,02 211 3541
zeroin.i.3 <0,005 <0,005 <0,005 <0,005 27,06 - <0,005 206 3540

Na Tabela 11 são apresentadas os resultados para as instâncias do grupo SGB.


Podemos notar que o algoritmo SS1 não consegue encontrar a solução ótima para a instância
miles250, porém, os algoritmos encontram a solução ótima para todos os outros testes realizados
no grupo. Na Tabela 12 são apresentados os tempos de execução para as instâncias do grupo
SGB. Podemos notar que os algoritmos propostos executam praticamente todas as instâncias
utilizando tempo desprezível. Também é possível notar que o CA executa em menos tempo que
o GA para todas as instâncias.
59

Tabela 11 – Quantidade de cores utilizadas nas soluções para as instâncias da família SGB.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
anna 11 11 11 11 11 11 11 138 493
david 11 11 11 11 11 11 11 87 406
games120 9 9 9 9 9 9 9 120 638
huck 11 11 11 11 11 11 11 74 301
jean 10 10 10 10 10 10 10 80 254
miles250 9 8 8 8 8 8 8 128 387
miles500 20 20 20 20 20 - 20 128 1170
miles750 31 31 31 31 - - 31 128 2113
miles1000 42 42 42 42 - - 42 128 3216
miles1500 73 73 73 73 - 73 73 128 5198

Tabela 12 – Tempo de execução das heurísticas, em segundos, para as instâncias da família SGB.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
anna <0,005 <0,005 <0,005 <0,005 11,63 7,42 <0,005 138 493
david <0,005 <0,005 <0,005 <0,005 10,89 4,26 <0,005 87 406
games120 <0,005 <0,005 <0,005 <0,005 10,77 12,46 <0,005 120 638
huck <0,005 <0,005 <0,005 <0,005 11,10 2,39 <0,005 74 301
jean <0,005 <0,005 <0,005 <0,005 9,92 2,10 <0,005 80 254
miles250 <0,005 <0,005 <0,005 0,01 4,39 6,90 0,01 128 387
miles500 <0,005 <0,005 <0,005 <0,005 14,48 - <0,005 128 1170
miles750 <0,005 <0,005 <0,005 <0,005 - - <0,005 128 2113
miles1000 <0,005 <0,005 <0,005 0,01 - - <0,005 128 3216
miles1500 <0,005 0,01 <0,005 0,01 - - 0,02 128 5198

Na Tabela 13 são apresentadas os resultados para as instâncias do grupo LEI. Como


já era esperado, os algoritmos propostos não tiveram bons desempenhos nas instâncias do grupo
LEI. Como já dito anteriormente, as instâncias desse grupo são considerados difíceis para
algoritmos determinísticos, sendo necessário um fator probabilístico para não ficar preso em
um ótimo local longe do ótimo global. Na Tabela 14 são apresentados os tempos de execução
para as instâncias do grupo LEI. É possível notar que para a instância le450_25b, o algoritmo
CA apresenta resultado quanto ao número cromático encontrado, mas não apresenta resultado
quanto ao tempo de execução. Também é possível notar que poucos resultados para instâncias
dessa família foram disponibilizados pelos autores de CA e GA. Mostrando mais uma vez a
dificuldade em comparar algoritmos de coloração, pois além de não existir nenhum padrão para
os testes necessários para os algoritmos, ainda algumas informações sobre os testes realizados
são omitidas pelos autores.
60

Tabela 13 – Quantidade de cores utilizadas nas soluções para as instâncias da família LEI.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
le450_5a 11 11 11 11 - - 11 450 5714
le450_5b 12 11 11 11 - - 11 450 5734
le450_5c 14 11 12 14 - - 11 450 9803
le450_5d 14 11 13 14 - - 11 450 9757
le450_15a 19 18 19 20 - - 18 450 8168
le450_15b 19 18 19 19 - - 18 450 8169
le450_15c 24 22 24 24 15 - 22 450 16680
le450_15d 27 25 27 28 15 - 25 450 16750
le450_25a 26 25 26 25 - - 25 450 8260
le450_25b 25 25 25 25 - 25 25 450 8263
le450_25c 30 29 30 30 25 - 29 450 17343
le450_25d 29 28 32 30 25 - 28 450 17425

Tabela 14 – Tempo de execução das heurísticas, em segundos, para as instâncias da família LEI.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
le450_5a <0,005 <0,005 <0,005 <0,005 - - <0,005 450 5714
le450_5b <0,005 <0,005 <0,005 <0,005 - - <0,005 450 5734
le450_5c <0,005 0.01 0.01 0.01 - - 0,03 450 9803
le450_5d <0,005 0.01 0.01 0.01 - - 0,03 450 9757
le450_15a <0,005 0.01 0.01 0.01 - - 0,03 450 8168
le450_15b <0,005 0.01 0.01 0.01 - - 0,03 450 8169
le450_15c <0,005 0.04 0,02 0.04 93 - 0,10 450 16680
le450_15d <0,005 0.04 0,02 0.04 228 - 0,10 450 16750
le450_25a <0,005 0.01 0.01 0.01 - - 0,03 450 8260
le450_25b <0,005 0.01 0.01 0.01 - - 0,03 450 8263
le450_25c <0,005 0.05 0.02 0.05 740 - 0,12 450 17343
le450_25d <0,005 0.05 0.02 0.05 382 - 0,12 450 17425

Na Tabela 15 são apresentados os resultados para as instâncias do grupo QUEEN.


Apesar do grupo ser conhecido possuírem instâncias difíceis para os algoritmos determinísti-
cos, os algoritmos propostos tiveram bons resultados, superando o algoritmo CA na instância
queen10_10 e obtendo resultados tão bons quanto GA e CA para as demais, com exceção da
instância queen9_9, que o algoritmo GA superou os algoritmos propostos, utilizando uma cor a
menos.
61

Tabela 15 – Quantidade de cores utilizadas nas soluções para as instâncias da família QUEEN.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
queen5_5 5 5 5 5 5 5 5 25 160
queen6_6 7 8 8 8 7 7 7 36 290
queen7_7 8 8 9 8 7 8 8 49 476
queen8_8 12 10 10 9 9 - 9 64 728
queen8_12 13 12 13 13 - - 12 96 1368
queen9_9 11 11 11 11 10 - 11 81 2112
queen10_10 13 12 13 12 - 15 12 100 2940
queen11_11 14 14 13 14 - - 13 121 3960
queen12_12 15 15 15 14 - - 14 144 5192
queen13_13 16 16 16 15 - - 15 169 6656
queen15_15 19 19 18 19 - - 18 225 10360
queen16_16 20 20 20 20 - - 20 256 12640

Tabela 16 – Tempo de execução das heurísticas, em segundos, para as instâncias da família


QUEEN.
SS1 SS2 SSP1 SSP2 GA CA SS1/SS2/SS1/SS2 Vértices Arestas
queen5_5 <0,005 <0,005 <0,005 <0,005 1,20 0,73 <0,005 25 160
queen6_6 <0,005 <0,005 <0,005 <0,005 1,32 1,78 <0,005 36 290
queen7_7 <0,005 <0,005 <0,005 <0,005 6,91 5,99 <0,005 49 476
queen8_8 <0,005 <0,005 <0,005 <0,005 9,87 - <0,005 64 728
queen8_12 <0,005 <0,005 <0,005 <0,005 - - <0,005 96 1368
queen9_9 <0,005 <0,005 <0,005 <0,005 13,96 - <0,005 81 2112
queen10_10 <0,005 <0,005 <0,005 <0,005 - - <0,005 100 2940
queen11_11 <0,005 <0,005 <0,005 <0,005 - - <0,005 121 3960
queen12_12 <0,005 <0,005 <0,005 <0,005 - - <0,005 144 5192
queen13_13 <0,005 <0,005 <0,005 <0,005 - - <0,005 169 6656
queen15_15 <0,005 <0,005 <0,005 0.01 - - 0,01 225 10360
queen16_16 <0,005 0.01 <0,005 0.02 - - 0,03 256 12640

5.4 TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE ALOCAÇÃO DE FREQUÊN-


CIAS

Para testes computacionais das instâncias geradas com a utilização do gerador


proposto, confrontamos a performance dos algoritmos propostos com os algoritmos RLF e
DSATUR, pois são conhecidos por conseguirem boas soluções para grafos gerais. Os resultados
foram compilados na tabela 17.
Podemos perceber que os algoritmos propostos tiveram bom desempenho para as
instâncias, conseguindo resultados tão bons ou melhores quanto os resultados conseguidos com
a utilização dos algoritmos RLF e DSATUR, com exceção do algoritmo SSP2 para a instância
alo900, que utilizou uma cor a mais que as demais heurísticas. Podemos perceber também o
62

Tabela 17 – A tabela apresenta a quantidade de cores utilizadas nas soluções dos algoritmos
RLF, DSATUR, SS1, SS2, SSP1 e SSP2 para as instâncias propostas.
RLF DSATUR SS1 SS2 SSP1 SSP2 Vértices Arestas
alo100 4 4 4 4 4 4 100 52
alo200 7 6 6 6 6 6 200 228
alo300 6 6 6 6 6 6 300 478
alo400 7 7 7 7 7 7 400 870
alo500 9 8 8 8 8 8 500 1323
alo600 9 10 9 9 9 9 600 1905
alo700 9 9 9 9 9 9 700 2634
alo800 12 11 10 9 10 9 800 3593
alo900 11 11 11 11 11 12 900 4438
alo1000 15 14 12 13 13 12 1000 5483

algoritmo RLF teve o pior desempenho médio dentre os algoritmos utilizados. O algoritmo que
obteve o pior desempenho médio dentre os algoritmos propostos, foi o SSP1, utilizando em
média 8, 3 cores, enquanto os demais algoritmos propostos utilizaram em média 8, 2 cores.
63

6 CONCLUSÕES E TRABALHOS FUTUROS

Este trabalho apresenta novas técnicas aplicáveis ao problema inicialização de


coloração (Sqrt-Start), um procedimento de busca em grafos (2-Step), a utilização de prioridade
em colorir vértices de menores cores, e um procedimento que otimiza a b-estratégia aplicada
em redução de classes de cores. Propondo também 4 novas heurísticas (SS1, SS2, SSP1 e
SSP2) para o problema de coloração do grafos que utilizam combinações . Os resultados
computacionais ilustrados no Capítulo 5 mostram que as heurísticas propostas neste trabalho se
mostram competitivas em relação aos outros trabalhos, tanto na qualidade de solução, quanto ao
tempo computacional.
As heurísticas se mostraram superiores ao algoritmo DSATUR em várias instâncias,
mostrando potencial para sua aplicação para obtenção de soluções com baixo custo de tempo e
para inicializar algoritmos robustos de busca local.
O procedimento 2-Step, apesar de ser um procedimento ainda não estudado na litera-
tura, conseguiu uma melhora na solução final para muitas instâncias, mostrando um potencial
para estudo de sua aplicação em outros problemas da teoria dos grafos. Porém, a sua aplicação
eleva a complexidade do algoritmo, tornado inviável sua aplicação para grafos que possuem um
número elevado de vértices e arestas.
Os resultados das propostas devem-se, em parte, para a b-estratégia modificada
aplicada ao final do procedimento de coloração, que normalmente consegue reduzir algumas
cores para a solução final. .
Notamos que algoritmos propostos conseguirem bons resultados para a maioria das
instâncias utilizadas, porém eles não conseguiram bons resultados para as instâncias baseadas
em grafos de Leighton. Mostrando uma limitação dos algoritmos propostos.
Apesar de não se conhecer o número cromático das instâncias de alocação de
frequências propostas, os algoritmos propostos obtiveram melhores resultados médios que o
algoritmo DSATUR, mostrando que é um grupo de instâncias que o algoritmo DSATUR tem
dificuldade em encontrar boas soluções.
Uma análise mais detalhada sobre o impacto da b-estratégia em outras heurísticas de
coloração de vértices pode ser realizada. A fim de estudar a eficiência da b-estratégia em reduzir
o número de cores utilizadas nas soluções encontradas por outras heurísticas.
64

O fato das heurísticas propostas não conseguirem boas soluções para grafos da
família LEI, abre caminho para uma pesquisa mais detalhada sobre as características dos grafos
que as heurísticas têm dificuldades em conseguirem boas soluções. E possivelmente realizar
alterações nos métodos a fim de melhorar as soluções obtidas.
Notamos que a divisão proposta pode não ser eficiente, dependendo dos vértices
iniciais escolhidos, tornando um possível trabalho futuro, aprimorar a escolha dos vértices
iniciais na divisão em subgrafos, de modo a otimizar a performance da b-estratégia modificada,
que é aplicada posteriormente.
As instâncias que foram geradas, voltas para o problema de alocação de frequência,
foram geradas de forma aleatória, tornando um possível trabalho futuro, a geração de instâncias
tomando como base redes de rádio reais.
65

REFERÊNCIAS

ABBASIAN, R.; MOUHOUB, M.; JULA, A. Solving graph coloring problems using cultural
algorithms. In: FLAIRS Conference. [S.l.: s.n.], 2011.
AGUIAR, F. N. de; HONORATO, G. d. S. C.; SANTOS, H. G.; OCHI, L. S. Metaheurística
busca tabu para o problema de coloração de grafos. Anais do XXXVII SBPO, p. 2497–2504,
2005.
BARNIER, N.; BRISSET, P. Graph coloring for air traffic flow management. Annals of operati-
ons research, Springer, v. 130, n. 1-4, p. 163–178, 2004.
BELLO, G. S.; RANGEL, M. C.; BOERES, M. C. S. Uma Abordagem do Problema de
Programação de Grade Horária Sujeito a Restrições Utilizando Coloração de Grafos. Tese
(Doutorado) — Dissertação de Mestrado, Universidade Federal do Espírito Santo, Brasil, 2007.
BENDER, M. A.; FARACH-COLTON, M. The lca problem revisited. In: LATIN 2000: Theo-
retical Informatics. [S.l.]: Springer, 2000. p. 88–94.
BERKMAN, O.; VISHKIN, U. Recursive star-tree parallel data structure. SIAM Journal on
Computing, SIAM, v. 22, n. 2, p. 221–242, 1993.
BOMZE, I. M.; BUDINICH, M.; PARDALOS, P. M.; PELILLO, M. The maximum clique
problem. In: Handbook of combinatorial optimization. [S.l.]: Springer, 1999. p. 1–74.
BRÉLAZ, D. New methods to color the vertices of a graph. Communications of the ACM,
ACM, v. 22, n. 4, p. 251–256, 1979.
BROOKS, R. L. On colouring the nodes of a network. In: CAMBRIDGE UNIV PRESS.
Mathematical Proceedings of the Cambridge Philosophical Society. [S.l.], 1941. v. 37, n. 02,
p. 194–197.
BROWN, J. R. Chromatic scheduling and the chromatic number problem. Management Science,
INFORMS, v. 19, n. 4-part-1, p. 456–463, 1972.
CAPRARA, A.; FISCHETTI, M.; TOTH, P. Modeling and solving the train timetabling problem.
Operations research, Informs, v. 50, n. 5, p. 851–861, 2002.
CARTER, M. W. Or practice—a survey of practical applications of examination timetabling
algorithms. Operations research, INFORMS, v. 34, n. 2, p. 193–202, 1986.
CHAITIN, G. J.; AUSLANDER, M. A.; CHANDRA, A. K.; COCKE, J.; HOPKINS, M. E.;
MARKSTEIN, P. W. Register allocation via coloring. Computer languages, Elsevier, v. 6, n. 1,
p. 47–57, 1981.
CHAMS, M.; HERTZ, A.; WERRA, D. D. Some experiments with simulated annealing for
coloring graphs. European Journal of Operational Research, Elsevier, v. 32, n. 2, p. 260–266,
1987.
CHARTRAND, G.; ZHANG, P. A first course in graph theory. [S.l.]: Courier Corporation,
2012.
CHOW, F. C.; HENNESSY, J. L. The priority-based coloring approach to register allocation.
ACM Transactions on Programming Languages and Systems (TOPLAS), ACM, v. 12, n. 4,
p. 501–536, 1990.
66

CHRISTOFIDES, N. An algorithm for the chromatic number of a graph. The Computer


Journal, Br Computer Soc, v. 14, n. 1, p. 38–39, 1971.

CHRISTOFIDES, N.; THEO-RY, G. An algorithmic approach. [S.l.]: New York: Academic


Press Inc, 1975.

COLEMAN, T. F.; MORÉ, J. J. Estimation of sparse jacobian matrices and graph coloring blems.
SIAM journal on Numerical Analysis, SIAM, v. 20, n. 1, p. 187–209, 1983.

COUDERT, O. Exact coloring of real-life graphs is easy. In: ACM. Proceedings of the 34th
annual Design Automation Conference. [S.l.], 1997. p. 121–126.

DIAS, B. R. C.; RODRIGUES, R. de F.; FILHO, N. M. Alocação de canais em redes celulares


sem fio: algoritmos e modelos teóricos em grafos e escalonamento. Anais do XLIV Simpósio
Brasileiro de Pesquisa Operacional, 2012.

DIESTEL, R. Graph Theory. [S.l.]: Spring-Verlag New York, 2000.

DORST, W. V. Bogomips mini- howto. The Linux Documentation Project, 2004.

DOUIRI, S. M.; ELBERNOUSSI, S. A new heuristic for the sum coloring problem. Applied
Mathematical Sciences, v. 5, n. 63, p. 3121–3129, 2011.

DOUIRI, S. M.; ELBERNOUSSI, S. Solving the graph coloring problem via hybrid genetic
algorithms. Journal of King Saud University-Engineering Sciences, Elsevier, v. 27, n. 1, p.
114–118, 2015.

ERBEN, W.; KEPPLER, J. A genetic algorithm solving a weekly course-timetabling problem.


In: Practice and Theory of Automated Timetabling. [S.l.]: Springer, 1996. p. 198–211.

FEO, T. A.; RESENDE, M. G. Greedy randomized adaptive search procedures. Journal of


global optimization, Springer, v. 6, n. 2, p. 109–133, 1995.

FEOFILOFF, P.; KOHAYAKAWA, Y.; WAKABAYASHI, Y. Uma introdução sucinta à teoria


dos grafos. Disponıvel em http://www. ime. usp. br/˜ pf/teoriadosgrafos, 2011.

FISCHER, J.; HEUN, V. Theoretical and practical improvements on the rmq-problem, with
applications to lca and lce. In: SPRINGER. Combinatorial Pattern Matching. [S.l.], 2006. p.
36–48.

GALINIER, P.; HAO, J.-K. Hybrid evolutionary algorithms for graph coloring. Journal of
combinatorial optimization, Springer, v. 3, n. 4, p. 379–397, 1999.

GAMST, A. Some lower bounds for a class of frequency assignment problems. Vehicular
Technology, IEEE Transactions on, IEEE, v. 35, n. 1, p. 8–14, 1986.

GANDHAM, S.; DAWANDE, M.; PRAKASH, R. Link scheduling in wireless sensor networks:
distributed edge-coloring revisited. Journal of Parallel and Distributed Computing, Elsevier,
v. 68, n. 8, p. 1122–1134, 2008.

GARDNER, M. The unexpected hanging and other mathematical diversions. University of,
1968.

GAREY, M. R.; JOHNSON, D. S. Computers and intractability: a guide to the theory of


np-completeness. 1979. San Francisco, LA: Freeman, 1979.
67

GAREY, M. R.; JOHNSON, D. S. Computers and intractability. [S.l.]: wh freeman, 2002.


v. 29.

GLOVER, F. W.; KOCHENBERGER, G. A. Handbook of metaheuristics. [S.l.]: Springer


Science Business Media, 2006. v. 57.

GLOVER, M. L. F. Tabu search. Kluwer Academic Publishers, 1997.

GONZÁLEZ-VELARDE, J. L.; LAGUNA, M. Tabu search with simple ejection chains for
coloring graphs. Annals of Operations Research, Springer, v. 117, n. 1-4, p. 165–174, 2002.

HOLLAND, J. H. Adaptation in natural and artificial systems: an introductory analysis


with applications to biology, control, and artificial intelligence. [S.l.]: MIT press, 1992.

JOHNSON, D. S.; ARAGON, C. R.; MCGEOCH, L. A.; SCHEVON, C. Optimization by


simulated annealing: an experimental evaluation; part ii, graph coloring and number partitioning.
Operations research, INFORMS, v. 39, n. 3, p. 378–406, 1991.

JOHNSON, D. S.; TRICK, M. A. Cliques, coloring, and satisfiability: second DIMACS


implementation challenge, October 11-13, 1993. [S.l.]: American Mathematical Soc., 1996.
v. 26.

JR, A. D. H.; ACTION, F. S. Scheduling university course examinations by computer. Commu-


nications of the ACM, ACM, v. 10, n. 4, p. 235–238, 1967.

KIM, K.-Y. C. K. J. IT Convergence and Security 2012. [S.l.]: Springer Science Business
Media, 2012.

KIROVSKI, D.; POTKONJAK, M. Efficient coloring of a large spectrum of graphs. In: ACM.
Proceedings of the 35th annual Design Automation Conference. [S.l.], 1998. p. 427–432.

KNUTH, D. E. The art of computer programming: sorting and searching. [S.l.]: Pearson
Education, 1998. v. 3.

KUBALE, M. Graph colorings. [S.l.]: American Mathematical Soc., 2004. v. 352.

LAGUNA, M.; MARTÍ, R. A grasp for coloring sparse graphs. Computational optimization
and applications, Springer, v. 19, n. 2, p. 165–178, 2001.

LAND, A. H.; DOIG, A. G. An automatic method of solving discrete programming problems.


Econometrica: Journal of the Econometric Society, JSTOR, p. 497–520, 1960.

LEIGHTON, F. T. A graph coloring algorithm for large scheduling problems. Journal of


research of the national bureau of standards, v. 84, n. 6, p. 489–506, 1979.

LEIGHTON, F. T. Finite common coverings of graphs. Journal of Combinatorial Theory,


Series B, Elsevier, v. 33, n. 3, p. 231–238, 1982.

LÜ, Z.; HAO, J.-K. A memetic algorithm for graph coloring. European Journal of Operational
Research, Elsevier, v. 203, n. 1, p. 241–250, 2010.

LUCAS, D. C. Algoritmos genéticos: uma introduçao1. 2002.

MANBER, U.; MYERS, G. Suffix arrays: a new method for on-line string searches. siam
Journal on Computing, SIAM, v. 22, n. 5, p. 935–948, 1993.
68

MYCIELSKI, J. Sur le coloureage des graphes. Colloquium Mathematicum, v. 3, p. 161–162,


1955.

NETO, A. S. A.; GOMES, M. J. N. Problema e algoritmos de coloração em grafos-exatos e


heurísticos. Revista de Sistemas e Computação-RSC, v. 4, n. 2, 2015.

NETTO, P. O. B. Grafos: teoria, modelos, algoritmos. [S.l.]: Edgard Blücher, 2003.

NEUFELD, G.; TARTAR, J. Graph coloring conditions for the existence of solutions to the
timetable problem. Communications of the ACM, ACM, v. 17, n. 8, p. 450–453, 1974.

PRESTWICH, S. Using an incomplete version of dynamic backtracking for graph colouring.


Electronic Notes in Discrete Mathematics, Elsevier, v. 1, p. 61–73, 1999.

PROLO, C. A. Alocação de Registradores (revisado). 2007. Disponível em: <http://www.inf.


pucrs.br/~prolo/Disciplinas/06I/CompII/AllocRegistradores.pdf>.

REYNOLDS, R. G. An introduction to cultural algorithms. In: SINGAPORE. Proceedings of


the third annual conference on evolutionary programming. [S.l.], 1994. p. 131–139.

REYNOLDS, R. G.; SALEEM, S. The impact of environmental dynamics on cultural emergence.


Perspectives on Adaptions in Natural and Artificial Systems, p. 253–280, 2005.

ROCHA, L. S. b-colorações de grafos. Dissertação (Mestrado) — Universidade Federal do


Ceará, Fortaleza - CE, Brasil, 2009.

RUIZ, I. C. R. Gravitational Swarm for Graph Coloring. Tese (Doutorado) — The University
of the Basque Country, 2012.

WEISSTEIN, E. W. Queen Graph. From MathWorld—A Wolfram Web Resource. 2011.


Last visited on 07/02/2016. Disponível em: <http://mathworld.wolfram.com/QueenGraph.html>.

WERRA, D. de. An introduction to timetabling.European Journal of Operational Research,


Elsevier, v. 19, n. 2, p. 151–162, 1985.

WIRTH, N. Program development by stepwise refinement. Communications of the ACM,


ACM, v. 14, n. 4, p. 221–227, 1971.
69

ÍNDICE

b-coloração, 26
Breadth-First Search (BFS), 22
Bucket Sort, 29

caminho simples, 20
circuito, 20
clique, 20
conexo, 20
Cultural Algorithm (CA), 33

densidade, 21

Genetic Algorithm (GA), 32


grafo, 19
grafo completo, 20
grau, 20
Greedy Randomized Adaptive Search Proce-
dure (GRASP), 34

lista tabu, 34

mycielski, 25

r-partido, 22
Range Minimum Query (RMQ), 29
Recursive Largest First (RLF), 28

Sqrt Start 1 (SS1), 41


Sqrt Start Priority 1 (SSP1, 42
Sqrt-Decomposition, 29
subgrafo, 19

Tabu Search, 34

vizinhança, 20

Você também pode gostar