2.4 Formula¸c˜ ao Linear do PCCC sem pesos nas arestas
2.4.1 Corte-de-conexidade
Considere o problema P , cuja formula¸c˜ao ´e equivalente `a formula¸c˜ao (F1) sem as restri¸c˜oes do tipo (iii). Claramente P ´e uma relaxa¸c˜ao do PCCC sem pesos nas arestas, pois em P n˜ao ´e exigida a restri¸c˜ao de conexidade. Ou seja, toda solu¸c˜ao vi´avel do PCCC sem pesos nas arestas ´e vi´avel de P . Por´em, o contr´ario n˜ao ´e verdadeiro. As solu¸c˜oes que n˜ao atendem `a restri¸c˜ao de conexidade s´o
S
VI\ S j i
Figura 2.6: Considere o exemplo no qual o grafo acima corresponde a GI. Indicamos atrav´es dos c´ırculos pontilhados
um conjunto S, tal que GI[S] ´e desconexo. Note que para que a restri¸c˜ao (iii) seja satisfeita, deve valer que λ(k) 6= S,
para todo k ∈ VM. Para um k ∈ VM qualquer, dois exemplos que n˜ao violam a restri¸c˜ao (iii) seriam: λ(k) = S \ {i} ou
λ(k) = S ∪ {j}.
s˜ao vi´aveis de P . Logo, uma solu¸c˜ao ´otima de P ´e um limitante inferior para o valor de uma solu¸c˜ao do PCCC sem pesos nas arestas. Uma consequˆencia disso ´e que se uma solu¸c˜ao ´otima de P atende `
a restri¸c˜ao de conexidade (GI[λ(k)] ´e conexo para todo k ∈ VM), ent˜ao tal solu¸c˜ao tamb´em ´e ´otima para o PCCC sem pesos nas arestas.
Vimos que a restri¸c˜ao de conexidade pode ser descrita atrav´es da seguinte inequa¸c˜ao: X
i∈S xik−
X
j∈VI\S
xjk≤ |S| − 1, para todo k ∈ VM e S ⊆ VI, tal que GI[S] ´e desconexo.
Qualquer subconjunto n˜ao vazio de VI ´e um poss´ıvel candidato a λ(k), para qualquer k ∈ VM. Este fato pode nos levar a concluir que a quantidade de cortes-de-conexidade necess´arios para obter uma solu¸c˜ao que n˜ao viole a restri¸c˜ao de conexidade n˜ao seja polinomial no tamanho da entrada. Talvez n˜ao seja necess´ario incluir a restri¸c˜ao acima para todo S ⊆ VI e k ∈ VM. Se tivermos sorte, possivelmente apenas um subconjunto n˜ao muito grande dessas inequa¸c˜oes seja necess´ario para obter- se uma solu¸c˜ao ´otima que n˜ao viole a restri¸c˜ao de conexidade.
A id´eia desta abordagem alternativa ´e utilizar inicialmente a formula¸c˜ao de P para obter uma solu¸c˜ao ´otima x∗. Caso a solu¸c˜ao x∗ viole a restri¸c˜ao de conexidade, ent˜ao encontramos novas restri¸c˜oes violadas por x∗ e as juntamos `as restri¸c˜oes de P , gerando um novo problema P1, de modo que x∗n˜ao seja uma solu¸c˜ao vi´avel de P1. Chamaremos estas restri¸c˜oes de cortes-de-conexidade, pois tais restri¸c˜oes servem para “cortar” (ou descartar) as solu¸c˜oes que violam a restri¸c˜ao de conexidade.
Ent˜ao, utilizamos P1 para obter uma nova solu¸c˜ao ´otima x1. Caso x1viole a restri¸c˜ao de conexidade, juntamos algumas (pelo menos uma) inequa¸c˜oes violadas por x1`as restri¸c˜oes de P1, gerando um novo problema P2. E assim sucessivamente, at´e que seja encontrada uma solu¸c˜ao ´otima que n˜ao viole a restri¸c˜ao de conexidade. Vejamos como calcular tais cortes-de-conexidade.
Dada uma solu¸c˜ao x∗, para todo k ∈ V
M, tal que GI[λ(k)] n˜ao seja conexo, temos a seguinte restri¸c˜ao violada por x∗:
X i∈λ(k) xik− X j∈VI\λ(k) xjk≤ |λ(k)| − 1. (4.2)
Vamos fixar um k tal que GI[λ(k)] n˜ao ´e conexo na solu¸c˜ao x∗. Claramente a solu¸c˜ao x∗ viola a restri¸c˜ao (4.2), pois P
i∈λ(k)xik = |λ(k)| ePj∈VI\λ(k)xjk= 0. Note que qualquer outra solu¸c˜ao que contenha um conjunto de v´ertices associados a k diferente do atual (na solu¸c˜ao x∗) n˜ao violar´a a restri¸c˜ao (4.2). Basta observar que qualquer mapeamento M que atenda a uma das condi¸c˜oes abaixo, n˜ao viola a restri¸c˜ao (4.2) para o k fixado.
• M cont´em pelo menos um v´ertice j ∈ VI associado ao cluster k, tal que j /∈ λ(k) na solu¸c˜ao x∗, aumentando assim o valor do termoP
j∈VI\λ(k)xjk em pelo menos uma unidade.
• M cont´em pelo menos uma associa¸c˜ao de algum v´ertice i ∈ VI a um outro cluster l ∈ VM, tal que i ∈ λ(k) na solu¸c˜ao x∗ e l 6= k, diminuindo o valor do termo P
i∈λ(k)xik em pelo menos uma unidade.
Dada uma solu¸c˜ao x∗ de P (possivelmente j´a acrescido de alguns cortes-de-conexidade), precisa- mos verificar se x∗ atende `a restri¸c˜ao de conexidade. Para efetuar esta tarefa, podemos utilizar o algoritmo de busca em largura, que ´e polinomial no tamanho do grafo no qual ser´a feita a busca [14]. Basta executar, para cada GI[λ(k)], tal que k ∈ VM, uma busca em largura partindo de um v´ertice qualquer de GI[λ(k)]. Somente as arestas com os dois extremos em λ(k) podem ser consideradas na busca. Se todos os v´ertices de GI[λ(k)] forem alcan¸cados na busca, ent˜ao GI[λ(k)] ´e conexo. Caso contr´ario, GI[λ(k)] ´e desconexo.
A figura2.7ilustra um exemplo onde GI[λ(l)] ´e conexo e GI[λ(k)] ´e desconexo, para dois clusters distintos k, l ∈ VM. Note que o grafo GI[λ(k)] possui duas componentes, portanto, uma busca em largura partindo de um ´unico v´ertice de GI[λ(k)] jamais alcan¸car´a todos os v´ertices de GI[λ(k)]. J´a o grafo GI[λ(l)] ´e conexo. Portanto, uma busca em largura partindo de um v´ertice qualquer de GI[λ(l)]
k l 1 2 3 4 5 7 8 1 2 3 7 4 5 8
Figura 2.7: A esquerda temos G` I. As ´areas pontilhadas indicam que os v´ertices 1, 2, 3, e 7 est˜ao associados a um mesmo cluster, digamos k. Os v´ertices 4, 5 e 8 est˜ao associados a um cluster l 6= k. Ao centro temos GI[λ(k)] e `a
direita temos GI[λ(l)].
sempre alcan¸car´a todos os v´ertices de GI[λ(l)]. Neste caso o corte-de-conexidade a ser inserido na formula¸c˜ao ´eP
i∈λ(k)xik−Pj∈VI\λ(k)xjk≤ 3.
A seguir, mostramos um pseudo-c´odigo para a resolu¸c˜ao do PCCC sem pesos nas arestas atrav´es da inclus˜ao de cortes-de-conexidade. O algoritmo PCCC-sem-pesos-nas-arestas recebe como parˆametros dois grafos GI e GM e devolve uma solu¸c˜ao ´otima do PCCC sem pesos nas arestas para os grafos GI e GM.
PCCC-sem-pesos-nas-arestas(GI, GM)
1 Seja F o conjunto de restri¸c˜oes da formula¸c˜ao para P 2 devolva trata-conexidade(GI, GM, F)
trata-conexidade(GI, GM, F) 1 x∗ ← resolve-PI(F)
2 se x∗ viola a restri¸c˜ao de conexidade
3 ent˜ao Seja C o conjunto dos cortes-de-conexidade violados por x∗
4 F′← F ∪ C
5 devolva trata-conexidade(GI, GM, F′) 6 sen˜ao devolva x∗
O algoritmo trata-conexidade faz uso de uma subrotina chamada resolve-PI, que ´e encar- regada de encontrar uma solu¸c˜ao inteira que otimiza a fun¸c˜ao P
i∈VI P
conta as restri¸c˜oes contidas em F. Inicialmente, a formula¸c˜ao F cont´em apenas as restri¸c˜oes do problema P , que ´e uma relaxa¸c˜ao do PCCC sem pesos nas arestas. A cada chamada recursiva feita a trata-conexidade, caso a solu¸c˜ao x∗ encontrada por resolve-PI n˜ao atenda `a restri¸c˜ao de cone- xidade, s˜ao gerados novos cortes-de-conexidade violados por x∗. Estes cortes s˜ao “acumulados” at´e que em alguma chamada a trata-conexidade a solu¸c˜ao x∗ encontrada por resolve-PI n˜ao viole a restri¸c˜ao de conexidade.
Observe que, quando GI ´e um grafo completo, n˜ao ´e necess´aria a inclus˜ao de nenhum corte-de- conexidade, pois qualquer subgrafo GI[S], tal que S ⊆ VI, ´e conexo. Neste caso, podemos utilizar um algoritmo guloso, que associa cada i ∈ VM a um cluster k ∈ VM, tal que o custo de cik seja m´ınimo. Qualquer solu¸c˜ao obtida desta forma ´e ´otima porque cada v´ertice ´e associado de maneira ´otima, e qualquer subconjunto de associa¸c˜oes n˜ao influi no restante. Tal procedimento consumiria tempo O(|VI| · |VM|). De forma geral, quanto mais denso for o grafo GI, menor tende a ser a quantidade de cortes-de-conexidade necess´arios para obter-se uma solu¸c˜ao ´otima para o PCCC sem pesos nas
arestas.
A abordagem utilizada pelo algoritmo trata-conexidade ´e chamada de m´etodo de planos-de-
corte. Dada uma classe de inequa¸c˜oes I, em cada itera¸c˜ao do m´etodo de planos-de-corte ´e necess´ario decidir se uma dada solu¸c˜ao viola ou n˜ao alguma inequa¸c˜ao de I. Em caso afirmativo, deve-se exibir uma inequa¸c˜ao de I violada por tal solu¸c˜ao. Este problema ´e conhecido como o problema da
separa¸c˜ao. O problema de encontrar uma solu¸c˜ao ´otima que n˜ao viole nenhuma inequa¸c˜ao de I ´e chamado de problema de otimiza¸c˜ao.
Gr¨otschel, Lov´asz e Schrijver [25] provaram que os problemas de otimiza¸c˜ao e separa¸c˜ao sobre um mesmo poliedro s˜ao computacionalmente equivalentes. Este resultado, ao contr´ario do que aparenta, n˜ao nos tr´as nenhuma informa¸c˜ao sobre o comportamento do algoritmo trata-conexidade. Os cortes-de-conexidade que mostramos servem apenas para eliminar solu¸c˜oes inteiras que violam a restri¸c˜ao de conexidade. Repare que na linha 1 do algoritmo temos uma chamada `a subrotina resolve-PI, que encontra uma solu¸c˜ao inteira para o problema composto pelas restri¸c˜oes de F. Em geral, resolver um problema de programa¸c˜ao inteira ´e N P-dif´ıcil. O ideal seria se soub´essemos resolver eficientemente o problema da separa¸c˜ao para uma dada solu¸c˜ao qualquer (fracion´aria ou inteira). Neste caso, atrav´es da equivalˆencia entre otimiza¸c˜ao e separa¸c˜ao, poder´ıamos afirmar que o PCCC sem pesos nas arestas est´a em P.
de restri¸c˜oes polinomial nos tamanhos de GI e GM. Esta outra formula¸c˜ao utiliza conceitos de fluxo em redes.