Professional Documents
Culture Documents
4 Limitantes (Bounding )
4.1
. . . . . . . . . . . . . . . . . . . . . . . . . .
5 Instncias
6 Avaliao Experimental
7 Relatrio e Apresentao
1 Objetivo
Implementar o algoritmo de ramicao e corte (
Data de Entrega:
individualmente
ou
em dupla.
O relatrio, o cdigo fonte e outros arquivos do projeto devem ser submetidos no Moodle at a data
de entrega e os trabalhos devero ser defendidos em sala de aula (por ambos os alunos caso seja feito em
dupla). A falta da submisso dos arquivos ou a falta no dia de defesa dos trabalhos implicar em nota
nula.
Referncias bibliogrcas e a internet podem ser consultadas para sanar dvidas sobre o problema
da clique mxima, sobre a tcnica de ramicao e corte e para tirar dvidas sobre a linguagem de
programao. Porm, no ser aceita a cpia de cdigo na parte que implementa o algoritmo de ramicao
e corte.
trabalho consiste em implement-los. Cada aluno ou equipe responsvel pelo prprio cdigo e no deve
compartilhar com as demais equipes.
Denio 2 (Problema da Clique Mxima) Dado um grafo, encontrar um conjunto de vrtices que
uma clique de tamanho mximo no grafo.
{3, 4}
{3, 4, 7}
{1, 5, 8}
{2, 5, 6, 8}
Algumas dessas cliques so
e
{1, 5, 8}
cardinalidade dentre
que
maximais,
{2, 5, 6, 8}.
todas
A clique
mxima,
As cliques
as cliques do grafo
{2, 5, 6, 8}.
O problema da clique mxima NP-difcil. Vrias solues exatas e heursticas foram propostas para
o problema da clique mxima.
ramicao e corte (
K.
do conjunto de candidatos
e tomar dois
caminhos possveis:
1. no utilizar o vrtice
2. adicionar o vrtice
na clique
clique
K.
(Q, K)
com o vrtice
em
Q,
removemos de
o vrtice
no forem vizinhos de
os vrtices da clique
encontrada.
(Q, K)
backtrack ).
P.
Vocs podem entender a execuo do algoritmo como uma rvore na qual cada nodo representa um
estado
(Q, K)
ou
(clique, candidatos).
vrtice na clique e o lho direito consiste em proibir a utilizao desse vrtice (removendo-o de
adicion-lo em
sem
Q).
2 C
3 P {(, V )} // uma pilha de pares (Q, K)
4 // onde Q uma clique e K um conjunto de vrtices
5 // candidatos a entrar na clique Q
6 enquanto P 6= faa
7
(Q, K) pop(P)
8
enquanto K 6= AND |C| < |Q| + bound(G, Q, K)
9
v um elemento qualquer de K
10
K K {v}
11
P .push( (Q, K) )
12
(Q, K) (Q {v}, K G (v) )
13
14
15
16
retorna C
faa
: {u, v}
4 Limitantes (Bounding )
Sem limitao da busca pela soluo tima, a rvore de busca do algoritmo de ramicao e corte imensa
para qualquer grafo denso com mais de 50 vrtices (informalmente, um grafo denso um grafo com muitas
arestas).
O desempenho do algoritmo de ramicao e corte depende da qualidade do limitante da busca e do
tempo computacional necessrio para calcular esse limitante.
4.1
Limitante Trivial
bound(G, Q, K):
4.2
Uma colorao de vrtices de um grafo uma atribuio de cores a todos os vrtices do grafo tal que
vrtices adjacentes recebem cores distintas.
Importante:
seguinte: o tamanho da clique mxima de um grafo menor do que ou igual ao nmero de cores utilizadas
em qualquer colorao do grafo. Note que eu disse qualquer colorao. Quanto menos cores a colorao
utilizar, menor ser o limitante para a clique mxima, porm qualquer colorao fornece um limitante .
Como o problema da colorao de vrtices tambm NP-difcil, no podemos garantir que uma colorao tima ser encontrada. Porm, pode-se utilizar uma heurstica gulosa que rpida para encontrar
alguma colorao do grafo que pode ser utilizada como limitante.
Mas como aplicar o problema da colorao ao problema da clique mxima? Considere uma clique
um conjunto de candidatos
estender a clique
|Q K 0 | = |Q| + |K 0 | |Q| + c
2
k,
G[K] somada
contida em Q K .
cardinalidade de
2 c = nmero
3 devolve c;
G[K]
Abaixo est uma das muitas heursticas gulosas para o problema da colorao. Ela necessariamente
deve ser implementada. A implementao de outras heursticas para o problema da colorao e a comparao do algoritmo de ramicao e corte com diferentes heurstica de colorao opcional (e vale nota
extra no trabalho).
A heurstica consiste em colorir os vrtices um por vez, com base em alguma ordem inicial qualquer. As
cores so representadas pelos nmeros inteiros de 1 at o nmero de cores usadas. O vrtice
v1
colorido
com a cor 1 e os demais vrtices so coloridos com a menor cor que no provoque uma colorao invlida.
Caso necessrio, uma nova cor no utilizada at ento usada (quando os vizinhos do vrtice j utilizam
todas as cores usadas previamente).
Veja abaixo o pseudocdigo dessa heurstica:
KV
de um grafo
2
3
4
5
6
7
11
12
13
14
para
15
16
17
se
18
faa
8
9
10
se
G[K]
c 1 at numero_de_cores
se not cor _usada[c] ento
cor[K[i]] c
faa
break
c = numero_de_cores + 1 ento
numero_de_cores = numero_de_cores + 1
cor[K[i]] numero_de_cores
devolve numero_de_cores
G = (V, E)
5 Instncias
As instncias oferecidas ao programa devero estar no seguinte formato: a primeira linha contm dois
nmeros inteiros
mente. As
linhas seguintes contm cada uma um par de nmeros que corresponde aos vrtices de uma
5
1
2
3
1
1
4
6
2
3
4
5
6
6
Essa instncia corresponde ao grafo com 5 vrtices e as 6 seguintes arestas:
{1, 6}
{4, 6}.
http://goo.gl/RNnMFL.
Algumas dessas instncias podem ser resolvidas de forma relativamente rpida e outras so mais difceis.
Observe que sem a implementao de uma limitante para o corte (
levar um tempo de execuo muito alm do prazo de entrega do trabalho (e, na verdade, muito alm da
nossa expectativa de vida). Mesmo com a implementao de um bom limitante, h instncias no muito
grandes, acima de 200 vrtices, para as quais o tempo de execuo do algoritmo de ramicao e corte
pode levar um tempo invivel.
Devido a natureza difcil do problema, recomendvel que o programa conte o nmero de nodos da
rvore de execuo que foram visitados e interrompa a execuo quando um nmero pr-determinado seja
atingido. Esse nmero precisa ser estimado para que o algoritmo execute por um nmero de horas que
voc pretende esperar pela resposta.
6 Avaliao Experimental
A avaliao experimental do trabalho consiste em executar o programa em vrias classes de grafos e
comparar os seguintes valores:
soluo.
tima (cujo valor ser fornecido pelo professor) e, se no, quo prxima da soluo tima a soluo
encontrada se encontra.
O relato dos experimentos, o cdigo fonte e eventuais scripts utilizados na execuo dos experimentos
devem ser parte do relatrio.
7 Relatrio e Apresentao
Cada trabalho deve conter um relatrio em formato PDF com:
1. capa com ttulo e nome do(s) aluno(s)
2. Descrio do algoritmo de ramicao e corte e dos limitantes implementados.
3. Descrio dos experimentos executados.