coloracao-grafos-lucianoloder

Post on 27-Oct-2014

75 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TEORIA DA COMPUTAÇÃO

COLORAÇÃO DE GRAFOS

Aluno: Luciano Ludwig Loder

INTRODUÇÃO

O problema de coloração de grafos surgiu do problema de coloração de mapas, onde se desejava colorir um mapa de tal forma que estados adjacentes não tivessem a mesma cor

Atualmente esse problema é empregado em outros campos, tais quais:

Alocação de registradores em compiladores. Escalonamento de tarefas Roteamento de canal em circuitos VLSI

NÚMERO CROMÁTICO

É o número mínimo de cores necessário para colorir um grafo qualquer.

Foi provado em 1976 que o número cromático de qualquer grafo planar é de 4

POLINÔMIOS CROMÁTICOS

Conta o número de formas que um grafo pode ser colorido usando um número fixo de cores.

O polinômio cromático é uma função, P(G, t) que especifica o número de possibilidades de colorir o grafo G com T cores.

ALGORITMOS PROPOSTOS

Vários algoritmos foram propostos para resolver esse problema. Dentre eles pode-se destacar:

Pesquisa por força-bruta (solução exata) Contração Greedy coloring

Neste trabalho será apresentada a pesquisa por força-bruta e a greedy coloring.

PESQUISA POR FORÇA-BRUTA

Dados K cores e N vértices, considera cada uma das KN atribuições de K cores para N vértices e testa para cada um deles se a solução é válida.

Esse procedimento é impraticável para valores grandes de vértices N e cores K.

A complexidade do problema é O(KN).

GREEDY COLORING

Considera os vértices em uma ordem específica, V1, V2, … Vn, e atribui a V

I a menor cor disponível não

utilizada pelos vizinhos de VI, adicionando uma cor a

mais, caso necessário.

Dependendo da ordem dos vértices, esse algoritmo exige um número de cores bem maior que o mínimo.

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

A rotina segue os seguintes passos:

Monta a lista de adjacências Inicializa a lista de cores Escolhe o vértice Vi de maior grau para ser colorido

primeiro Chama a sub-rotina Colore_Vertice para colorir o

vértice escolhido.

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

Sub-rotina Colore_Vertice: Vk

Se o vertice Vk ainda não foi colorido Procurar a cor C apropriada Se não existir uma cor apropriada, criar

uma nova cor Colorir o vértice V com a cor C Para todo vértice Vj adjacente a Vk faça

Chamar a sub-rotina Colore_vertice para colorir o vértice Vj

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

COLORAÇÃO POR BUSCA EM PROFUNDIDADE

Custo Computacional:

Considerando que N seja o número de vértices, E o número de arestas, NC o número de cores e NVZ o número de vizinhos (vértices adjacentes) temos:

Montar a lista de adjacência = O(N+E) Escolher o vértice de maior grau = O(N) Procurar cor = O(NVZ*NC) Colorir o vértice = O(1) Para todos os vértices, colorir todos os seus

adjacentes = O((N-1)*(NVZ*NC)) Custo total = O(N+E)+O(N)+O(N*(NVZ*NC)) = O(N³)

COLORAÇÃO POR BUSCA EM LARGURA

A rotina segue os seguintes passos:

Montar a lista de adjacências Inicializar a estrutura de cores Inicializar a estrtura de fila Escolher o vértice Vi de maior grau para ser

colorido primeiro Chamar a sub-rotina Colore_Vertice para colorir o

Vértice Vi escolhido Inserir o vértice Vi na fila Q

COLORAÇÃO POR BUSCA EM LARGURA

Enquanto a fila Q não estiver vazia, faça: Remove o vértice Vk da fila Para todo vértice Vj adjacente a Vk faça

Chamar a sub-rotina Colore_Vertice para colorir o Vértice Vj

Inserir Vj na fila

COLORAÇÃO POR BUSCA EM LARGURA

Sub-rotina Colore_Vertice Vk:

Se o verticeVk ainda não foi colorido Procurar a cor C apropriada Se não existir cor apropriada para colorir o vértice

Vk Criar uma nova cor C

Colorir o vértice Vk com a cor C

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

COLORAÇÃO POR BUSCA EM LARGURA

Custo computacional:

Considerando que N seja o número de vértices, E o número de arestas, NC o número de cores e NVZ o número de vizinhos, temos:

Montar a lista de adjacências = O(N+E) Escolher o vértice de maior grau = O(N) Procurar cor = O(NVZ*NC) Colorir vértice = O(1) Inserir e remover da fila = O(1) Para todos os vértices colorir todos os

seus adjacentes = O((N-1)*(NVZ*NC)) Custo total = O(N+E)+O(N)+O(N*(NVZ*NC)) = O(N³)

BIBLIOGRAFIA

http://www.lcad.icmc.usp.br/~nonato/ED/Coloracao/coloracao.html

http://en.wikipedia.org/wiki/Graph_coloring

top related