Codificação Nó-Profundidade com Operador de
Recombinação para Algoritmos Evolutivos
Giampaolo Luiz Libralão, Alexandre Cláudio Botazzo DelbemInstituto de Ciências Matemáticas e Computação. Universidade de São Paulo (USP). Av. Trabalhador São-carlense, 400 – 13560-970 – São Carlos, São Paulo, Brasil.
[email protected], [email protected] Resumo
O problema de modificação de grafos (PMGs) envolve diversas áreas de aplicação e pesquisa, principalmente na Engenharia e Computação. Várias abordagens alternativas têm sido propostas para lidar com a complexidade intrínseca a estes problemas, que são, em geral, NP-difíceis. Dentre essas alternativas, os Algoritmos Evolutivos (AEs) têm se destacado. Os AEs com melhor desempenho para PMGs possuem estruturas de dados (codificações) especiais para manipulação de grafos. Nas recentes pesquisas sobre PMGs, uma representação relativamente nova denominada codificação nó-profundidade (CNP) tem se mostrado promissora. Em geral, operadores de recombinação aumentam o desempenho dos AEs. Nesse sentido, esse artigo propõe um operador de recombinação para a CNP. O AE utilizando os operadores existentes e o proposto é avaliado para o dc-MST.
Abstract
Graph modifying problems (GMPs) are present in many application and research areas, mainly in engineering and computation. Lots of alternative approaches have been proposed to deal with the intrinsic complexity existent in these problems, which are, in general, NP-Hard, in which the Evolutionary Algorithms (EAs) had shown to be very promising. Best EAs for GMPs have special data structures (or encodings) to manipulate graphs. In recent researches about GMPs, a relatively new encoding called Node-Depth Encoding (NDE) has presented satisfactory results. In general, recombination operators are able to increase the performance of EAs for GMPs. In this sense, that article proposes a recombination operator for NDE. EA using the existent operators and the proposed one is evaluated for the dc-MST problem.
1. Introdução
As pesquisas sobre Teoria de Grafos têm enfocado o estudo de estruturas de grafos supondo que esses são estáticos. No entanto, uma grande variedade de problemas envolve grafos que mudam com o tempo, que foram classificados como grafos dinâmicos [Harary & Gupta 1997]. Esses grafos aparecem em diversas áreas da ciência, especialmente em Ciência da Computação e Engenharia. Problemas clássicos de grafos [Goodaire & Parmenter 1998] como os de árvore geradora mínima, ou Minimum
Spanning Tree (MST); de caminho mínimo, ou Shortest Path (SP); e o do caixeiro
viajante, ou Traveling Salesman (TS) podem, por exemplo, estar presentes em um Problema de Modificação de Grafos (PMG).
Muitos desses problemas modelados por grafos não são exatamente iguais, mas similares aos problemas clássicos e estão presentes no mundo real, sendo necessário, portanto, encontrar soluções adequadas para os mesmos. Nesse sentido, técnicas alternativas começaram a ser investigadas como os algoritmos de buscas em Inteligência Artificial. Essas alternativas, em geral, não garantem soluções ótimas, podendo retornar uma solução próxima da ótima, ou mesmo possivelmente próxima. Devido a essa característica, essas técnicas são chamadas também de Algoritmos de Aproximação ou Probabilísticos [Sipser 1997].
O número de trabalhos utilizando uma classe de algoritmos considerados de aproximação e também probabilísticos, os Algoritmos Evolutivos (AEs) [Eiben & Rudolph 1999] [Heitkoetter & Beasley 2002], têm crescido recentemente. Essas abordagens evolutivas apresentam resultados relevantes quando comparados às demais metodologias empregadas, incentivando novas pesquisas que buscam aumentar o desempenho dos AEs para PMGs. Dentre essas, pode-se destacar [Abuali et. al. 1995], [Gen & Cheng 1997], [Klein & Subramanian 1998], [Gen et. al. 1999], [Knowles & Corne 2000], [Chou et. al. 2001], [Delbem 2003], [Delbem et. al. 2004], dentre outros.
Um dos problemas que ocorre com PMGs é que, apesar dos resultados encorajadores dos AEs, para árvores envolvendo um grande número de nós ou arestas, os tempos computacionais requisitados em geral não são aceitáveis. Uma das questões principais que afeta a eficiência computacional dos AEs em PMGs é a codificação dos grafos na forma de cromossomo (sua estrutura de dados).
Esse trabalho propõe melhorias para a codificação nó-profundidade (CNP), que tem apresentado resultados relevantes [Delbem et. al. 2004]. Neste sentido, é proposto um operador de recombinação (OR) para AEs baseados na CNP aplicados a PMGs.
A próxima seção apresenta uma introdução sobre AEs. A Seção 3 introduz a CNP. A Seção 4 propõe o operador de recombinação (OR) para CNP. A Seção 5 discute os testes realizados e resultados obtidos. A Seção 6 apresenta considerações finais sobre a proposta.
2. Algoritmos Evolutivos
Os AEs são procedimentos baseados na Teoria de Evolução das Espécies [Eiben & Rudolph 1999]. Esses são algoritmos de busca baseados em mecanismos de seleção natural e reprodução dos indivíduos segundo o processo de evolução Neo-Darwinista. De acordo com essa teoria, os mais aptos sobrevivem, podendo passar suas
características para a nova geração. Características novas podem aparecer entre os indivíduos por meio de modificações aleatórias de suas características durante o processo de reprodução. Isso produz diversidade na população (conjunto de indivíduos). Os processos de geração de diversidade, combinação de características e seleção dos mais aptos são a base da Teoria da Evolução Neo-Darwinista. Os AEs buscam simular em computador esses processos de modo a obter a evolução de soluções para um problema em direção à solução ótima.
Um AE deve ter basicamente as seguintes características: cada solução do problema é tratada como um indivíduo de uma população (conjunto de possíveis soluções). Baseado em algum critério, alguns indivíduos da população são selecionados. A partir desses indivíduos, novos indivíduos com alterações são criados (esse processo é chamado de reprodução). Os novos indivíduos são avaliados de acordo com um critério. Esses indivíduos podem ser incluídos na população dependendo dos resultados da sua avaliação. Alguns indivíduos velhos podem ser removidos da população. O processo de criar indivíduos e alterar a população é repetido um número arbitrário de vezes. Por fim, supõe-se que a última população possui indivíduos melhorados (as melhores soluções para o problema).
Embora não se possa garantir que as soluções finais obtidas sejam ótimas, esse tipo de metodologia tem mostrado resultados relevantes para problemas de otimização que envolvem funções-objetivo não lineares (ou até mesmo descontínuas), bem como problemas combinatoriais.
3. Codificação Nó-Profundidade
Os AEs que utilizam as formas de codificação convencionais produzem muitos componentes não-conectados ou grafos cíclicos quando aplicados a grandes sistemas. Conseqüentemente, esses algoritmos requerem grande tempo de computação, reduzindo a eficiência e a convergência do AE. Buscando resolver os problemas existentes nas codificações convencionais, outras representações de árvores para PMGs têm sido propostas [Abuali et. al. 1995], [Carvalho et. al. 2001], [Rothlauf et. al. 2002], [Raidl & Julstrom 2003]. Apesar dos resultados relevantes obtidos por tais codificações, o desempenho dos AEs baseados nessas representações ainda são insatisfatórios para grafos de tamanho elevado. Buscando reduzir esta dificuldade, foi desenvolvida uma codificação capaz de produzir apenas componentes conectados e grafos acíclicos, permitindo aumentar o desempenho de AEs para PMGs. Esta codificação é denominada CNP [Delbem 2003].
É importante observar também que esta codificação produz florestas geradoras enquanto as convencionais produzem árvores geradoras. A codificação das florestas permite lidar com uma variedade maior de grafos. Deve-se observar também que a CNP não está restrita a grafos com características especiais, podendo ser utilizada para problemas envolvendo grafos euclidianos ou randômicos, completos ou esparsos, dentre outros [Delbem 2003].
A CNP é baseada no conceito da profundidade de um nó em uma árvore construída a partir de um grafo e consiste, basicamente, em uma lista linear contendo os nós da árvore e suas respectivas profundidades, criando um array de pares [nó; profundidade]. A ordem em que esses pares são dispostos na lista linear é muito
importante. Uma busca em profundidade [Cormen 1997] em uma árvore geradora do grafo é capaz de produzir a ordenação correta exigida pela lista linear utilizada. A Figura 3.1 apresenta um grafo e sua codificação correspondente utilizando a CNP. Na parte (a) é apresentado o grafo e sua árvore geradora, na parte (b) tem-se a lista linear que representa a CNP.
A união das codificações de cada uma das árvores que compõem a floresta em análise gera a codificação da floresta completa. Para produzir novas florestas geradoras utilizando a CNP, são utilizados dois operadores de reprodução desenvolvidos em [Delbem 2003; Delbem et. al. 2004], conhecidos como operador 1 e operador 2.
Esses operadores produzem uma floresta geradora F’ a partir de um grafo G quando aplicados à outra floresta geradora F de G. Os resultados produzidos pela aplicação de quaisquer dos operadores citados é similar. O operador 1 é capaz de produzir modificações pequenas e simples na floresta, ao passo que o operador 2 é capaz de gerar grandes e complexas modificações [Delbem 2003].
(a)
(b)
Figura 3.1: (a) Exemplo de grafo e árvore geradora representada pelas arestas em destaque. (b) CNP da árvore apresentada em (a).
4. Operador de Recombinação
Com os operadores 1 e 2 propostos em [Delbem 2003], conseguiu-se um algoritmo relativamente rápido para a modificação de florestas. Para obter esse algoritmo, utilizou-se a CNP. Os operadores da CNP conseguem eficientemente produzir uma nova floresta a partir de uma floresta original. Porém, esses operadores não são capazes de trocar partes de duas florestas (mães) para gerar outras duas florestas (filhas). Esse processo de geração de florestas filhas denomina-se recombinação. Em geral, AEs com operadores de recombinação possuem desempenho superior a AEs sem tal operador.
Assim, o desenvolvimento de um operador de recombinação (OR) busca aumentar o desempenho dos AEs para PMGs baseados na CNP. Nesse trabalho, foi desenvolvido um OR que utiliza informações sobre as arestas de um grafo e é capaz de trocar partes de duas florestas diferentes, gerando duas novas florestas, desde que estas
apresentem a mesma quantidade de nós. O OR desenvolvido funciona de acordo com a descrição a seguir:
Sejam duas florestas F1 e F2 com mesma quantidade de nós então:
• Copie os nós da primeira floresta e represente uma nova floresta F1’, esta
representará o novo indivíduo gerado;
• Copie as arestas da floresta F2 para a nova floresta F1’;
• Faça análises para verificar que o novo indivíduo é factível.
As regras a seguir apresentam como o OR desenvolvido produz novas soluções para o problema estudado:
• Copie os nós da floresta F1, mantendo a lista linear de profundidades
existente na CNP, para uma nova estrutura que representa a nova floresta gerada
F1’;
• Copie, da floresta F2, a lista linear de profundidades que a representa;
• Percorrer a lista linear de profundidades da floresta F2 em ordem ascendente.
Para cada nível de profundidade faça:
¾ Retirar, dentre o conjunto de nós do array que possuem a mesma profundidade, o primeiro nó existente;
¾ Verificar, de acordo com a lista linear de profundidades existente, se o nó retirado dessa lista possui adjacência com algum nó de profundidade menor (nó pai), ou se viola alguma restrição do problema analisado;
¾ Se não existir adjacência ou violação de restrições, substitua a profundidade desse nó por (profundidade-1) e volte ao passo 1;
¾ Caso exista adjacência e não viole restrições, insira o nó na nova floresta
F1’ na posição atual (correspondente à profundidade do mesmo). Isso
garantirá que a nova floresta gerada F1’ seja válida.
Como pode ser observado, o OR trabalha sempre com duas florestas para gerar novos indivíduos ou soluções para o problema estudado. Desta forma, faz-se necessária a existência de mais de uma floresta inicial para que o OR possa ser utilizado na representação. Para isso, utiliza-se um algoritmo de Prim para gerar, a partir de um grafo inicial, formado por arestas com pesos aleatórios, um conjunto de florestas que compõem a população inicial de indivíduos do AE com CNP utilizando o novo OR.
Na Figura 4.1 é apresentado um exemplo da aplicação do novo OR desenvolvido, à esquerda são apresentadas as florestas F1 e F2 que serão alteradas pelo
Figura 4.1: À esquerda são apresentadas duas florestas F1 e F2, que serão manipuladas pelo OR. À direita tem-se a floresta F1’, resultante da aplicação do OR desenvolvido.
5. Testes
Os testes realizados de modo a avaliar o desempenho do novo OR desenvolvido foram aplicados para o problema de árvore geradora mínima com restrição de grau (dc-MST, do inglês minimum spanning tree with degree constraint) [Knowles & Korne 2000]. Seja G(V,E) um grafo com pesos e conexo, em que V={v1,v2,...,vn} é o conjunto
de nós de G e E={e1,e2,...,en} é o conjunto de arestas de G e seja W={w1,w2,...,wn} a
representação do peso ou custo associado a cada aresta de G, com pesos são restritos a valores reais não negativos. Qualquer sub-grafo de G pode ser descrito de acordo com o vetor x = (x1,x2,...,xn), no qual cada elemento xi é definido como:
x =
Seja S um sub-grafo de G, este sub-grafo S é dito ser uma árvore geradora de G se apresentar as seguintes características:
• Conter todos os vértices de G; • Ser conexo e acíclico.
Seja T o conjunto de todas as árvores geradoras do grafo G, então uma árvore geradora mínima é definida como:
{
1, se a aresta ei faz parte do subgrafo
=
∈
∑
= m i i ix
x
T
w
x
z
1)
(
min
Porém, se bj é a restrição do grau dj para cada nó vj existente no grafo G, então a
árvore geradora mínima é definida como:
=
∑
∈
∈
= ≤ m i j j j i ix
d
b
v
V
x
T
w
x
z
1.
.
)
(
min
Para os experimentos foram considerados seis grafos completos com o número de nós variando entre 50 e 500. Para cada grafo, a restrição de grau considerada foi de 3 ou 4 graus. Os pesos das arestas foram obtidos de modo aleatório em um intervalo variando entre 1 até o número de nós do grafo.
Em todos os testes realizados foi utilizado o critério de seleção por torneio para reduzir o tempo de processamento, tamanho da população igual a 10 e elitismo. Para cada teste foram realizadas 10.000 avaliações. Todos os testes também foram realizados em um processador dual de 2,0GHz e 4Gb de memória RAM.
O algoritmo proposto foi testado utilizando, inicialmente, taxas iguais para cada um dos três operadores existentes, ou seja, cada um dos operadores possui 33% de probabilidade de ser aplicado a cada geração. A Tabela 5.1 apresenta os resultados obtidos para esta primeira análise do OR desenvolvido, o campo ‘Melhor Custo’ indica a média dos melhores indivíduos em 20 execuções realizadas e o campo ‘Tempo’ apresenta a média do tempo gasto correspondente ao conjunto destas execuções. A coluna G indica os diferentes testes realizados e a coluna V indica o tamanho dos grafos analisados (em nós). Estes resultados foram comparados com a aplicação da CNP ao mesmo problema sem a utilização do novo OR. A população inicial de ambos os algoritmos foi obtida pelo algoritmo de Prim para evitar a produção de tempos computacionais diferentes devido à população inicial.
Os resultados obtidos sugerem que a aplicação desse novo operador confere à CNP uma melhor convergência para os grafos utilizados nos testes. A Tabela 5.1 permite também observar que a aplicação do OR aumenta consideravelmente o tempo médio final de execução do AE desenvolvido, principalmente para grafos de maior tamanho (quantidade de nós igual ou superior a 200).
Com o objetivo de realizar uma análise mais detalhada sobre o operador desenvolvido, variou-se a taxa de aplicação desse durante cada execução do AE. O novo OR foi aplicado ao AE durante cada execução desse em proporções inferiores a 20%, em proporções iguais (33%) e em proporção de 50%. Por exemplo, neste último caso, apenas em 50% das gerações o OR foi utilizado, sendo aplicados os demais operadores [Delbem 2004] nos casos restantes.
A Tabela 5.2 apresenta uma comparação dos resultados obtidos com as três diferentes proporções de aplicação do OR desenvolvido. Como pode ser observado, quanto maior a taxa de aplicação do novo OR, maior o tempo de execução do AE
aplicado ao problema dc-MST, sendo que o tempo cresce consideravelmente para grafos com quantidade de nós superior a 200.
Tabela 5.1: Resultados do algoritmo proposto e do mesmo algoritmo sem utilização do OR aplicados ao problema dc-MST.
Algoritmo sem OR Algoritmo Proposto
G V Grau da
Árvore
Melhor Custo Tempo (s) Melhor Custo Tempo (s)
1 50 3 106.1 0.28 98.0 0.32 4 109.0 0.26 99.0 0.31 2 100 3 486.7 0.47 404.7 0.64 4 483.0 0.50 404.0 0.64 3 200 3 3042.6 0.90 2703.0 1.65 4 3009.1 0.85 2822.5 1.57 4 300 3 8943.6 1.44 8735.0 3.25 4 9112.0 1.32 8868.1 3.94 5 400 3 19904.2 1.97 19143.0 6.90 4 19211.7 1.88 18607.4 7.12 6 500 3 35808.1 2.54 33941.0 9.50 4 37332.8 2.48 35106.1 9.70
Tabela 5.2: Comparação dos resultados obtidos com diferentes taxas de aplicação do OR desenvolvido.
OR aplicado com
proporção inferior a 20% proporções iguais OR aplicado em proporção de 50% OR aplicado com G V Grau da
Árvore
Melhor
Custo Tempo (s) Melhor Custo Tempo (s) Melhor Custo Tempo (s)
1 50 3 109.9 0.30 98.0 0.32 104.0 0.51 4 112.0 0.27 99.0 0.31 107.0 0.48 2 100 3 571.9 0.56 404.7 0.64 406.2 1.09 4 558.8 0.55 404.0 0.64 410.5 1.11 3 200 3 3144.7 1.58 2703.0 1.65 3225.0 3.20 4 2833.0 1.50 2822.5 1.57 3152.3 3.15 4 300 3 8860.8 3.18 8735.0 3.25 9540.0 6.40 4 8874.0 3.05 8868.1 3.94 10005.0 6.38 5 400 3 19735.7 6.69 19143.0 6.90 24317.5 9.23 4 20779.1 6.78 18607.4 7.12 23610.3 9.30 6 500 3 38570.8 8.95 33941.0 9.50 46961.8 11.90 4 37783.0 8.81 35106.1 9.70 46720.0 12.05
Os resultados apresentados indicam também que a aplicação do OR em proporções iguais garante melhor convergência para o AE desenvolvido. Além disso, os resultados obtidos são melhores que àqueles obtidos pelo AE sem o OR. O maior problema encontrado foi o tempo computacional elevado exigido pela aplicação desse novo operador. Para grafos com 500 nós, o tempo computacional exigido é aproximadamente quatro vezes superior que o demandado por esta mesma aplicação sem utilizar o OR desenvolvido. O tempo de computação relativamente alto pode ser explicado pela necessidade de se analisar a factibilidade das novas soluções produzidas sempre que o OR é aplicado. Essa necessidade aumenta o tempo de computação do AE,
mesmo sendo realizada pelo próprio OR desenvolvido e não através da utilização de rotinas de busca e correção de infactibilidades.
Percebe-se, com os testes apresentados, que o OR desenvolvido confere uma melhor convergência para todos os tamanhos de grafos analisados. Pode-se notar também que o tempo ou custo computacional da CNP investigada aumentou consideravelmente quando da aplicação do novo OR desenvolvido.
É importante ressalvar que o tempo computacional imposto ao AE com o novo OR, apesar de ser elevado, é consideravelmente inferior se comparado com o obtido pelas representações de Números de Prüfer [Gen et. al. 1999] e Conjunto de Arestas [Raidl & Julstrom 2003], como pode ser observado na Tabela 5.3. Os resultados apresentados nessa tabela indicam que, mesmo tendo o OR aumentado o tempo de computação, os resultados são superiores aos obtidos pelas principais representações existentes, seja em qualidade das soluções ou em tempo computacional.
Tabela 5.3: Comparação dos resultados obtidos pela CNP com OR, pelo AE com Número de Prüfer e pelo AE com Conjunto de Arestas.
AE com Número de
Prüfer
AE com RNP AE com Conjunto de Arestas G V Grau da
MST
Melhor
Custo Tempo (s) Melhor Custo Tempo (s) Melhor Custo Tempo (s)
1 50 3 419.1 1.42 98.0 0.32 342.7 0.74 4 398.3 1.43 99.0 0.31 340.3 0.76 2 100 3 1937.1 3.74 404.7 0.64 1669.9 1.64 4 1822.9 4.06 404.0 0.64 1670.4 1.64 3 200 3 9868.9 15.72 2703.0 1.65 8509.0 3.77 4 9628.3 17.24 2822.5 1.57 8593.7 3.59 4 300 3 26712.2 36.96 8735.0 3.25 22412.5 5.70 4 25838.5 41.07 8868.1 3.94 23058.1 5.70 5 400 3 53089.5 69.10 19143.0 6.90 45181.2 8.40 4 52114.0 73.80 18607.4 7.12 45183.2 8.60 6 500 3 89886.2 113.16 33941.0 9.50 52746.4 13.54 4 88421.2 123.67 35106.1 9.70 51379.6 14.08 6. Considerações Finais
Neste artigo é apresentada a CNP com o OR, que tem o objetivo de recombinar duas árvores utilizando para isso informações não somente dos nós, mas também das arestas dessas árvores. Os resultados obtidos sugerem que o OR desenvolvido confere resultados melhores aos produzidos por essa mesma representação sem esse operador. A convergência do AE é mais rápida utilizando o OR proposto para os testes realizados. Este fato estimula o aperfeiçoamento do OR desenvolvido, a fim de obter tempos computacionais mais reduzidos.
Atualmente, um OR mais eficiente está sendo desenvolvido, o qual baseia-se em um procedimento que evita a análise de infactibilidades das novas soluções produzidas e deve reduzir assim tempo computacional requerido pelo AE com o OR atual.
7. Referências Bibliográficas
Abuali, F., Wainwright, R., e Schoenefeld, D. (1995). A new encoding scheme for spanning trees applied to the probabilistic minimum spanning tree problem, em Eshelman, L. J., ed.,
Sixth International Conference on Genetic Algorithms, San Francisco.
Carvalho, P. M. S., Ferreira, L. A. F. M. & Barruncho, L. M. F. (2001). On Spanning-Tree Recombination in Evolutionary Large-Scale Network Problems - Application to Electrical Distribution Planning, IEEE Transactions on Evolutionary Computation, v. 5, n. 6, pp. 623-630.
Chou, H. H., Premkumar e G. Chu, C. H. (2001). Genetic algorithms for communications network design - an empirical study of the factors that influence performance, IEEE Transactions on Evolutionary Computation, 5:236-249(3).
Cormen, T. H., Leiserson C. E e Rivest, R. L. (1997). Introduction to Algorithms, The MIT elect. Engineering and Computer Science series.
Delbem, A. C. B. (2003). A Forest Encoding for Evolutionary Algorithms Applied to Design Problems, Journal Genetic Algorithm and Evolutionary Computation Conference 2003,
Lecture Notes in Computer Science, v. 2723, pp. 634-635.
Delbem, A. C. B., Carvalho, A. C. P. L. F., Policastro, C. A., Pinto, A. K. O., Honda, K. e Garcia, A. C. (2004). Node-depth Encoding for Evolutionary Algorithms Applies to Network Design. Lecture Notes in Computer Science 2004: Genetic and Evolutionary Computation, pp. 678-687.
Eiben, A. E. & Rudolph, G. (1999). Theory of evolutionary algorithm: a bird's eye view,
Theorical Computer Science 229:3-9.
Gen, M. & Cheng, R. (1997). Genetic Algorithms and Engineering Design, Ashikaga Institute of Technology, Ashikaga, Japan.
Gen M., Li Y. Z. e Ida K. (1999). Solving multi-objective transportation problem by spanning tree-based genetic algorithm, IEICE Transactions on Fundamental of Electronics Communications and Computer Sciences, E82A: 2802-2810.
Goodaire, E. G. & Parmenter, M. M. (1998). Discrete Mathematics with Graph Theory, Prentice Hall, Upper Saddle River, USA.
Harary, F. & Gupta, G. (1997). Dynamic graph model, Mathl. Comput.Modelling. 25: 79-87. Heitkoetter, J. & Beasley, D. (2002). The hitch-hiker's guide to evolutionary computation: A list
of frequently asked questions, USENET: comp.ai.genetic. Encontrado via FTP em rtfm.mit.edu/pub/usenet/news.answers/ai-faq/genetic, pp. 1-100.
Klein, P. N. & Subramanian, S. (1998). Fully dynamic approximation scheme for shortest paths in planar graphs, Algorithmica 22: 235-249.
Knowles, J. & Corne, D. (2000). A new evolutionary approach to the degree-constrained minimum spanning tree problem, IEEE Transaction on Evolutionary Computation 4:125-134(2).
Raidl G. R. & Julstrom B. A. (2003). Edge-sets: An effective evolutionary coding of spanning trees, IEEE Transactions on Evolutionary Computation, 7(3), pp. 225-239.
Rothlauf, F., Goldberg, D. & Heinzl, A. (2002). Network Random Keys – A Tree Representation Scheme for Genetic and Evolutionary Algorithms, Evolutionary Computation 10(1): 75-97, Massachusetts Institute of Technology.