Você está na página 1de 6

Estudo e Implementao de Algoritmos de Roteamento sobre Grafos em um Sistema de Informaes Geogrficas

RUDINI MENEZES SAMPAIO1 HORCIO HIDEKI YANASSE2


1 UFLA Universidade Federal de Lavras DCC Departamento de Cincia da Computao rudini@comp.ufla.br

INPE Instituto Nacional de Pesquisas Espaciais LAC - Laboratrio Associado de Computao e Matemtica Aplicada horacio@lac.inpe.br RESUMO Este artigo discute alguns dos principais algoritmos de roteamento em grafos, como menor caminho, rvore de custo mnimo, carteiro chins e caixeiro viajante, e apresenta sua implementao em um Sistema de Informaes Geogrficas. Palavras-Chave. Pesquisa Operacional, Algoritmos de Roteamento, Teoria dos Grafos. 1. Introduo Nesse documento, apresenta-se um estudo de alguns dos principais problemas de roteamento em grafos, como Menor Caminho, rvore de Custo Mnimo, Carteiro Chins e Caixeiro Viajante, bem como o desenvolvimento e a implementao em um Software grfico e prtico de algoritmos que os solucionem em tempo hbil. Descreve-se ainda o desenvolvimento de um aplicativo que permite a visualizao e manipulao de grafos sobre arquivos de figura e a execuo dos algoritmos desenvolvidos sobre diversos contextos, possibilitando o seu uso em casos de Fotos de Satlites, GPS, Mapas e outros. 2.1 Algoritmo de Dijkstra: Entre um dado ponto e os demais No algoritmo de Dijkstra, o objetivo obter o menor caminho entre um dado vrtice fixo e todos os demais vrtices do grafo. Por exemplo, saber a distnica mnima de So Paulo para todas as cidades do Estado. O algoritmo consiste basicamente em fazer uma visita por todos os ns do grafo, iniciando no n fixo dado e encontrando sucessivamente o n mais prximo, o segundo mais prximo, o terceiro mais prximo e assim por diante, um por vez, at que todos os ns do grafo tenham sido visitados. Na figura 1, exemplificamos a execuo do algoritmo de Dijkstra no Sistema, com um grafo sobre um mapa de uma cidade, cujas arestas representam as ruas. 2.2 Algoritmo de Floyd: Entre todos os pares de pontos muito comum o caso de ser necessrio o menor caminho entre todos os pares de ns de um grafo. Como exemplo podemos citar a preparao de tabelas indicando distncias entre todas as cidades em mapas rodovirios de estados ou regies, ou obter o menor caminho que parta de um n dado, passe por alguns ns intermedirios dados em ordem de prioridade e chegue em um n final. Possui muitas aplicaes, como entrega de encomendas em hora marcada por empresas distribuidoras de produtos, etc.

2. Menor caminho O problema do menor caminho bastante conhecido e tem como objetivo obter um percurso mnimo entre dois ou mais vrtices de um grafo. Neste caso, um grafo pode representar uma malha rodoviria, distncias geogrficas e etc... Alm de ser clara a aplicabilidade dessas tcnicas para o problema de motoristas, correios ou servios de emergncia, existe uma motivao muito mais importante para se comear a estud-los: a determinao dos menores caminhos aparece constante e consistentemente como um subproblema de problemas mais complexos em grafos.

Execuo em verde para a seqncia de ns 7 56 60 21 63, sobre o tabuleiro.

Figura 1: Algoritmo de Dijstra sobre Mapas Uma soluo bvia repetir o algoritmo de Dijkstra sucessivamente para todos os ns do grafo. Uma soluo mais eficiente conhecida como algoritmo de Floyd, que utiliza programao dinmica. A idia geral desse algoritmo atualizar a matriz de menores distncias n vezes (onde n o nmero de ns do grafo) procurando na K-sima interao por melhores distncias entre pares de ns que passem pelo vrtice K. Nas figuras 2, 3 e 4, exemplificamos a execuo do algoritmo de Floyd no Sistema, com um grafo com as possveis jogadas do Cavalo no tabuleiro de xadrez, um grafo com uma fotografia de satlite, onde as arestas representam as rodovias, e outro grafo com o mapa da cidade de So Jos dos Campos, em So Paulo, onde as arestas representam as ruas.

Figura 3: Algoritmo de Floyd sobre Fotos de Satlite Execuo em verde para a seqncia de ns 3, 31, 27, 23, 39, 10, 41 e 3, sobre a foto de satlite

Figura 4: Algoritmo de Floyd sobre Mapas Execuo em verde para a seqncia de ns 6555-17-38-60, representando os pontos tursticos da cidade.

Figura 2: Algoritmo de Floyd sobre o Tabuleiro

3. rvore de custo mnimo (Algoritmo de Prim) O Problema da rvore de Custo Mnimo encontrar uma rvore que contenha todos os vrtices do grafo e cuja soma das arestas seja mnima. Este problema aparece, por exemplo, no seguinte contexto: dado um mapa de n cidades rurais com uma matriz listando as distncias euclidianas entre todos os pares possveis de cidades e deseja-se obter o menor comprimento de rodovias necessrias para unir todas elas. Outro contexto importante seria para auxiliar na deciso de onde se localizar postos de emergncia ou delegacias de polcia em uma cidade, por exemplo. Alm dessas aplicaes, a soluo desse problema de grande utilidade para a soluo de outros problemas mais complexos em grafos, tais como o do caixeiro viajante. O Algoritmo de Prim um algoritmo guloso cuja idia bsica : Escolhendo um n arbitrrio inicialmente, visite todos os ns do grafo escolhendo como prximo a ser visitado o n mais perto de um dos vrtices j visitados. Nas figuras 5 e 6, exemplificamos a execuo do algoritmo de Prim no Sistema, com um grafo sobre um mapa de uma cidade, onde as arestas representam as ruas, e outro grafo com uma fotografia de satlite, onde as arestas representam as rodovias.

Figura 6: Algoritmo de Prim sobre Fotos de Satlite A questo mais natural a se perguntar : a fim de minimizar a distncia total que o carteiro percorre, como dever ser a sua rota de forma que ele passe por todas as ruas ao menos uma vez ? Essa questo conhecida como o Chinese Postman Problem, nome derivado do fato de ter sido no jornal Chinese Mathematics em 1952 a primeira vez em que esse problema foi discutido. A histria desse problema bastante interessante. No sculo XVIII, os moradores da cidade russa de Knigsberg queriam realizar um desfile que pudesse passar pelas sete (Figura 7) pontes sobre o rio Prevel apenas uma vez e passaram o problema para o matemtico suo Leonhard Euler resolver.

Figura 7: Pontes de Knigsberg Euler provou que no existe soluo para esse problema e que, para isso, nenhum vrtice do grafo pode ter grau mpar. Assim, para se realizar um ciclo euleriano em um grafo, este dever ser modificado de modo a tornar de grau par todos os seus ns de grau mpar. Para isso, necessrio combinar dois a dois todos os seus ns de grau mpar. Esse problema de combinao chamado de Pairwise Matching, e foi resolvido por Edmonds. Em alto nvel, o algoritmo de soluo do carteiro chins :

Figura 5: Algoritmo de Prim sobre Mapas 4. Carteiro Chins Considere o caso de um carteiro responsvel pela correspondncia de uma rea da cidade. O carteiro dever sempre comear o percurso em um n inicial (os Correios), dever passar por todas as ruas (arestas) e retornar ao n inicial.

PASSO 1: Seja M o conjunto de todos os ns de grau mpar do grafo. Digamos que existam m deles. PASSO 2: Encontre a combinao de pares de ns de M cuja soma das distncias seja mnima. PASSO 3: Encontre as arestas dos menores caminhos entre os dois ns que compem cada um dos m/2 pares obtidos no passo 2. PASSO 4: Para cada um dos pares obtidos em passo 2, adicione ao grafo as arestas obtidos no passo 3. O grafo resultante no contm n de grau mpar. PASSO 5: Encontre um Ciclo Euleriano, que a soluo para o problema do carteiro chins. 4.1 Ciclo Euleriano O ciclo Euleriano um percurso que comea em um n de partida, passa por todos os ns do grafo e termina no n de partida. A obteno do Ciclo Euleriano depende da execuo do algoritmo de Matching, pois o grafo no pode conter ns de grau mpar. PASSO 1: Se no existem ns adjacentes ao n de partida, ento PARE. O Ciclo euleriano j foi descrito. Caso contrrio, v para PASSO 2. PASSO 2: Dos ns adjacentes ao n de partida escolha um cuja aresta que o ligue ao n de partida no seja uma Ponte (ou seja, a sua eliminao no torna o grafo desconexo) e v para ele. Elimine do grafo a aresta entre esses ns. Faa o n de partida ser esse novo n escolhido. V para PASSO 2. O problema em si est no conceito de aresta Ponte ou Bridge. Para sabermos se uma aresta ponte ou no, deveremos elimin-la do grafo e verificar se o grafo resultante ou no conexo. Na figura 8, exemplificamos a execuo do algoritmo do Carteiro Chins no Sistema, com um grafo sobre uma fotografia de satlite, onde as arestas representam rodovias. Note que algumas arestas esto duplicadas, pelo matching.

5. Caixeiro Viajante De todos os problemas de cobrimento de ns, o mais conhecido o Problema do Caixeiro Viajante, cujo objetivo encontrar a rota de menor distncia que inicie em um dado n de um grafo, visite todos os membros de um conjunto especfico de ns do grafo uma nica vez e retorne ao n inicial. Para esse problema, assumimos uma particularizao muito utilizada, que quando o grafo totalmente conectado e satisfaz a desigualdade triangular. Mesmo assim, esse problema ainda NPDifcil. Assim, ao invs de buscar algoritmos exatos, mais interessante tentar obter algoritmos polinomiais aproximativos. O algoritmo aproximativo utilizado foi desenvolvido por Christofides em 1976, que provou que o percurso obtido no maior que 50% do timo. O algoritmo, descrito a seguir, pode ainda ser melhorado adicionando as otimizaes OPT2 e OPT3. PASSO 1: Encontre a rvore T de custo mnimo do grafo. PASSO 2: Seja n0 o nmero de ns de grau mpar dos n ns de T (n0 par). Encontre o matching mnimo dos pares desses n0 ns (Edmonds). Seja M o grafo das arestas da soluo do matching. Seja H=MUT, um grafo. PASSO 3: O grafo H no contm ns de grau mpar. Encontre um Ciclo Euleriano sobre H, que a soluo aproximada do problema do Caixeiro Viajante. Na figura 9, exemplificamos a seqncia de execuo do algoritmo. Nesse exemplo, o percurso obtido no chega a ser 1% pior que o percurso timo. Nas figuras 10 e 11, exemplificamos a execuo do algoritmo aproximativo do Caixeiro Viajante no Sistema, com um grafo semelhante ao da figura 9, e com um grafo sobre o tabuleiro de xadrez. 6. Concluses Este trabalho foi desenvolvido em um projeto do LAC/INPE voltado para a implementao de algoritmos em Sistemas Geogrficos de Informao, como o software ARC-INFO (ESRI), em uso no projeto. Este trabalho foi desenvolvido ainda permitindo a possvel introduo de novos algoritmos ao sistema, tornando-se uma boa ferramenta de comparao dos algoritmos de roteamento em grafos. Outros algoritmos ainda devem ser implementados, como Carteiro Chins em Grafos Orientados, Rural Postman Problem, Carteiro Chins com Capacidade da Mochila e Problemas de Localizao de Facilidades (p-medianas)

Figura 8: Carteiro Chins sobre Fotos de satlite

Figura 11: Caixeiro Viajante sobre o Tabuleiro O Sistema implementado permite ainda a manipulao grfica da estrutura do grafo, possibilitando a incluso de novos ns e arestas, bem como o seu reposicionamento, como pode ser visto na figura 12.

Figura 9: Seqncia de Passos do Caixeiro Viajante

Figura 12: Reposicionamento de vrtices no Sistema O sistema permite ainda a visualizao em zoom do grafo e da execuo dos algoritmos, como pode ser visto na figura 13. Figura 10: Caixeiro Viajante no Sistema

Figura 13: Visualizao do grafo em zoom no Sistema

7. Bibliografia [1] Cormen, T.; Leiserson, C.; Rivest, R., Introduction to Algorithms, MIT Press, 2 edio, 2001. [2] Papadimitriou, C.; Steiglitz, K., Combinatorial Optimization Algorithms and Complexity, Dover Publications, Mineola, New York, 1998. [3] Aho, A.V.; Hopcroft, J.E.; Ullman, J.D., The Design and Analysis of Computer Algorithms, Addison-Wesley, 1974. [4] Larson, R.C.; Odoni, A.R., Research, Prentice Hall, 1981. Urban Operations Algoritmos e

[5] Campello, R.E.; Maculan, N., heursticas, EDUFF, 1994.

Você também pode gostar