Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Wilson Rosa Benevides Jnior Curso de Graduao de Bacharelado em Sistemas de Informao Pontifcia Universidade Catlica de Minas Gerais Belo Horizonte - Minas Gerais Brasil
wrbbenevides@oi.com.br
Abstract. The search for shortest paths is a extensively studied branch of graph theory, with applications on the most diverse areas of knowledge and practical life. This paper aims to present and demonstrate some of major algorithms to find the best path in a graph and the influence of metrics used in their implementation performance. Resumo. A busca de caminhos mnimos um ramo bastante estudado da teoria dos grafos, com aplicaes nas mais variadas reas do conhecimento e da vida prtica. O presente trabalho visa apresentar e demonstrar alguns dos principais algoritmos para encontrar o melhor caminho em um grafo e a influncia da mtrica utilizada no desempenho de sua execuo.
Palavras chave grafos , caminhos mnimos.
1.Introduo
A busca de caminhos mnimos uma vertente da teoria dos grafos entre as mais estudadas nos meios acadmicos e com uma ampla gama de usos e aplicaes em problemas do cotidiano. Problemas que em geral podem ser modelados utilizando-se de grafos so bons candidatos para aplicao dos algoritmos que sero apresentados. O foco do problema consiste em minimizar o custo de travessia entre dois vrtices em um grafo, onde o custo dado pela soma dos pesos das arestas percorridas. O peso de um caminho p = < v0,v1,v2,...vk > a soma dos pesos de todas as arestas, ou seja,
Dentre os problemas elencados podemos destacar uma variante moderna do problema do caixeiro viajante , que consiste em visitar todas as cidades de uma determinada regio utilizando o menor caminho possvel.
Uma utilizao contempornea do caixeiro viajante consiste em por exemplo descobrir a rota mais eficiente para realizar entregas em uma transportadora ,calcular o menor trajeto entre a origem e o destino em uma navegao guiada por GPS entre outras tantas aplicaes. Muitos algoritmos foram propostos visando obter uma soluo eficiente para o problema. Entre eles esto os de Dijkstra , Bellman-Ford e o conhecido por A*, que sensvel heurstica utilizada.
B- Algoritmo de Bellman Ford O algoritmo de Bellman-Ford funciona de maneira semelhante ao de Dijkstra com a diferena de poder ser utilizado para encontrar o caminho mnimo em grafos com arestas de peso negativo. A restrio para sua execuo que o grafo no pode conter nenhum ciclo de peso negativo. Se existe um ciclo com peso negativo o algoritmos pode detectar e relatar a existncia deste. Possui complexidade da ordem de O(|V |2|E|) ou O(|V |4) no caso de grafos densos, onde V o nmero de vrtices e E o nmero de arestas. C- Algortmo A* O algoritmo foi desenvolvido por Peter Hart, Nils Nilsson, e Bertram Raphael em 1968 e inicialmente chamado de algoritmo A. O Algoritmo A* (A estrela) tambm se assemelha ao algoritmo de Dijkstra. porm, ao contrrio deste, usa como base para a escolha do caminho no s o custo para se chegar a um vrtice, mas tambm uma estimativa de sua distncia ao destino. A estimativa conhecida como heurstica. Usando este algoritmo com uma heurstica apropriada atinge-se um comportamento timo. O clculo do custo para se chegar de um determinado vrtice v1 at um vrtice v2 o peso da aresta que liga v1 a v2, mais a estimativa da distncia de v2 at o destino. conhecido como algoritmo de custo acumulado pois medida que ocorrem as iteraes , o algoritmo decide qual rota seguir de acordo com o custo acumulado e as estimativas das rotas j percorridas.
Diferentemente de Dijkstra o algoritmo A*, com base nas estimativas heursticas no um mtodo cego.Executa mais rpido que Dijkstra porque evita expandir desnecessariamente trajetos mais distantes do destino. Pode ser executado com diferentes heursticas, dentre as quais sero destacadas as mtricas das distncias: Chebyshev, Euclidiana , Mahalanobis , Manhatan e Distncia
3.2Distncia Euclidiana `A distncia entre dois pontos A e B em um plano bidimensional calculada com base no teorema de Pitgoras, d-se o nome de distncia euclidiana e pode ser calculada pela seguinte frmula.
3.3 Distncia Mahalanobis A distncia Mahalanobis foi desenvolvida pelo matemtico indiano Prasanta Chandra Mahalanobis em 1936. bastante utilizada em estatstica para calcular a similaridade entre uma amostra conhecida e outra desconhecida. O clculo da distncia dada pela frmula.
O smbolo de somatrio elevado a menos um representa a matriz de covarincia. Ter o mesmo valor da distncia euclidiana se a matriz de covarincia for uma matriz identidade.
Se matriz de covarincia diagonal, temos como resultado a chamada distncia eucliciana normalizada 3.4 Distncia Manhatan Tambm conhecida por geometria taxi , de quarteires ou pombalina, foi desenvolvida por Hermann Minkowski no sculo XIX. Recebeu esses nomes devido ao fato de ser a menor distncia possvel de ser percorrida de carro em Manhatan ou na baixa pombalina , quem tem suas malhas virias dividida de forma reticulada. Em uma plano que contm os pontos A e B, sua distncia ser ao soma dos mdulos das diferenas entre as coordenadas (x1,y1) e (x2,y2) e pode ser calculada pela seguinte expresso.
3.5 Distncia angular entre dois vetores. Distncia baseada no ngulo formado ente dois vetores em um plano.
4. Objetivos e Metodologia
O objetivo do presente trabalho demonstrar como as escolhas das mtricas utilizadas e dos algoritmos podem influenciar nos tempos gastos na execuo para encontrar o caminho mnimo em grafos. A metodologia aplicada consiste em executar os algoritmos para grafos do tipo grade com tamanho em quantidade de vrtices variados ,em um grande nmero de vezes. Ao final da execuo sero analisados os resultados gerados para cada um dos diferentes algoritmos e mtricas testadas. Com base nestas observaes ser possvel verificar quais so os algoritmos mais eficientes em tempo de execuo e de que forma os tamanhos de entrada e mtrica afetam os tempos obtidos.
5.Experimentos Realizados
Foram realizados testes utilizando cada um dos algoritmos descritos, bem como as diferentes mtricas para o algoritmo A*. Os grafos testados so do tipo grade , com nmero de vrtices variando de 3 x 3 at 20 x 20. Cada grafo foi executado 20 vezes para cada um dos algoritmos / Heursticas Ao final das execues , os tempos gastos foram salvos em arquivo gerando as tabelas e grficos que se seguem.
Tabela - 1.Mdia e desvio padro para 3x3. Grafo = 3 x 3 Dijkstra Bellman-Ford A* euclidiano A* manhattan A* chebyshev A* angular N
20 20 20 20 20 20
Min
9057 28532 817458 706500 689744 313396
Max
10416 34872 5542407 3865373 5585431 2793847 3035688
Media
9601,15 29550,70 1245728,30 894674,25 1090048,90 546450,90 617033,10
Desv.Pad
377,504 1353,632 1013122,499 699867,304 1068855,585 531958,544 573895,597
A*mahalanobis 20 372724
20 20 20 20 20 20 20
publicados sobre o assunto. As complexidades na notao O se confirmariam , como de fato tambm se confirmaram para os dados obtidos. O algoritmo de Bellman - Ford , que tem complexidade da ordem de O(|V |2|E|) ou O(|V |4) em grafos densos, demonstrou comportamento tpico de algoritmos desta ordem ,ou seja ,para valores pequenos produziu bons resultados, entretanto medida que os dados cresciam ,os tempos subiram rapidamente. Devido ao fato dos tempos terem sido medidos em nano segundos, o grfico-3 mostra que as variaes do desvio padro no puderam ser notadas facilmente , uma vez que o algoritmo produz tempos muitas vezes superiores aos demais. O grfico-1 mostra que Dijkstra experimentou os maiores desvios para os grafos situados na faixa entre 13 e 18 vrtices. Quanto complexidade apresentou resultados dentro das expectativas , sendo o melhor at a faixa dos 16 vrtices, sendo superado ento pelo A*. Conforme o grfico-.4 ficou evidenciado que a complexidade logartmica esperada para o algoritmo foi alcanada ,uma vez que os valores obtidos se mantiveram numa curva de elevao bem tnue durante toda a execuo, o que demonstra que somente grafos muito grandes comearo a produzir tempos tambm grandes. O algoritmo A* produziu desvios considerveis em todas as heursticas testadas, cada qual em uma faixa de dados. Conforme o grfico-2 possvel verificar uma oscilao bastante grande nos grafos 13x13 e 15 x 15 para a execuo das 20 iteraes da heurstica Manhatan. Essas oscilaes para os valores testados podem advir de instabilidades no processamento ou variaes de frequncia no clock dos processadores. Outras conjecturas so descritas na concluso. No aspecto complexidade , o esperado era que todas as heursticas de A* prevalecessem sobre Dijkstra, o que no foi verificado. As heurstica s comearam a fazer a diferena partir de grafos com 16 vrtices. Como sua complexidade da ordem de logaritmo da heurstica escolhida, o grfico-4 demonstra que o Algoritmo A* sempre produzir o melhor resultado , em termos de tempo de execuo para grafos maiores que 16x16. A inclinao da curva bastante suave, o que prova que a complexidade esperada foi atingida.
7. Concluses.
Muitos so os fatores para a escolha do melhor algoritmo de busca de caminhos mnimos. Com base nas observaes feitas, foi verificado que os algoritmos tiveram comportamentos diversos nas diferentes faixas de dados testadas. Para grafos com tamanhos de 3x3 at 10x10 o comportamento de todos os algoritmos foi bastante semelhante, com ligeira prevalncia do algoritmo de Dijkstra. partir dos testes de 16x16, Dijkstra tem um aumento maior que todas as heursticas do A*,sendo que Mahalanobis e distncia angular se mantem at a execuo de 20x20 como a melhor escolha. As Heursticas Chebyshev, Euclidiana e Manhatan no foram suficientes, para na faixa de dados testados oferecerem uma melhora substancial do algoritmo A* frente ao Dijkstra. Quanto ao algoritmo de Bellman- Ford , ficou demonstrado que para grafos com tamanho reduzido de vrtices , seu desempenho prximo aos demais, entretanto ,
partir de 10 vrtices a curva comea a dominar sobre as outras, experimentado uma acelerao explosiva partir de 16 vrtices. Diante deste fato ,seu uso s recomendado , em caso de grafos maiores, se existir a certeza de estar trabalhando com arestas de peso negativo. Foi verificado que entre 12 e 16 vrtices ocorreu uma anomalia na execuo de A*,aparecendo picos de variao muito grandes nos tempos . A explicao pode estar no ambiente de execuo, pois o processamento do computador pode ter sido afetado por algum processo do prprio sistema operacional rodando em paralelo. A explicao bem plausvel diante do fato de que a execuo das heursticas A* terem sido feitas em separado em relao aos outros algoritmos. Outro verificao intrigante verificado reside no fato de que as primeiras iteraes da maioria dos algoritmos resultou em tempos bem mais altos que a mdia dos prximos laos. A explicao est no fato de que a mquina virtual JAVA se utiliza da cache para otimizar a execues das novas iteraes. Para grafos de tamanho grande como por exemplo 40x40, no foi possvel realizar a execuo devido ao fato de ter ocorrido estouro de memria. Isto posto , conclui-se que para a maior parte das simulaes, em mdia, o algoritmo A* produz a soluo com melhor custo em tempo computacional, entretanto, com um consumo de memria bastante elevado em relao aos outros algoritmos.
Bibliografia: [1] http://www.ime.usp.br/~pf/algoritmos_para_grafos/aulas/dijkstra.html - Acessado em 11/2011 [2]http://homepages.dcc.ufmg.br/~tavares/grafos/Trabalho_final/Algoritmo A Estrela.pdf Acessado em 11/2011 [3] http://www.lcad.icmc.usp.br/~nonato/ED/Dijkstra/node84.html - Acessado em 11/2011 [4] http://www.inf.ufsc.br/grafos/temas/custo-minimo/dijkstra.html - Acessado em 11/2011 [5]http://people.revoledu.com/kardi/tutorial/Similarity/ChebyshevDistance.html Acessado em 11/2011 [6] http://www.lia.ufc.br/~wladimir/gemp/aulas/Algoritmo em Grafos - Acessado em 11/2011 [7] http://www.dq.fct.unl.pt/qof/chem9.html - Acessado em 11/2011