Sei sulla pagina 1di 11

Caminhos mnimos em grafos - A influncia da mtrica na determinao dos resultados

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,

O caminho de custo mnimo calculado pela frmula abaixo.

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.

Fig1-Mapa rodovirio com variadas rotas entre as

cidades incio e objetivo.

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.

2.Algortmos de Caminhos Mnimos


A - Algoritmo de Dijkstra O algoritmo Dijkstra foi desenvolvido pelo cientista da computao Edsger Dijkstra e tem aplicao para busca do caminho mnimo em grafos com pesos das arestas no negativos. Est entre os mais aplicados para a resoluo do problema. Partindo do vrtice inicial, o algoritmo calcula o custo mnimo entre este e todos os demais vrtices do grafo. A cada iterao do algoritmo busca-se nas adjacncias dos vrtices aquele com menor distncia ,recalculando sempre que encontrado um caminho menor. As melhores escolhas entre cada par de vrtices, conduz uma escolha tima. Por ser um algoritmo cego possui a desvantagem de testar caminhos que correm em direo oposta ao destino procurado. um algoritmo de fcil implementao e com bom nvel de performance. Possui complexidade e O((|V | + |E|)log |V |) onde E representa o nmero de arestas e V o nmero de vrtices.

Fig2-Exemplo de execuo de Dijkstra em um grafo dirigido.

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.

Custo=CustoAcumulado(Origem,V) + Custo(V,Vn) + Custo(Vn, Destino)

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

angular entre dois vetores.

3.Mtricas para Utilizao no Algoritmo A*


3.1 Distncia Chebyshev Tambm conhecida como distncia tabuleiro, pois no tabuleiro de xadrez representa o nmero mnimos de movimentos que o rei necessita fazer para ir de um ponto at outro. No plano bidimensional a distncia Chebyshev pode ser calculada pela seguinte equao, onde o resultado obtido corresponde ao valor mximo calculado entre os mdulo das diferenas das coordenadas do ponto de origem e destino.

Fig3-distncia Chebyshev de cada quadrado no tabuleiro.

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.

Fig-4 Comparao entre as distncias Euclidiana e Manhatan.

3.5 Distncia angular entre dois vetores. Distncia baseada no ngulo formado ente dois vetores em um plano.

Abaixo a frmula para o calculo do ngulo q formado entre dois vetores.

O mdulo ou comprimento do vetor v=(a, b) um nmero real no negativo, definido por:

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

n=nmero de execues tempo em nano segundos

Tabela- 2.Mdia e desvio padro para 15x15.


Grafo =15 x 15 n Min Max Mdio Desv.Pad

Dijkstra Bellman-Ford A* euclidiano A* manhattan A* chebyshev A* angular A*mahalanobis

20 20 20 20 20 20 20

2888941 85659190 3090940 3170648 3071013 1508560 1427947

23147754 88725660 184708700 193714771 188156061 94441471 85333953

4548394,15 86371415,75 14940721,80 15972575,00 15171761,05 8093281,60 6846692,95

4686745,074 816479,817 40622994,607 42811993,600 41388989,638 20717059,185 18763290,348

n=nmero de execues tempo em nano segundos

Tabela- 3.Mdia e desvio padro para 20x20.


Grafo=20 x 20 Dijkstra Bellman-Ford A* euclidiano A* manhattan A* chebyshev A* angular A*mahalanobis n 2 0 2 0 2 0 2 0 2 0 2 0 2 0 Min 9178126 43499816 1 7914619 8045502 7791887 3597265 3550619 Max 87759207 445138664 48957776 48897542 46069275 22901037 20406546 Mdia 13230296,55 437879402,7 5 11024761,00 10959907,90 10792929,05 5076501,40 4838646,10 Desv.Pad 17542417,146 3112597,009 9377989,771 9252607,130 8786292,818 4309774,588 3791046,648

n=nmero de execues tempo em nano segundos

Grfico-1.Mdia,mximos e mnimos para o algortmo de Dijkstra.

Grfico-2.Mdias,mximos e mnimos para A* Manhatan

Grfico-3.Mdias,mximos e mnimos para Belman_ford

Grfico-4.Desempenho geral dos algortmos.

Grfico-5.Mdia dos algoritmos excluindo Belman-Ford

6. Anlise de complexidade e Desvio Padro.


Com base na anlise dos dados obtidos possvel afirmar que com relao complexidade dos algoritmos, os resultados obtidos ficaram ,no geral ,bem prximos dos esperados. A simulao se deu em um universo limitado de dados, com grafos de tamanho relativamente pequenos para o poder computacional dos processadores modernos. Se os experimentos fossem realizados em uma faixa mais abrangente de dados os resultados mdios se aproximariam cada vez mais daqueles descritos nos trabalhos

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

Potrebbero piacerti anche