You are on page 1of 3

Coloração de Grafos para resolução de Sudoku

Francisco Ivan de S. Alves

Eixo de Computação - Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE)


61936-000– Maracanaú – CE – Brasil
ivanalves94@gmail.com

1. Introdução
O Sudoku é um jogo do gênero puzzle (quebra-cabeça), projetado por Howard Garns
[Wikipédia], um arquiteto e construtor independente de puzzles. O jogo aparece pela primeira
vez na edição de maio de 1979 da revista Dell Pencil Puzzles and Word Games [Wikipédia]. O
jogo consiste em uma grade de tamanho e blocos de tamanho , onde e. A grade vem com alguns
quadrados já preenchidos, e o objetivo é preencher os demais com números de a sem repetir
números nas linhas, colunas ou blocos.
Na área de estudo de Teoria dos Grafos, o problema da Coloração de Grafos, na sua
forma mais simples, consiste em rotular com valores (denominados cores) os vértices de um
grafo de tal forma que vértices adjacentes não possuam a mesma cor [Cunha, Silva e Maciel].
O ponto inicial para resolução do problema com uso de grafos, foi modelar a
problemática da seguinte forma vista na Figura 1. Observa-se que cada vértice será ligado há
outros vértices adjacentes por nível de: linha, coluna e quadro(Grade). Cada vértice receberá
uma coloração, na qual não poderá se repetir nos vértices adjacentes a ele, obviamente que em
todos os 3 níveis de adjacência anteriormente citados.

Figura 1. Modelagem de um Sudoku em um grafo simples


2. DSatur
Diversas variações da heurística seqüencial são propostas na literatura, diferindo em geral
somente pelo método empregado na ordenação dos vértices. Algumas dessas variações exibem
melhores resultados computacionais, e, dentre elas, destaca-se a heurística ​Degree of Saturation
(DSATUR), a qual foi proposta por Brélaz em 1979 [Neto e Gomes].
Ainda segundo Neto e Gomes, seja G um grafo e C uma coloração parcial dos vértices de G,
define-se o grau de saturação de um vértice v como o número de diferentes cores apresentadas
pelos vértices adjacentes a v . O algoritmo DSATUR, assim denominado em função do emprego
do grau de saturação, pode ser então descrito como um procedimento que compreende a
execução das seguintes etapas :
1. Ordene os vértices de em ordem decrescente de graus;
2. Atribua ao vértice de maior grau a cor 1;
3. Selecione o vértice com maior grau de saturação. Se houver vértices com mesmo grau
de saturação, opte por qualquer um de grau máximo pertencente ao sub-grafo ainda não
colorido;
4. Atribua ao vértice selecionado a cor de menor índice disponível;
5. Se todos os vértices estiverem coloridos, pare. Caso contrário, retorne à etapa 3.
Na implementação do algoritmo foi utilizado como base os procedimentos citados
anteriormente.
1. Verifica se todos os vertices já foram coloridos. Caso, sim retorna True. Solução
encontrada;
2. Seleciona o vértice com maior grau de saturação;
3. Seleciona uma lista de cores possíveis a ele.;
4. Verifica se ainda tem e quais são as cores possíveis(disponíveis) para colorir o
vértice. Caso não, retorna False;
5. Laço de repetição percorrendo todas as cores possíveis;
6. Atribui ao vértice de maior grau a cor 1;
7. Aumenta a saturação dos adjacentes;
8. Verifica se com essa configuração todos estão coloridos de forma correta. Usando
DSatur. Caso True, solução encontrada. Caso False, diminui-se a saturação dos
adjacentes e retira-se a coloração atribuída. Retorna ao passo 5.
3. Resolução
Para resolução do problema foram desenvolvidos 3 Classes: Grafo , Vértice e Sudoku. As classes
Vértice e Grafo possuem os seguintes atributos e métodos (Figura 2). Na classe Sudoku é feito
apenas a leitura do arquivo, a instanciação do objeto Grafo e chamada dos métodos: solução e
escreveArquivo.

Link do código fonte: ​https://github.com/ivanmpe/sudoku-coloracao-grafos

4. Referências Bibliográficas

Borges, Samuel. Lima, Thales. Maques, Vitor. (2016) “Coloração de Grafos Aplicado na
resolução do Sudoku”. http://ceur-ws.org/Vol-1754/EPoGames_2016_AC_paper_2.pdf. Janeiro
de 2019.
Gouveia, Thiago. Cunha, Nailson dos Santos. Junior, Paulo Distarso Maciel. (2013). TÉCNICAS
DE COLORAÇÃO DE GRAFOS APLICADAS À RESOLUÇÃO DE QUEBRA-CABEÇAS
DO TIPO SUDOKU.
https://www.researchgate.net/publication/260517476_TECNICAS_DE_COLORACAO_DE_GR
AFOS_APLICADAS_A_RESOLUCAO_DE_QUEBRA-CABECAS_DO_TIPO_SUDOKU.
Janeiro de 2019.
Neto, Alfredo S. A. Gomes, Marcos J. N. (2014). “PROBLEMA E ALGORITMOS DE
COLORAÇÃO EM GRAFOS - EXATOS E HEURÍSTICOS”
.https://revistas.unifacs.br/index.php/rsc/article/viewFile/3028/2497. Janeiro de 2019.
Wikipédia. (2019). “Sudoku”. https://pt.wikipedia.org/wiki/Sudoku. Fevereiro de 2019.

You might also like