Uma outra forma de garantir que a restri¸c˜ao de conexidade n˜ao seja violada por nenhum GI[λ(k)], tal que k ∈ VM, ´e abordar o problema de conexidade como um problema de fluxo em redes. Tal abordagem foi proposta por Duarte [16]. Cada cluster k ∈ VM enviar´a uma certa quantidade de fluxo para um v´ertice i ∈ λ(k). O fluxo total enviado dos clusters de VM para VI deve ser igual a |VI|. Cada v´ertice de VI deve consumir uma ´unica unidade de fluxo, sendo que, um v´ertice i ∈ λ(k) s´o pode consumir uma unidade de fluxo originado em um cluster k ∈ VM se uma das seguintes condi¸c˜oes for satisfeita:
(a) o v´ertice i recebe fluxo diretamente do cluster k;
(b) o v´ertice i recebe o fluxo de algum v´ertice j ∈ λ(k) tal que a aresta ij pertence ao conjunto de arestas de GI[λ(k)].
Todo o fluxo gerado em VM deve ser consumido. Para que todas as unidades de fluxo sejam consu- midas, a quantidade m´axima de fluxo que um cluster k ∈ VM pode enviar para λ(k) ´e |λ(k)|. Se um cluster k ∈ VM envia |λ(k)| unidades de fluxo para λ(k), este fluxo ser´a totalmente consumido se e somente se GI[λ(k)] ´e conexo, j´a que o balanceamento do fluxo ´e feito atrav´es das arestas que pos- suem seus dois extremos em λ(k). Claramente P
k∈VM |λ(k)| = |VI|. Conforme dito anteriormente, a quantidade total de unidades de fluxo enviadas de VM para VI ´e igual a |VI|. Como esse fluxo ´e totalmente consumido em VI, respeitando as regras (a) e (b), temos que GI[λ(k)] ´e conexo para todo k ∈ VM. A figura2.8ilustra um exemplo de uma solu¸c˜ao vi´avel que atende `a restri¸c˜ao de conexidade, utilizando a abordagem de fluxo em redes.
Dados e Vari´aveis
Al´em dos dados e vari´aveis definidos na formula¸c˜ao anterior, precisamos de vari´aveis adicionais para tratar a restri¸c˜ao de conexidade utilizando a abordagem de fluxo. Seja yik ∈ {0, 1}, para todo
a b c 1 2 3 4 5 6 7 8 9 10 GM GI a b c 1 2 3 4 5 6 7 8 9 10 3 2 1 5 4 3 1 1 2 1 GM GI
Figura 2.8: A esquerda G` Me GI, respectivamente. As ´areas pontilhadas indicam uma solu¸c˜ao vi´avel (com conexidade) para os grafos GI e GM. Os v´ertices 1, 2 e 3 est˜ao associados ao cluster a, os v´ertices 4, 5, 6, 7 e 8 est˜ao associados
ao cluster b, e os v´ertices 9 e 10 est˜ao associados ao cluster c. `A direita as setas indicam os fluxos enviados entre os v´ertices. A quantidade de unidades de fluxo enviadas de GM para GI ´e |VI| = 10, sendo que o v´ertice 1 recebe 3
unidades do cluster a, o v´ertice 7 recebe 5 unidades do cluster b e o v´ertice 9 recebe 2 unidades do cluster c. As setas em GI indicam quantas unidades de fluxo passam por cada aresta. Apesar de GI n˜ao ser orientado, a passagem do
fluxo tem orienta¸c˜ao, por isso, uma seta de i ∈ VI para j ∈ VI indica que uma certa quantidade de fluxo passou pela
aresta ij ∈ AI, saindo de i e chegando a j. Note que cada v´ertice de VI consome exatamente uma unidade de fluxo e
que as arestas de AI s´o transmitem fluxo entre v´ertices associados a um mesmo cluster.
i ∈ VI e k ∈ VM, tal que:
yik= (
1, se o v´ertice i ∈ VI recebe diretamente o fluxo originado em k ∈ VM 0, caso contr´ario.
Definimos tamb´em as vari´aveis fk
ij ∈ Z+que correspondem a quantas unidades do fluxo originado em k ∈ VM s˜ao enviados de i para j, tal que k ∈ VM e ij ∈ AI. Apesar de GI n˜ao ser orientado, as vari´aveis fijk e fjik s˜ao diferentes, pois a primeira indica quantas unidades de fluxo originadas em k que passam de i para j, j´a a segunda indica quantas unidades de fluxo originadas em k que passam de j para i.
Por ´ultimo, definimos as vari´aveis gik ∈ Z+, para todo i ∈ VI e k ∈ VM, que correspondem a quantas unidades de fluxo o v´ertice i ∈ VI recebe diretamente do cluster k ∈ VM.
Formula¸c˜ao
Utilizaremos a nota¸c˜ao δGI(i) para designar o subconjunto de VI que cont´em todos os v´ertices adjacentes a i em GI. Ou seja, δGI(i) = {j | ij ∈ AI}. Analogamente, δGM(k) corresponde ao conjunto dos v´ertices adjacentes a k em GM. Esta nota¸c˜ao ser´a utilizada ao longo de todo o texto.
Temos a seguinte formula¸c˜ao para o PCCC sem pesos nas arestas:
min z = P i∈VI P k∈VMcik· xik sujeito a (i) P k∈VMxik = 1, para todo i ∈ VI. (ii) P
i∈VIxik ≥ 1, para todo k ∈ VM. (iii) yik ≤ xik, para todo i ∈ VI e k ∈ VM. (iv) P
i∈VIyik≤ 1, para todo k ∈ VM. (v) gik+Pj∈δ
GI(i)(f k
ji− fijk) = xik, para todo k ∈ VM e i ∈ VI. (vi) P
j∈δGI(i)fijk ≤ |VI| · xik, para todo k ∈ VM e i ∈ VI. (vii) P
i∈VI P
k∈VMgik = |VI|.
(viii) gik ≤ |VI| · yik, para todo i ∈ VI e k ∈ VM. (ix) gik ≥ 0, para todo i ∈ VI e k ∈ VM.
(x) fk
ij ≥ 0, para todo k ∈ VM e ij ∈ AI. (xi) xik∈ {0, 1}, para todo i ∈ VI e k ∈ VM. (xii) yik ∈ {0, 1}, para todo i ∈ VI e k ∈ VM.
O objetivo ´e minimizar o custo do mapeamento de VI para VM. Na restri¸c˜ao (i), exigimos que todo v´ertice de VI seja associado a exatamente um cluster. Na restri¸c˜ao (ii), exigimos que para todo cluster k de VM exista pelo menos um v´ertice de VI associado a k (cobertura de clusters). As restri¸c˜oes (iii) a (vii) juntas implicam na exigˆencia de que GI[λ(k)] seja conexo, para todo k ∈ VM (restri¸c˜ao de conexidade).
Na restri¸c˜ao (iii), exigimos que um v´ertice i ∈ VI s´o pode receber fluxo diretamente de um cluster k ∈ VM se i estiver associado a k. Na restri¸c˜ao (iv), exigimos que todo cluster k ∈ VM deve enviar fluxo diretamente para no m´aximo um v´ertice i ∈ VI. Note que a presen¸ca das restri¸c˜oes (ii), (vii) e (viii) implica emP
i∈VIyik ≥ 1. Logo, vale que P
i∈VIyik= 1 em qualquer solu¸c˜ao vi´avel.
Na restri¸c˜ao (v), exigimos que, dados um cluster k ∈ VM e um v´ertice i ∈ VI, caso i esteja associado a k, a soma das unidades do fluxo originado em k que chegam a i deve ter uma unidade a mais que a soma das unidades de fluxo que saem de i. Ou seja, i consome uma unidade do fluxo originado em k de acordo com as regras (a) e (b) descritas no in´ıcio desta se¸c˜ao. Caso i n˜ao esteja associado a k, nenhuma unidade do fluxo originado em k deve passar por uma aresta que tenha i como uma de suas extremidades. Podemos reescrever a restri¸c˜ao (v) da seguinte maneira:
gik+ X j∈δGI(i) fjik − X j∈δGI(i) fijk = xik,
sendo que o termo gik+ P
j∈δGI(i)fjik corresponde ao fluxo total que entra no v´ertice i, e o termo P
j∈δGI(i)fijk corresponde ao fluxo total que sai do v´ertice i. Note que se gik > 0, ent˜aoPj∈δ GI(i)f
k ji = 0, e seP
j∈δGI(i)fjik > 0, ent˜ao gik = 0. Ou seja, o fluxo que entra em um v´ertice ´e enviado ou por alguns de seus vizinhos, ou por uma fonte k ∈ VM (como um ´unico v´ertice recebe fluxo diretamente de uma determinada fonte em VM, se este mesmo v´ertice receber fluxo tamb´em de algum vizinho, este fluxo foi enviado por ele mesmo e, portanto, pode ser cancelado). Nas figuras 2.9e 2.10 mostramos um exemplo de balanceamento de fluxo.
1 2 3 4 5 1 2 3 4 5 5 2 2 1 1 1
Figura 2.9: Suponha que o grafo `a esquerda corresponde a GI[λ(k)] para algum k ∈ VM em uma solu¸c˜ao vi´avel
qualquer. O v´ertice 1 recebe 5 unidades de fluxo diretamente do cluster k, logo g1k = 5 ePj∈δGI(1)f k
j1 = 0. Como
x1k= 1, para a restri¸c˜ao (v) ser satisfeita, ´e necess´ario quePj∈δGI(1)f k
1j = 4. Temos ent˜ao f12k = 2 e f13k = 2.
Na restri¸c˜ao (vi), exigimos que o fluxo originado em um cluster k ∈ VM s´o pode passar por uma aresta ij ∈ AI se i, j ∈ λ(k). Esta restri¸c˜ao garante que se xik = 0 ent˜ao fijk = 0. Caso xik = 1 ent˜ao o valor de fk
1 2 3 4 5 1 2 3 4 5 5 2 2 1 1 1
Figura 2.10: Suponha que o grafo `a esquerda corresponde a GI[λ(k)] para algum k ∈ VM em uma solu¸c˜ao vi´avel
qualquer. O v´ertice 4 recebe 1 unidade de fluxo (originado em k) do v´ertice 2, e mais 1 unidade de fluxo (originado em k) do v´ertice 3. Ou seja, fk
24= f34k = 1. Temos que g4k = 0 ePj∈δGI(4)f k
j4 = 2. Como x4k = 1, para a restri¸c˜ao (v)
ser satisfeita, ´e necess´ario queP
j∈δGI(1)f k
4j= 1. Temos ent˜ao f45k = 1.
ser´a calculado atrav´es da restri¸c˜ao (v). Logo, no lugar de |VI|, no termo |VI| · xik, podemos utilizar qualquer constante maior ou igual a |VI| − 1, que corresponde `a maior quantidade de fluxo que pode passar por uma aresta ij ∈ AI em uma solu¸c˜ao vi´avel.
Na restri¸c˜ao (vii), exigimos que a quantidade total de unidades de fluxo enviadas dos clusters de VM aos v´ertices de VI deve ser igual a |VI|. Na restri¸c˜ao (viii), exigimos que a quantidade de fluxo recebido por um v´ertice i ∈ VI diretamente de um cluster k ∈ VM seja maior que zero somente se i recebe fluxo diretamente de k.
Duarte [16] apresentou resultados computacionais para algumas instˆancias do PCCC sem pesos
nas arestas utilizando a formula¸c˜ao apresentada nesta se¸c˜ao. A maior instˆancia para a qual foi encontrada uma solu¸c˜ao ´otima tinha tamanho |VI| = 95, |AI| = 1434, |VM| = 12 e |AM| = 42.