• Nenhum resultado encontrado

2.5 Heur´ ıstica WBRA

2.5.2 Renumera¸ c˜ ao

Nesta etapa, renumeram-se os v´ertices de cada estrutura de n´ıvel armazenada na fila de prioridades do passo anterior. Primeiramente, remove-se a estrutura de n´ıvel K (ν,···) da fila de prioridades. Os v´ertices de cada n´ıvel da estrutura de n´ıvel s˜ao organizados em ordem crescente de grau. A renumera¸c˜ao ´e realizada n´ıvel a n´ıvel de K (ν,···). Nessa renumera¸c˜ao, minimizam-se as larguras de bandas das submatrizes geradas pela numera¸c˜ao dos v´ertices de cada n´ıvel da estrutura de n´ıvel.

Como a renumera¸c˜ao dos v´ertices de K (ν,···) ´e realizada n´ıvel a n´ıvel, considere que Kh(ν, · · · ), com h = 0, 1, · · · , `(ν), ´e o n´ıvel de

K (ν,···) corrente na renumera¸c˜ao dos v´ertices. Tamb´em, considere que os v´ertices dos n´ıveis K0(ν, · · · ), K1(ν, · · · ), · · · , Kh−1(ν, · · · ) foram renumerados.

submatriz Mh× Mh, s´o ser´a influenciada pela largura de banda da submatriz

Mh× Mh−1.

Esposito et al. (1998) interpretaram o problema da redu¸c˜ao de largura de banda de matrizes como um problema de atribui¸c˜ao linear com gargalo. Seja ti j o tempo para a m´aquina j realizar a tarefa i com

i, j = 1, 2 · · · , n, em que n ´e o n´umero de m´aquinas e tarefas. Considere que todas as m´aquinas s˜ao executadas paralelamente. Com isso, o problema de atribui¸c˜ao linear com gargalo ´e min(maxi, j(ti jxi j)), em que xi j ´e o coeficiente

da matriz de permuta¸c˜oes P. Considere as seguintes restri¸c˜oes: ∑ni=1xi j =

1, para todo j = 1, · · · , n; ∑nj=1xi j= 1, para todo i = 1, · · · , n e xi j∈ {0, 1}, para

todo i, j = 1, · · · , n (BURKARD; CELA, 1999). Considerando-se a estrutura de n´ıvelK (ν,···) e o coeficiente ai j da matriz A, o problema da minimiza¸c˜ao

da largura de banda pode ser aproximado por min (o), sujeito a o ≥ fikxik;

∑|Ki=1h(ν,··· )|xik= 1, k = 1, · · · , |Kh(ν, · · · )|; ∑ |Kh(ν,··· )|

k=1 xik= 1, i = 1, · · · , |Kh(ν, · · · )|;

xik∈ {0, 1}, em que fik= max{mik, gik}, para todo i, k = 1, · · · , |Kh(ν, · · · )| com

mik= (|Kh−1(ν, · · · )| − min{l ∈ Kh(ν, · · · ) | akl = 1}) + i e gik= |Kh(ν, · · · )| +

∑l(akl) − i, l ∈ Kh+1(ν, · · · ).

Com os coeficientes fik, pode-se obter boas renumera¸c˜oes para os

v´ertices do n´ıvel Kh(ν, · · · ). Para isso, consideram-se as renumera¸c˜oes dos

v´ertices dos n´ıveis Kh−1(ν, · · · ) e Kh+1(ν, · · · ).

A seguir, ´e apresentado o pseudoc´odigo da sub-rotina Renumera¸c˜ao na Figura 4. A sub-rotina Renumera¸c˜ao recebe a estrutura de n´ıvel K (ν,···) e a numera¸c˜ao S dos v´ertices. Uma solu¸c˜ao (ou renumera¸c˜ao) S ´e o conjunto das renumera¸c˜oes dos v´ertices, ou seja, S = {s(1), s(2), · · · , s(|V |)}, em que s(i) ´e a numera¸c˜ao do v´ertice i da solu¸c˜ao S. Considerando-se uma estrutura de n´ıvel K (ν,···), a renumera¸c˜ao SKh ´e o conjunto das

renumera¸c˜oes dos v´ertices do n´ıvel Kh(ν, · · · ). A matriz AS ´e obtida pela

renumera¸c˜ao S do grafo G = (V, E).

Na estrutura de repeti¸c˜ao das linhas 2 a 5, calculam-se, iterativamente, os coeficientes fik, que s˜ao representados pela matriz F. Esse

passo ´e realizado, na linha 3, pela sub-rotina CaluloGargalo, que recebe a numera¸c˜ao S.

Na linha 4, para cada n´ıvel da estrutura de n´ıvel K (ν,···), altera- se a numera¸c˜ao correspondente ao n´ıvel corrente. Essa numera¸c˜ao ´e representada por SKh e ´e realizada pela sub-rotina Atribui¸c˜aoGargalo. Essa sub-rotina recebe a matriz F, o n´ıvel Kh(ν, · · · ) corrente da itera¸c˜ao e a

numera¸c˜ao dos v´ertices SKh correspondente ao n´ıvel Kh(ν, · · · ). Com a renumera¸c˜ao de cada SKh, o algoritmo da Figura 4, na linha 6, retorna S renumerado.

Algoritmo: Numera¸c˜ao. in´ıcio

1

para cada ( n´ıvel Kh(ν, · · · ) deK (ν,···) ) fa¸ca 2

// a matriz F ´e calculada iterativamente F← CalculaGargalo(SKh);

3

// com a numera¸c~ao de cada n´ıvel SKh // tem-se ao final das itera¸c~oes // a numera¸c~ao S SKh← AtribuicaoGargalo(F, Kh(ν, · · · ), SKh); 4 fim-para-cada; 5 retorna S; 6 fim. 7

Figura 4 Pseudo-c´odigo da sub-rotina Renumera¸c˜ao da heur´ıstica WBRA.

A sub-rotina Atribui¸c˜aoGargalo, apresentada na Figura 5, recebe a matriz F, o n´ıvel Kh(ν, · · · ) de K (ν,···) e a renumera¸c˜ao dos v´ertices de

gargalo e armazena-se esse valor limite na vari´avel limite. Algoritmo: Atribui¸c˜aoGargalo.

in´ıcio

1

// menor valor do gargalo com i, k = 1, · · · , |Kh(ν, · · · )|

limite← max(maxi(mink( fik)), maxk(mini( fik))); 2

SKh ← MaxCardMatching(Kh(ν, · · · ), F, limite, SKh);

3

se ( |SKh| = |Kh(ν, · · · )| ) ent˜ao

4

// retorna a numera¸c~ao SKh obtida pela // sub-rotina MaxCardMatching retorna SKh; 5 fim-se; 6 ini← limite; 7 f im← limite + |Kh(ν, · · · )|; 8

enquanto ( ini 6= ( f im − 1) ) fa¸ca

9 meio←jini+ f im2 k; 10 SKh← MaxCardMatching(Kh(ν, · · · ), F, meio, SKh); 11 se ( |SKh| = |Kh(ν, · · · )| ) ent˜ao f im ← meio; 12

sen˜ao ini ← meio;

13

fim-enquanto;

14

// retorna a numera¸c~ao obtida pela ´ultima chamada da // sub-rotina MaxCardMatching retorna SKh; 15 fim. 16

Figura 5 Pseudo-c´odigo da sub-rotina Atribui¸c˜aoGargalo da heur´ıstica WBRA.

Seja E0 um subconjunto de E do grafo G = (V, E). E0 ´e um conjunto de arestas independentes se as arestas de E0s˜ao incidentes a todos os v´ertices de V sem possuir v´ertices em comum. Seja B = (U,W, Q) um grafo bipartido, em que U e W s˜ao conjuntos de v´ertices com |U | = |W | e Q ´e um conjunto de arestas. Os v´ertices de U s˜ao considerados de sa´ıda e os v´ertices de W s˜ao os v´ertices de chegada. Os v´ertices de chegada s˜ao os v´ertices pertencentes ao n´ıvel Kh(ν, · · · ) e os v´ertices de sa´ıda s˜ao os v´ertices que representam as

numera¸c˜oes que devem ser associadas a cada v´ertice pertencente ao n´ıvel Kh(ν, · · · ).

Na linha 3 da Figura 5, utiliza-se a sub-rotina MaxCardMatching. Essa sub-rotina encontra um conjunto m´aximo de arestas independentes de B = (U,W, Q). Para isso, Esposito et al. (1998) utilizaram o algoritmo de Steiner e Yeomans (1996). Steiner e Yeomans (1996) propuseram um algoritmo em tempo linear para encontrar um conjunto m´aximo de arestas independentes em um grafo bipartido.

A sub-rotina MaxCardMatching recebe o n´ıvel Kh(ν, · · · ), a matriz

F, um valor limite para se encontrar o conjunto de arestas independentes e a numera¸c˜ao SKh referente ao n´ıvel Kh(ν, · · · ). Seja u ∈ U e w ∈ W . H´a uma aresta (u, w) ∈ Q se e, somente se, fuw for menor ou igual ao

parˆametro limite passado para a sub-rotina MaxCardMatching. Na linha 3 da Figura 5, esse valor limite ´e passado por meio da vari´avel limite. A sub-rotina MaxCardMatching retorna nSKh que ´e a numera¸c˜ao dos v´ertices do n´ıvel Kh(ν, · · · ) de acordo com o conjunto de arestas independentes de B

encontrado pela sub-rotina.

Seja SKh a renumera¸c˜ao dos v´ertices de Kh(ν, · · · ) realizada pela sub- rotina MaxCardMatching, na linha 3. Se |SKh| ´e igual a |Kh(ν, · · · )|, ent˜ao, significa que todos os v´ertices de Kh(ν, · · · ) foram renumerados. Com isso,

retorna-se a renumera¸c˜ao dos v´ertices obtida pelo MaxCardMatching. Caso contr´ario, inicializam-se as vari´aveis ini e f im com os valores de limite e de (limite + |Kh(ν, · · · )|), respectivamente. Essas vari´aveis s˜ao inicializadas com

esses valores para se limitar o intervalo de busca do valor do gargalo. Na estrutura de repeti¸c˜ao das linhas 9 a 14, procura-se a melhor atribui¸c˜ao da numera¸c˜ao dos v´ertices do n´ıvel Kh(ν, · · · ). O algoritmo retorna a

renumera¸c˜ao obtida pela ´ultima chamada da sub-rotina MaxCardMatching na ´ultima itera¸c˜ao da estrutura de repeti¸c˜ao das linhas 9 a 14.