• Nenhum resultado encontrado

Adjacência de Arestas

2.4 Revisão da Literatura para os Problemas da AGMQ e da AGMQA

2.4.5 Soak, Corne e Ahn (2006)

Neste trabalho, Soak, Corne e Ahn (2006) apresentam uma nova maneira de codificar árvores, denominada representação Edge-Window-Decoder (decodificador por janela de aresta). Tal estratégia de codificação consiste em uma lista de nós, que podem se repetir. Para testar a representação sugerida, os autores implementaram algoritmos genéticos para três problemas NP-difíceis relacionados a árvores, dentre os quais está o problema da AGMQ. Explicamos, pois, a codificação e o algoritmo adotados no artigo em referência. Considere o grafo-exemplo da Figura 3.

Figura 3: Grafo-exemplo para representação Edge-Window- Decoder (SOAK; CORNE; AHN, 2006)

A representação desta árvore por meio de um conjunto de arestas é: {{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {1, 7}, {1, 8}, {1, 9}}. Agora, imagine-se traçando uma linha do

nó 1 ao nó 9, seguindo as arestas. Neste tracejado, cada nó deve ser visitado sem que se tire o lápis do papel. Esse procedimento resultará em uma sequência de nós visitados em ordem tal como: (1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9). A codificação foi inspirada neste procedimento. Na prática, a sequência de vértices que representa a árvore pode ser obtida a partir de um simples percurso em profundidade, por exemplo.

A decodificação parte de uma árvore vazia e de uma “janela” de tamanho dois inici- almente posicionada na primeira posição da sequência. No caso do exemplo da Figura 3, a janela conteria, a princípio, os números “1, 2”. Isso significa que a aresta conectando os vértices 1 e 2 deve ser adicionada à árvore. A janela se move, então, uma posição, e passa a ler a informação “2, 1”. Como os autores lidam apenas com grafos não-dirigidos, essa informação corresponde a uma aresta que já está na árvore, então ela é ignorada. Assim, as arestas indicadas por cada janela são, sucessivamente, consideradas e adicionadas ou não à árvore de acordo com uma rotina de construção de árvore.

Soak, Corne e Ahn (2006) apresentam diversas rotinas de construção de árvore. Dentre as rotinas implementadas, os autores constataram que os melhores resultados ocorreram quando empregaram a Rotina de Construção de Árvore Restrita em Grau de Kruskal para o problema da AGMQ.

O procedimento inicial da rotina mencionada consiste em percorrer, usando a janela de tamanho dois, a sequência de vértices que representa a árvore e armazenar todas as arestas visitadas em um grafo G = (V, E). Neste caso, G não necessariamente é acíclico. A partir desse ponto, uma versão do algoritmo de Kruskal (1956) é aplicada a G para dar origem à árvore. Sendo assim, o segundo passo consiste em ordenar todas as arestas de G em ordem crescente de pesos. Nesse ponto, os autores não deixam evidente que valor é tomado como peso da aresta para o problema da AGMQ. Isto é, não fica claro como os custos lineares e quadráticos associados a cada aresta são combinados (ou não) para formar o peso da aresta.

Dada a ordenação das arestas, o algoritmo prossegue inserindo na árvore, iterativa- mente, a aresta de menor peso que não gera ciclo nem viola a restrição de grau. Esta rotina não se aplica apenas a AGMs restritas em grau, uma vez que se pode ignorar tal restrição. O procedimento termina quando a árvore contém n − 1 arestas. Soak, Corne e Ahn (2006) mencionam que cada indivíduo é uma sequência de 2(n − 1) nós.

Os autores propuseram alguns operadores genéticos e um procedimento de seleção. O algoritmo genético delineado por Soak, Corne e Ahn (2006) para a AGMQ emprega o operador de cruzamento de nós adjacentes. Dados dois pais, P AI1 e P AI2, o operador

funciona como descrito a seguir. Primeiramente, um mapa de adjacência de nós é cons- truído para cada pai. Por exemplo, o conjunto PAI 1i contém todos os nós adjacentes ao

nó i, 0 < i ≤ n, em P AI1. O segundo passo é a escolha aleatória de um nó para ser o nó

inicial do descendente. Denominemos o nó selecionado de vértice atual e o representemos por va. O operador de cruzamento executa, iterativamente, os passos a seguir, até que o cromossomo-filho possua 2(n − 1) vértices:

(i) Encontrar P AIva

1 ∩ P AI2va . Se a interseção em (i) não for vazia, então escolha o

va cuja aresta que o próximo vértice, pv, como sendo o vértice em P AIva

1 ∩ P AI2va

conecta a va possui menor peso. Desempate com escolha de pv aleatória quando necessário.

(ii) Por outro lado, se a interseção em (i) for vazia, faça P AIva

1 ∪ P AI2va. Se a união não

for vazia escolha o próximo vértice, pv, como sendo o vértice em P AIva

1 ∪ P AI2va

cuja aresta que o conecta a va possui menor peso. Desempate com escolha de pv aleatória quando necessário.

(iii) Caso contrário, escolha aleatoriamente o próximo nó pv a ser inserido no cromossomo- filho. (iv) Remova pv de P AIva 1 e de P AI2va remova va de P AI pv 1 e de P AI pv 2 .

(v) Adicione o vértice pv imediatamente após va no descendente e atualize va com pv.

Este operador não garante que todos os nós sejam incluídos na árvore. Por isso, se algum nó tem número de ocorrências 0 na sequência de nós gerada para o cromossomo- filho, um procedimento de reparação deve ser utilizado. Os autores sugerem que, para cada nó não inserido no filho, se escolha, aleatoriamente, um nó com pelo menos 2 ocorrências. Então, o nó é inserido em lugar de uma das ocorrências do nó selecionado. O descendente gerado substitui o pior dentre os dois pais.

Soak, Corne e Ahn (2006) adotaram um operador de mutação por troca recíproca. Tal operador simplesmente seleciona, aleatoriamente, duas posições no cromossomo e troca os genes nestas posições.

Os experimentos computacionais relatados envolvem instâncias geradas aleatoria- mente e compostas por grafos completos de 50 a 100 nós. O tamanho da população foi definido em 100 e a condição de parada é a execução de 10.000 iterações.

Tendo em vista que o objetivo do principal do artigo de Soak, Corne e Ahn (2006) é a apresentação de uma nova representação para estruturas de árvores, os experimentos não envolvem comparação com outros algoritmos da literatura para a AGMQ. Os experi- mentos consistiram, de fato, na comparação entre diferentes representações para árvores. Sendo assim, os autores mostram que o algoritmo que adotou a representação por Edge- Window-Decoder obteve melhores resultados em termos de qualidade de solução, embora seu desempenho em tempo computacional tenha sido inferior a abordagem via conjunto de arestas (RAIDL; JULSTROM, 2003).