• Nenhum resultado encontrado

3 Algoritmos exatos aplicados ao problema da AGMO

3.2 Algoritmos para encontrar todo o conjunto Pareto Ótimo

3.2.2 Algoritmo de Pugliese, Guerriero e Santos (2015)

Pugliese, Guerriero e Santos (2015) conceberam uma formulação matemática para o problema clássico da árvore geradora mínima (mono-objetivo). A estrutura da árvore geradora é modelada segundo um esquema de estados e transações, definindo o que os autores chamaram de espaço-estado. Várias proposições foram mostradas e provadas, a fim de se definir um processo para determinar as árvores ótimas. Em seguida, tais proposi- ções foram generalizadas para o caso multiobjetivo, concebendo assim um procedimento, detalhado no Algoritmo 2, baseado em Programação Dinâmica (DP), para encontrar o conjunto ótimo de Pareto.

Dado um grafo G(V, E), com |V | = n, seja Xq(h) = {ir : r = 1, ..., q, q ≤ n} um

subconjunto de V com q vértices. O índice h significa que podem haver outros subconjuntos com q vértices. Define-se uma subárvore sTq(h) como sendo um grafo conexo formado

com os vértices de Xq(h) e com as arestas do conjunto Eq(h), onde |Eq(h)| = |Xq(h)| − 1.

Cada subárvore sTq(h) é associada a um estado Sq(h) = (Xq(h), Eq(h)). Diz-se que existe uma

transição do estado Sq(h) para o estado Sq(k) apenas se for possível construir uma árvore

sTq(k), a partir de sTq(h), somente pela adição de uma única aresta em Eq(h). Os autores

mostram que, se γ = (Sq(h), Sq(k)) é uma transição entre dois estados quaisquer, então

Algoritmo 2: Algoritmo DP de Pugliese, Guerriero e Santos (2015) Entrada: Grafo G(V,E)

Saída: Conjunto Pareto ótimo

1 X11 = {1}; S11 = ({1}, ∅); L1 = {S11}; 2 para q = 1, ..., n − 1 faça

3 para todo Sq(h)∈ Lq faça 4 para todo i ∈ Xq(h) faça

5 para todo (i, j) ∈ E : i ∈ Xq(h) AN D j 6∈ Xq(h) faça

6 Xq+1 = Xq(h)∪ {j};

7 Sq+1 = (Xq+1, Eqh∪ {(i, j)});

8 se sTq+1 não é dominada por qualquer equivalente sTq+1(k) ∈ Lq+1

então

9 Adicione sTq+1 em Lq+1;

10 Remova de Lq+1 todas as subárvores equivalentes sTq+1(k) que são

dominadas por sTq+1; 11 fim 12 fim 13 fim 14 fim 15 fim

16 Ln contém todo o conjunto Pareto ótimo ; 17 Retorne Ln

Como cada transição adiciona uma aresta à subárvore associada, então é possível definir uma sequência de transições ditas viáveis yφ = {(S1(h), S

(k) 2 ), . . . , (S (h) n−1, S (k) n )} que

corresponderá a uma árvore de G(V, E). Assim, é razoável assumir que cada transição (Sq(h), Sq+1(k)) pode ser associada a um peso w : Γ → <, onde Γ é o conjunto de todas as

transições. Note que w(Sq(h), Sq+1(k)) é igual ao peso associado à aresta correspondente à

transição (Sq(h), Sq+1(k) ). Assim, o objetivo do problema da AGM é encontrar a sequência de

transições y∗φ tal que o seguinte somatório é mínimo: f (y∗φ) =

n−1

P

q=1

w(Sq(h), Sq+1(k))

Partindo de tal definição, pode-se dizer que uma sequência y∗φ é ótima se, e somente se, f (y∗φ) ≤ f (yφ), para qualquer outra sequência yφ(PUGLIESE; GUERRIERO; SANTOS, 2015). Além disso, ainda segundo os autores, se yq(k) é uma subsequência que define uma subár-

f (sTq(k)) = P (i,j)∈Eq(k)

wij .

Embora tais conceitos sejam feitos para árvores mono-objetivo, eles são facilmente generalizados para o caso multiobjetivo, pois é suficiente trabalhar com f como sendo uma função que associa a cada sequência de estados (ou a uma subárvore) um vetor objetivo; e as sequências ótimas obedeceriam à dominância de Pareto. Tal generalização é aplicada ao Algoritmo 2.

A seguir, apresenta-se as definições, teorema e corolário concebidos por Pugliese, Guer- riero e Santos (2015) e que se firmam como pilares do Algoritmo 2.

Definição 8 (Dominância) Sejam Sq(h) e Sq(h) dois estados quaisquer. Diz-se que Sq(h)

domina Sq(h) se f (sTq(h)) < f (sTq(h)).

Definição 9 (Equivalência) Duas subárvores sTq(k) e sTq(k) e seus respectivos estados

associados Sq(k)e Sq(k)são ditos equivalentes se, e somente se, os correspondentes conjuntos

Xq(k) e Xq(k) compartilham os mesmos vértices.

Teorema 1 (Condição ótima) Sejam Sq(h) e Sq(h) dois estados equivalentes. Se Sq(h) é

dominada por Sq(h), então todas as subárvores sTq+1(k) construídas a partir de sTq(h) são

dominadas por pelo menos uma subárvore sTq+1(k) construída a partir de sTq(h).

Prova: (PUGLIESE; GUERRIERO; SANTOS, 2015)

Corolário 1 A sequência ótima y∗ é composta por subsequências ótimas.

Prova: (PUGLIESE; GUERRIERO; SANTOS, 2015)

À luz do teorema e do corolário supramencionados, o Algoritmo 2 trabalha com sub- sequências ótimas a fim de chegar ao conjunto das sequências ótimas. Ele descarta, assim, as subsequências dominadas, visto que, segundo o Teorema 1, elas levarão a árvores do- minadas. Cada estado Sq(h) não dominado é guardado num conjunto Lq, com q = 1, . . . , n,

que os autores chamam de níveis. O nível inicial L1 possui um único estado S11 = ({i1}, ∅),

onde i1 é um vértice inicial qualquer.

Em um nível Lq, varre-se cada estado S (h)

q . Analogamente à ideia de Corley (1985),

aqui também seleciona-se todas as arestas que possuem uma extremidade em Sq(h) e outra

dominância sobre as árvores parciais obtidas em cada nível (enquanto que o primeiro, originalmente, verifica somente a dominância entre as arestas do corte e necessita de uma verificação de dominância no Passo 6). Ao final, o nível Ln possui todas os estados que

induzem árvores do conjunto Pareto ótimo.

Finalmente, conforme provaram Pugliese, Guerriero e Santos (2015), a complexidade do Algoritmo 2 é da ordem de O(

n−1

Q

q=1

[q × (n − q)]).

3.2.3

Algoritmo de Ramos et al. (1998)

Propondo-se a encontrar todo o conjunto Pareto ótimo do problema da AG-Bi, Ra- mos et al. (1998) conceberam uma abordagem exata dividida em duas fases. A primeira, baseada no método geométrico usado por Hamacher e Ruhe (1994), encontra todas as árvores cujos pares de custos eficientes se acham nas extremidades da envoltória convexa (soluções suportadas); a segunda, por sua vez, utiliza um procedimento construtivo ba- seado na metodologia Branch-and-Bound para obter o conjunto de árvores cujos pares de custos se encontram no interior de cada triângulo formado por dois pontos extremos consecutivos.

Antes, porém, de detalhar as duas fases de Ramos et al. (1998), vale a pena analisar dois procedimentos auxiliares que os autores desenvolveram com o propósito de encontrar todas as soluções do espaço decisão que, eventualmente, possam representar o mesmo ponto do espaço objetivo. Ou seja, dado um ponto z = f (T ) no espaço objetivo não dominado, o procedimento de Ramos et al. (1998) não encontra somente uma árvore T , mas todas as árvores T tal que z = f (T ). Para tanto, os algoritmos AllSpanningTree e AllMST foram desenvolvidos.

O Algoritmo 3 descreve o procedimento recursivo AllSpanningTree, que constrói to- das as árvores geradoras de um grafo usando backtracking. O procedimento recebe dois parâmetros, o primeiro é o índice do nó em análise e o segundo é uma árvore geradora em construção. A primeira chamada do algoritmo é AllSpanningTree (1, ∅), considerando que os índices dos vértices começam em 1.

Considere G(V, E) um grafo conexo e não direcionado, com |V | = n. Para cada chamada recursiva, o Algoritmo 3 analisa cada aresta do conjunto Ai, que possui as arestas

incidentes no vértice i. Para cada aresta e ∈ Ai que não forma um ciclo na árvore parcial

T , verifica-se se a adição de e em T gera uma árvore total (isto é, com n − 1 arestas). Se sim, uma nova árvore foi construída; se não, então precisa-se analisar as arestas incidentes

no vértice de índice i + 1, criando-se, desta forma, mais um nó na árvore de busca do backtracking. Como a quantidade de árvores encontradas é da ordem de nn−2 (CAYLEY, 1987 apud RAMOS et al., 1998), conforme cresce o tamanho do grafo, tal algoritmo pode despender um tempo excessivo de processamento.

Algoritmo 3: Procedimento AllSpanningTree de Ramos et al. (1998)

1 AllSpanningTree(i, T )

2 Mi = Ai;

3 enquanto Mi 6= ∅ faça

4 Seja e ∈ Mi;

5 Mi = Mi− {e} ;

6 se T ∪ {e} é acíclico então

7 se i = n − 1 então

8 T ∪ {e} pertence ao conjunto das árvores geradoras de G ;

9 senão

10 AllSpanningTree(i + 1, T ∪ {e}) ;

11 fim 12 fim 13 fim

O procedimento AllMST, descrito no Algoritmo 4, também é recursivo. Seu resultado é o conjunto de todas as árvores geradoras que correspondem ao custo mínimo mono- objetivo. Baseado no método de Kruskal (1956), o procedimento inicia examinando as arestas, uma a uma, em ordem crescente de peso. Seja T a árvore parcial corrente. São consideradas apenas arestas e cuja adição isolada em T não forma ciclo. Caso não exista nenhuma outra com o mesmo custo de e, então o loop da linha 5 a 15 executará apenas uma iteração. Neste caso, em seguida, verifica-se se adição de e em T culmina numa árvore final (com n − 1 arestas) ou numa parcial (chamando recursivamente o procedimento AllMST para a árvore T ∪ {e}). Porém, se existem outras arestas com o mesmo peso de e, o loop as agrupa no conjunto LocalEdgeSet. A condição da linha 8 verifica se a adição simultânea de LocalEdgeSet à T não forma ciclo, significando dizer que as arestas de LocalEdgeSet comporão a mesma árvore mínima. Porém, caso forme ciclo, significa que tais arestas não formarão a mesma árvore, podendo ser permutadas a fim de construir diferentes árvores mínimas. Assim, a linha 19 se encarrega de encontrar todas estas árvores, executando o Algoritmo 3. Para cada árvore T0encontrada, verifica-se se T ∪T0corresponde a uma árvore

parcial (chamando recursivamente AllMST ) ou total. A chamada inicial é AllMST(∅, 0, 0).

Algoritmo 4: Procedimento AllMST de Ramos et al. (1998)

1 AllMST(T, index, NEdges)

2 LocalEdgeSet = ∅;

3 StageW eight = c(uindex+1); 4 M oreT hanOne = f alse;

5 repita

6 index = index + 1;

7 se T ∪ {uindex} é acíclico então

8 se uindex une componentes não-conectadas de T ∪ LocalEdgeSet

então

9 N Edges = N Edges + 1;

10 senão

11 M oreT hanOne = true;

12 fim

13 LocalEdgeSet = LocalEdgeSet ∪ {uindex}

14 fim

15 até c(uindex+1) > StageW eight;

16 se M oreT hanOne então

17 Considere o grafo parcial gerado por T ∪ LocalEdgeSet, X; 18 Considere a condensação de X por T , XT ;

19 Obtenha todas as árvores geradoras de XT, AST (XT) ; 20 para todo T0 ∈ AST (XT) faça

21 se N Edges = n − 1 então

22 T ∪ T0 é uma árvore geradora mínima de G;

23 senão

24 AllMST(T ∪ T0, index, NEdges);

25 fim 26 fim

27 senão

28 se N Edges = n − 1 então

29 T ∪ LocalEdgeSet é uma árvore geradora mínima de G;

30 senão

31 AllMST(T ∪ LocalEdgeSet, index, NEdges);

32 fim 33 fim

Percebe-se que, no caso particular em que todos os pesos são diferentes, o algoritmo AllMST funciona de modo idêntico ao do Kruskal (1956). No pior caso, em que todas as arestas de um grafo completo possuem pesos iguais, AllMST se comporta como o algoritmo AllSpanningTree com complexidade da ordem de nn−2 (RAMOS et al., 1998).

De posse destes dois procedimentos auxiliares, Ramos et al. (1998) apresentaram os algoritmos EfficientBiobjectiveSTinEB e EfficientBiobjectiveSTinENB designados, res- pectivamente, à primeira e à segunda fase. Considere, para a descrição a seguir, um grafo G(V, E) conexo e não direcionado, que toda aresta e ∈ E é ponderada com pares de custos, f (e) e g(e), na devida ordem, primeiro e segundo objetivo.

A primeira fase, detalhada no Algoritmo 5, começa encontrando as árvores geradoras que minimizam o primeiro e o segundo objetivo separadamente. Tendo as arestas dispostas numa ordem lexicográfica direta, é possível aplicar o procedimento AllMST a fim de encontrar todas as árvores que minimizam o primeiro objetivo. Destas, aquela cujo par de custos p1 = (x1, y1) se encontra na primeira posição de uma ordem lexicográfica é a

solução não dominada que minimiza o primeiro objetivo. De maneira análoga, tendo todas as arestas dispostas em ordem lexicográfica inversa, AllMST encontra todas as árvores que minimizam o segundo critério. Destas, aquela cujo par de custos p2 = (x2, y2) se

encontra na primeira posição de uma ordem lexicográfica inversa é, pois, a solução não dominada que minimiza o segundo critério.

Uma vez encontrados os pontos p1 = (x1, y1) e p2 = (x2, y2), o Algoritmo 5 os fornece

como argumento ao procedimento recursivo UniobjectiveSearch. Este último, por sua vez, trabalha reordenando em ordem crescente todas as arestas e ∈ E consoante a expressão f (e)(y1 − y2) + g(e)(x2 − x1). Perceba que tal expressão é consequência direta do lema

provado por Hamacher e Ruhe (1994) e explicado na Seção 3.1.1 deste texto. Uma vez ordenadas as arestas, é possível encontrar, com o auxílio de AllMST, todas as árvores geradoras mínimas para a nova ponderação mono-objetivo. O conjunto de árvores ge- radoras resultantes é convertido numa sequência lexicográfica, q1, q2, ..., qn. Se p1 6= q1, o

procedimento UniobjectiveSearch é invocado, passando p1 e q1 como argumento. O mesmo

se aplica, de forma análoga, para o caso em que qn 6= p2. O algoritmo para quando não

for mais possível encontrar árvores não dominadas cujos pontos sejam diferentes de p1 e

p2. Com isso, o algoritmo é capaz de encontrar todas as soluções eficientes da envoltória

Algoritmo 5: Algoritmo EfficientBiobjectiveSTinEB e Procedimento Uniobjecti- veSearch de Ramos et al. (1998)

Entrada: Grafo G(V,E)

Saída: Conjunto de soluções suportadas

1 Ordene as arestas E na ordem lexicográfica direta;

2 AllMST(∅, 0, 0), resultando em p1 = (x1, y1), no topo do ranking dos pontos; e

armazene a árvore encontrada;

3 Ordene as arestas E na ordem lexicográfica inversa;

4 AllMST(∅, 0, 0), resultando em p2 = (x2, y2), no topo do ranking dos pontos; e

armazene a árvore encontrada;

5 se p1 6= p2 então

6 U niobjectiveSearch(p1, p2); 7 fim

8 Procedimento UniobjectiveSearch(p1, p2) 9 Sejam p1 = (x1, y1) e p2 = (x2, y2) ;

10 Ordene as arestas em ordem crescente de custo de acordo com com a equação:

f (e)(y1− y2) + g(e)(x2− x1); 11 para todo aresta e faça

12 AllMST(∅, 0, 0);

13 Armazene as árvores encontradas, ordenando seus pares de custos

lexicograficamente q1, q1, ..., qn; 14 se p1 6= q1 então 15 UniobjectiveSearch(p1, q1); 16 fim 17 se qn6= p2 então 18 UniobjectiveSearch(qn, p2) 19 fim 20 fim

Segundo Ramos et al. (1998), os pontos em EB dividem o espaço biobjetivo em micro-regiões, como estas da região sombreada da Figura 2, onde os pontos não-extremos podem estar localizados. Logo, é razoável delimitar uma região dentro da qual as soluções preferíveis da segunda etapa não podem estar localizadas. Tal região chama-se Zona de Exclusão, e é representada pela região branca do gráfico da Figura 2. De fato, tomando-se qualquer ponto dentro da Zona de Exclusão, perceber-se-á facilmente que o mesmo será dominado por algum ponto extremo em EB.

Figura 2: Zona de exclusão e região das soluções não-suportadas

Fonte: adaptado de Ramos et al. (1998)

À luz da Figura 2, Ramos et al. (1998) formularam a segunda etapa do seu método, cujos detalhes são dados no Algoritmo 6. As soluções não-suportadas são buscadas por um procedimento Branch-and-Bound, cujo Bound é, informalmente, resumido pela afirmação: “qualquer solução parcial que caia na Zona de Exclusão, faz o algoritmo parar o Branch” (RAMOS et al., 1998). Ou seja, quando é encontrada uma solução parcial cujo limite inferior do seu custo final cai na Zona de Exclusão, então poda-se o galho da árvore de busca correspondente.

As linhas 1 e 2 do Algoritmo 6 definem os limites inferiores de f e g a partir dos seguintes parâmetros:

fk = mine∈Akf (e) g

k= min

e∈Akg(e)

para k = 1, ..., |V | − 1, sendo Ak o conjunto de arestas incidentes no vértice k.

A ideia é fazer uma estimativa do melhor custo, para cada objetivo, que a árvore parcial poderia ter ao final do processo. Por isso, para cada vértice ainda não inserido na árvore parcial, a linha 1 do Algoritmo 6 toma a aresta incidente mais barata para somar e obter o limite inferior do primeiro critério (fBound ). O valor de gBound, limite inferior para o segundo critério, é computado de modo análogo. Como T = ∅ é a solução parcial inicial, e como o primeiro vértice a ser inserido em T é o vértice de id = 1, então é razoável que os somatórios das linhas 1 e 2 sejam feitos para varrer os vértices de 2 à |V | − 1. De modo geral, o procedimento recursivo EBSTBB interpreta as variáveis fBoundValue e

gBoundValue como sendo o mínimo de custo possível que pode ser adicionado a uma solução parcial.

Algoritmo 6: Algoritmo EfficientBiobjectiveSTinENB e Procedimento EBSTBB de Ramos et al. (1998)

Entrada: Grafo G(V,E)

Saída: Conjunto de soluções não-suportadas

1 Seja f Bound = n−1 P k=2 fk; 2 Seja gBound = n−1 P k=2 gk;

3 EBSTBB(∅, f Bound, gBound, 1);

4 Procedimento EBSTBB(T, fBoundValue, gBoundValue, step) 5 Alocal = Astep;

6 enquanto Alocal 6= ∅ faça 7 Seja e ∈ Alocal;

8 Alocal = Alocal− {e};

9 se (f (T ) + f (e) + f BoundV alue, g(T ) + g(e) + gBoundV alue) 6∈

zona de excluso então

10 se step = n − 1 então

11 StoreSorting(T ∪ {e});

12 senão

13 EBSTBB(T ∪ {e},f BoundV alue − f

step+1

, gBoundV alue − gstep+1, step + 1);

14 fim 15 fim 16 fim

A cada etapa do processo recursivo, escolhe-se um vértice e varre-se cada aresta que nele incide. A variável step representa o id do vértice corrente e Astep o conjunto de arestas

incidentes. Para cada aresta e ∈ Astep, estipula-se o limite inferior do primeiro critério

(respectivamente, segundo critério) de uma possível solução final formada pela árvore parcial corrente mais a aresta corrente e mais o valor de fBoundValue (respectivamente, gBoundValue). Assim, caso o ponto bidimensional do espaço objetivo esteja na Zona de Exclusão, então garante-se que não vale a pena continuar a explorar tal solução parcial. Caso não esteja na Zona de Exclusão, e caso T ∪ {e} não seja uma árvore final com |V | − 1 arestas, continua-se a busca, chamando EBSTBB recursivamente com T ∪ {e}, step + 1, além de subtrair de fBoundValue e gBoundValue o custo de fstep+1 e gstep+1,

respectivamente.

No entanto, o algoritmo proposto por Ramos et al. (1998) possui alta complexidade para resolver o problema abordado, limitando o tamanho do grafo em virtude do tempo despendido para execução (DRUMOND, 2012). Face a esta característica, objetivando ga- rantir um desempenho melhor, embora a maioria dos algoritmos supracitados sejam pen- sados recursivamente, o presente trabalho os implementou de modo iterativo, com a ajuda de uma pilha auxiliar.

3.2.4

Algoritmo de Steiner e Radzik (2003)

Dividindo o procedimento em duas fases, cuja primeira encontra as soluções supor- tadas e a segunda encontra as não-suportadas, assim como Ramos et al. (1998), Steiner e Radzik (2003) propuseram uma abordagem que se diferencia por duas características principais: para cada ponto do espaço biobjetivo, apenas uma árvore do espaço decisão é encontrada, mesmo que existam outras que possuam o mesmo custo (abrindo mão de procedimentos como AllSpanningTree e AllMST ); a segunda fase obtém as soluções não- suportadas através de um algoritmo k-best.

A primeira fase, resumida no Algoritmo 7, é bastante semelhante à primeira fase de Ramos et al. (1998), cujos detalhes já foram explicados anteriormente.

Considerando as soluções extremas dispostas numa sequência lexicográfica, a segunda fase de Steiner e Radzik (2003), cujos detalhes são vistos no Algoritmo 8, utiliza um algoritmo k-best para encontrar as soluções eficientes contidas no interior de cada triângulo retângulo formado por dois pontos extremos adjacentes quaisquer.

Figura 3: Esquema de busca da segunda fase e atualização da região viável (STEINER; RADZIK, 2003)

ser o caso de haver vários pontos possíveis, eficientes ou não. Almejando desviar das soluções ineficientes, o Algoritmo 8 inicia a busca pela hipotenusa do triângulo retângulo, seguindo em direção ao seu ângulo reto. Cada vez que encontra um novo ponto eficiente, o procedimento delimita uma zona que ele chama de região viável (região clara de Figura 3), fora da qual não pode haver solução eficiente. A região escura da Figura 3 ajuda a excluir, portanto, o espaço objetivo dominado pela nova solução.

Algoritmo 7: Algoritmo PHASE1-GM e BorderSearch de Steiner e Radzik (2003) Entrada: Grafo G(V,E)

Saída: Conjunto de soluções suportadas

1 para i = 1, 2 faça

2 Ordene as arestas de E lexicograficamente segundo o critério i; 3 Encontre a AGM para tal ordenação e armazene-a;

4 Seja si = (xi, yi) o par de pesos da árvore encontrada; 5 fim 6 se s1 = s2 então 7 retorna {s1}; 8 senão 9 L = BorderSearch(s1, s2); 10 retorna concatenação de {s1}, L, {s2}; 11 fim 12 Procedimento BorderSearch(s0, s00)

13 Compute novos custos das arestas segundo a expressão

f1(e)(y0− y00) + f2(e)(x00− x0);

14 Ordene as arestas de acordo com os novos custos;

15 Calcule a AGM para tal ordenação, com par de custos s = (x, y) ; 16 se s = s0 ou s = s00 então

17 retorna lista vazia;

18 senão

19 L0 =BorderSearch(s0, s); 20 L00 =BorderSearch(s, s00);

21 retorna concatenação de L0, {s},L00; 22 fim

Algoritmo 8: Algoritmo PHASE2-KB de Steiner e Radzik (2003) Entrada: Grafo G(V,E) e Conjunto de soluções suportadas Saída: Conjunto de soluções não-suportadas

1 para todo par de pontos suportados consecutivos p = (x0, y0), q = (x00, y00) faça 2 Compute novos custos f1(e)(y0− y00) + f2(e)(x00− x0);

3 Defina a região viável e a linha de custo máximo;

4 Execute um algoritmo k-best para o problema da AGM; 5 para k = 1, ..., ∞ faça

6 Determine a k-ésima melhor AGM T ;

7 se não existe mais soluções então

8 pare;

9 senão

10 Seja s = (x, y) o par de custos associado a T ;

11 se s está na região viável então

12 Adicione s na lista de soluções não-suportadas;

13 Atualize a região viável e a linha de custo máximo de acordo com s.

14 senão

15 se s está na linha de custo máximo ou passou dela então

16 pare; 17 fim 18 fim 19 fim 20 fim 21 fim

Sejam p = (x0, y0), q = (x00, y00) dois objetivos extremos adjacentes. O Algoritmo 8 computa, para cada aresta e ∈ E, novos custos segundo a equação f1(e)(y0 − y00) +

f2(e)(x00− x0). O que antes era um grafo ponderado com vetores bidimensionais, torna-

se temporariamente um grafo ponderado apenas com um número real para cada aresta (tal aspecto se assemelha àquele da primeira fase). A partir deste novo grafo, executa- se um algoritmo k-best. Se a k-ésima melhor solução T estiver na região viável, então T é considerada solução eficiente não-suportada. A região viável é, então, atualizada. A variável k para de ser incrementada até o custo bidimensional da k-ésima melhor solução atingir a linha de custo máximo ou passar dela. Tal linha é definida como uma reta que passa pelo vértice da região viável mais distante da reta que une p e q, e é paralela a esta. Note que k poderá atingir, no pior caso, a quantidade de todas de árvores do grafo.

Do ponto de vista conceitual, a segunda fase de Steiner e Radzik (2003) pode utilizar qualquer algoritmo k-best. Os autores implementaram, pois, o algoritmo proposto por Ga- bow (1977). O presente trabalho, porém, implementou o algoritmo de Sörensen e Janssens (2005), almejando avaliar o comportamento computacional da segunda fase de Steiner e Radzik (2003), sobretudo do ponto de vista temporal, quando utilizando um algoritmo k-best diferente daquele sugerido pelos autores.

3.2.5

Algoritmo de Sourd e Spanjaard (2008)

Sourd e Spanjaard (2008) discorreram acerca do procedimento Branch-and-Bound adaptado ao contexto de problemas multiobjetivo. Em seguida, os autores o aplicaram ao problema da AG-Bi. As versões mono e multiobjetivo do Branch-and-Bound aplicado à árvore geradora são idênticas no que se refere ao Branch, mas diferem com relação ao Bound (SOURD; SPANJAARD, 2008). Para entender o Bound, bem como todo o algoritmo proposto pelos autores, considere um grafo G(V, E), com |V | = n, em que cada aresta e ∈ E é ponderada por um vetor bidimensional da forma (f1(e), f2(e)).

Diz-se ser U B o limite superior do algoritmo, definido como sendo o conjunto de cus- tos (f1(x), f2(x)) de cada solução não dominada encontrada. Seja U B≺ = {v ∈ <m|∀u ∈

U B, u 6 v} o conjunto de vetores de custos que não são fracamente dominados por ne- nhum ponto atual contido em U B. Seja ainda χ(N ) o conjunto de soluções que pode ser obtido a partir de um nó N na árvore de busca, e seja f (χ(N )) sua imagem no espaço objetivo. O papel principal do Bound é reduzir o espaço de busca, por exemplo, descar- tando um nó N da árvore de busca a partir do qual verifica-se ser impossível encontrar alguma solução eficiente. Tal verificação é feita a partir de U B.

No caso mono-objetivo, haveria apenas um valor de U B, que seria a melhor solução encontrada até o momento, e as soluções candidatas a serem exploras seriam aquelas que apresentassem custo U B≺ = (−∞, U B). Assim, seria necessário uma simples função h : R → R, h(v) = v − LB(N ), sendo LB(N ) uma estimativa da melhor solução possível que poderia ser encontrada a partir do nó N . Caso LB(N ) > U B (informalmente, o mínimo alcançável seria maior que o melhor já encontrado), então h(f (x)) = f (x) −

Documentos relacionados