Anda di halaman 1dari 10

Grafos: algoritmo de busca do menor caminho entre os pontos tursticos de So Lus Ma

Francisco AdeltonRibeiro, Jos Wilker Luz, Joo Batista Paiva Junior e Lidinalva de Almada Coutinho 4 Email: adelton@ifma.edu.br,josewilkerluz@ifma.edu.br,jbpaivajr@gmail.com4lidi_almada@hotmail.com

Resumo Abstract 1 Introduo Os grafos so estruturas de dados muito utilizados na representao de problemas da vida real, com aplicao em vrias reas do conhecimento.Nesta perspectiva, convm destacar que das inmeras utilizaes dos grafos como: anlise de circuitos, anlise e planejamento de projetos, gentica, lingustica, cincias sociais, robtica entre outras, uma delas a otimizao de percursos, podendo, atravs de algoritmos especficos determinar o caminho mais curto entre dois pontos, ou o caminho mais econmico. Um dos algoritmos mais utilizados para resolver o problema do Caminho Mnimo o algoritmo de Dijkstra. Este algoritmo garante a obteno do caminho timo entre um n de referncia do grafo e os demais. Esse algoritmo mais eficiente porque no avalia o grafo como um todo, mas apenas os ns mais promissores, usando para isso uma funo heurstica. Assim, em uma cidade, as rotas que ligam diversos pontos tursticos podem ser representadas atravs de um grafo. Por meio da conjugao do uso de um grafo e do Algoritmo de Dijkstra possvel calcular o caminho mais curto para realizar determinado percurso. Nas ltimas dcadas, a revoluo das comunicaes tem provocado uma exploso na comunicao sem fio, permitindo uma capacidade crescente de conectividade e largura de banda dos dispositivos mveis, possibilitando o aumento da utilizao de aplicativos que passaram a ganhar destaque entre usurios e desenvolvedores.Entretanto, para garantir o uso mais efetivo e eficaz em smartphones, dispositivos e-reader e tablets destaca-se o sistema operacional Android, que vem impulsionando a inovao na tecnologia mvel, melhorando a experincia dos usurios e reduzindo os custos. Os aplicativos Android so desenvolvidos com Java a linguagem de programao mais usada do mundo. Essa linguagem foi uma escolha lgica para a

plataforma Android, porque poderosa, gratuita e de cdigo-fonte aberto. O Java usado para desenvolver aplicativos empresariais de larga escala, melhorar a funcionalidade de servidores Web, fornecer aplicativos para aparelhos de consumidor e para muitos outros propsitos. Alm de permitir desenvolver aplicativos utilizando grafos que so executados em uma variedade de dispositivos, sem nenhum cdigo especfico para a plataforma. Deste modo, delimita-se a seguinte questo: como conseguir o menor caminho entre os principais pontos tursticos de So Lus-Ma, utililizando o algoritmo Dijkstra. Assim sendo, o objetivo deste artigo est em integrar tcnicas computacionais de programao, tendo como base o algoritmo de Dijsktra para a soluo de problemas, usando clculo para o custo mnimo com informaes em tempo real obtidas atravs do uso de API do Google Maps, o qual facilita a busca de pontos tursticos importantes na cidade de So Lus-MA. Para tanto objetiva-se tambm: descrever o funcionamento do referido algoritmo, permitindo a sua implementao a nvel informtico; apresentar detalhes de sua implementao de grafos, detalhando as estruturas de dados utilizadas e a API (mtodos de criar, adicionar vrtices, arestas, percorrer etc.); fazer uma anlise terica sobre correo e a complexidade do algoritmo utilizado pararesolver o problema proposto; fazerprevisestericas sobre limite de tamanho de problema resolvvel e quantidade de tempo necessrio; realizar experimentos para verificar se a performance das operaes implementadas esto de acordo com anlise terica; utilizar conjuntos de dados grandes o suficiente para demonstrarque sua anlise teoria esta correta. Nesse trabalho, prope-se uma metodologia para determinar o caminhode menor custo entre dois pontos em uma dada regio. Essa regioser representadapor um mapa do googlemaps. Atualmente, esta ferramenta disponibiliza mapas e rotas para qualquer ponto em vrios pases como Estados Unidos, Canad, na Unio Europeia, Austrlia e Brasil, entre outros. Disponibiliza tambm imagens de satlite do mundo todo, com possibilidade de um zoom nas grandes cidades, como Nova Iorque, Paris, So Paulo, Rio de Janeiro, Braslia, So Lus entre outras. Para alcance dos objetivos propostos neste artigo, necessrio uma sistematizao das informaes relevantes para a construo do aplicativo para dispositivos mveis que garanta boa interatividade durante todo processo de interao. Ressaltando os elementos cruciais que compem o referido aplicativo, que apresenta a utilizao de grafos atravs do algoritmo Dijkstrae que tem como base o aplicativo googlemaps atravs da plataforma Android. Desta forma, busca-se desenvolver uma

ferramenta computacional que garanta aos usurios de dispositivos mveis utilizarem a plataforma Androidpara determinar o caminho de menor custo entre os principais pontos tursticos da cidade de So Lus-Ma. O artigo est estruturado da seguinte forma: na seo 2, descreve-se aos estudos dos Grafos, especificando o uso do algoritmo Dijkstra; a seo 3,refere-seao Sistema OperacionalAndroid, objetivando reflexes luz dos tericos xxxxxxxx, no sentido de uma fundamentao para o uso de ambientes de dispositivos mveis;na seo 4, apresenta-se O Google Maps no contexto tecnolgico, contribuindo para o desenvolvimento do aplicativo, possibilitando o uso mais interativo no desenvolvimento de habilidades que sero teis para uma prtica eficiente e eficaz, que corresponda aos anseios da sociedade em constante transformao; a seo 5 aborda sobre a metodologia utilizada, incluindo a implementao do algoritmo Dijkstra e a sua complexibilidade; e, na seo 6, so apresentadas as consideraes finais. Espera-se que as ideias e concepes apresentadas neste trabalho tragam valiosas contribuies no contexto da sociedade atual, possibilitando a formao de redes sociais e comunidades virtuais.

2 Grafos

De acordo com (FEOFILOFF, 2005, p.8), a palavra grafo um neologismo derivado da palavra graph em ingls. A teoria dos Grafos tendo suas razes em jogos e recreaes matemticas, atribui-se a sua criao a Euler, ao resolver o problema das pontes de Knigsberg em 1736, mas foram os problemas acerca de formulas estruturais de compostos qumicos, que A. Cayley resolveu na segunda metade do sculo XIX, que a comearam a desenvolver. Ela foi usada pela primeira vez no sentido que nos interessa aqui pelo matemtico ingls James Josheph Sylvester (1814 1897). Podemos conceituar Grafos como um conjunto de elementos (ns ou vrtices) que se relacionam de alguma maneira atravs de arcos ou arestas, tais relaes podem possuir valor ou no, usando uma linguagem mais formal podemos conceituar Grafos como G = {V,E}, onde: V um conjunto de ns ou vrtices e E um conjunto de relaes (arcos ou arestas) entre ns (vizinhos).

2.1 Aplicaes dos grafos

Desde a primeira aplicao dos grafos, estes tm sido utilizados numa ampla variedade de aplicaes. Algumas consistem de: anlise de circuitos eltricos, verificao de caminhos mais curtos, anlise de planejamento de projetos, identificao de compostos qumicos, mecnica estatstica, gentica, ciberntica, lingustica, cincias sociais, etc. Pode-se dizer que de todas as estruturas matemticas so os grafos que se encontram em mais amplo uso. Os grafos so estruturas de dados presentes em cincia da computao, e os algoritmos para trabalhar com eles so fundamentais na rea. Existem centenas de problemas computacionais interessantes definidos em termos de grafos. 2.2 Classificao dos grafos Existem vrios tipos de Grafos que podemos classificar em: Dirigidos ou nodirigidos; Cclicos ou acclicos e Conexo ou desconexo. Mas tambm existe outra classificao importante: implcito e explcitos, os Grafos explcitos so mais comuns e fceis de trabalhar, os Grafos implcitos surgem em vrios problemas, quando conseguimos modelar um problema como um grafo, ele se torna muito mais fcil. Vrios problemas interessantes (e famosos) da cincia da computao so modelados utilizando Grafos: Menor caminho entre ns, rvores geradoras mnimas, fluxos em rede, problema do caixeiro viajante, problema da colorao, etc. H vrios fatores que devem ser levados em considerao ao implementar-se um algoritmo: consumo de tempo, consumo de espao e o grau de dificuldade da codificao. 2.3 O algoritmo de Dijkstra De acordo com (NONATO, 2004), o algoritmo de Dijkstra o mais famoso dos algoritmos para clculo de caminho de custo mnimo entre vrtices de um grafo e, na prtica, o mais empregado. Escolhido um vrtice como raiz da busca, este algoritmo calcula o custo mnimo deste vrtice para todos os demais vrtices do grafo. O algoritmo pode ser usado sobre grafos orientados (dgrafos), ou no, e admite que todas as arestas possuem pesos no negativos (nulo possvel). Esta restrio perfeitamente possvel no contexto de redes de transportes, onde as arestas representam normalmente distncias ou tempos mdios de percurso; podero existir, no entanto, aplicaes onde

as arestas apresentam pesos negativos, nestes casos o algoritmo no funcionar corretamente.

2.4 Representao grfica do funcionamento do algoritmo de Djisktra Em resumo de acordo com (SILVA, 2009, p.42 e 43), o algoritmo parte de uma estimativa inicial para o custo mnimo e vai sucessivamente ajustando esta estimativa. Escolhido um vrtice como raiz, este algoritmo calcula o custo mnimo deste vrtice para todos os demais vrtices do grafo, mas no necessariamente o caminho de custo mnimo passar por todos os vrtices do grafo. Um vrtice estar escaneado (fechado) quando j tiver sido obtido um caminho de custo mnimo do vrtice raiz at ele. Caso contrrio o vrtice dito estar no escaneado (aberto). A execuo do algoritmo estar terminada quando todos os vrtices estiverem escaneados. 2.5 Passos para utilizar o algoritmo de Dijkstra: 1. Atribua valor zero ao vrtice raiz s e valor infinito aos demais vrtices do grafo G(V,A). O vrtice raiz encontra-se aberto. d[s] = 0, p[s] = -, d[t] = 8 para qualquer t tal que t G(V,A) e t s; 2. Os sucessores de s so abertos. A cada sucessor de s atualize d[.] e p[.] e feche o vrtice s. S = {s}; 3. Enquanto houver vrtice aberto: Escolha k o vrtice aberto cuja estimativa seja a menor dentre todos os vrtices abertos; Feche o vrtice k e atualize S; Para os vrtices j adjacentes (sucessores) de k faa: Some a estimativa do vrtice k com o custo da aresta que une k a j, d[k] +w(k,j) ; Caso esta soma seja melhor que a estimativa anterior para o vrtice j, substitua-a e anote k como precedente de j, atualize d[j] e p[j] ;. 4. O menor caminho de s a v < s,..., p[p[p[v]]], p[p[v]], p[v], v >. Fim.

EXEMPLO DO FUNCIONAMENTO DO ALGORITMO DE DIJKSTRA (CORMEN, 2002)

2.6 Complexidade do algoritmo de Dijsktra De acordo com (Neves, 2007, p.11) a complexidade do algoritmo de Dijkstra como um todo depende da forma como implementado o conjunto Q e as operaes que o manipulam a fila de prioridades. A complexidade do algoritmo de Dijkstra implementando a fila como uma lista no ordenada O(n), onde n o nmero de vrtices do grafo de entrada. Esta variao geralmente referenciada como implementao ingnua"(naive implementation). Talvez a primeira e mais significativa contribuio para reduzir a complexidade da implementao ingnua tenha sido feita por Donald Johnson que introduziu a estrutura de dados denominada heap k-rio. Esta variao melhora o comportamento assinttico do algoritmo de Dijkstra para grafos esparsos. Implementando-se este algoritmo com um heap binrio (k = 2), sua complexidade melhorada de O(n2) para O((m + n) log n), onde m denota o nmero de arestas.

3 Viso geral do Android O sistema operacional Android foi desenvolvido pela Android, Inc., adquirida pelo Google em julho de 2005. Em novembro de 2007, foi formada a Open Handset Alliance um consrcio compost inicialmente de 34 empresas e agora contando com 81 (www.openhandsetalliance.com/oha_members.html) para desenvolver o Android, impulsionando a inovao na tecnologia mvel, melhorando a experincia do usurio e reduzindo os custos. O Android utilizado em inmeros smartphones, dispositivos ereader e tablets.

A primeira gerao de telefones Android foi lanada em outubro de 2008. De acordocom a Gartner, as vendas de telefones baseados em Android nos Estados Unidos aumentaram707% no primeiro trimestre de 2010, em relao ao ano anterior (Deitel, 2013 p. 4).

Em maro de2011, um estudo da Nielsen mostrou que o Android tinha 37% da fatia de mercado de smartphones nos Estados Unidos, comparados com 27% do iPhone da Apple e 22% do Blackberry. A demanda por dispositivos mveis est aumentando medida que mais pessoas contam com smartphones e tablets para se conectar e produzir enquanto esto longe de seus computadores pessoais. De acordo com a com Score, 234 milhes de norte-americanos usaram dispositivos mveis em um perodo de trs meses terminando em julho de 2011. Desses assinantes, 40,6% usaram aplicativos. A feroz competio entre as plataformas mveis populares (Android, BlackBerry, iPhone, Palm, Symbian, Windows Phone 7 e outras) e entre as empresas de telefonia mvel est levando rpida inovao e queda nos preos. A concorrncia entre as dezenas de fabricantes de dispositivos Android impulsiona a inovao de hardware e software dentro da comunidade Android. Existem agora mais de 300 dispositivos Android diferentes. 3.1 Franqueza e cdigo-fonte aberto Uma vantagem de desenvolver aplicativos Android a franqueza (ou grau de abertura) da plataforma. O sistema operacional de cdigo-fonte aberto e gratuito. Isso permite ver o cdigo-fonte do Android e como seus recursos so implementados. Voc tambm pode contribuir para o Android relatando erros ou participando nos grupos de discusso do Open Source Project (source.android.com/community/index.html). 3.2 Java Os aplicativos Android so desenvolvidos com Java a linguagem de programao mais usada do mundo. Essa linguagem foi uma escolha lgica para a plataforma Android, porque poderosa, gratuita e de cdigo-fonte aberto. O Java usado para desenvolver aplicativos empresarias de larga escala, melhorar a funcionalidade de servidores Web, fornecer aplicativos para aparelhos de consumidor (por exemplo, telefones celulares, pagers e assistentes digitais pessoais) e para muitos outros propsitos.

O Java permite desenvolver aplicativos que so executados em uma variedade de dispositivos, sem nenhum cdigo especfico para a plataforma. Os programadores Java experientes podem se aprofundar rapidamente no desenvolvimento com Android, usando as APIs (interfaces de programao de aplicativo) Android e outras disponveis de terceiros. O grau de abertura da plataforma estimula a rpida inovao. O Android est disponvel em dispositivos de dezenas de fabricantes de equipamento originais (OEMs original equipmentmanufacters ) em 48 pases, por meio de 59 empresas de telefonia. A intensa concorrncia entre os OEMs e as empresas de telefonia beneficia os clientes. A linguagem Java orientada a objetos e tem acesso a poderosas bibliotecas de classe que ajudam a desenvolver aplicativos rapidamente. A programao de interfaces grficas do usurio com Java baseada em eventos. 3.3 Android e suas verses Cada nova verso do Android recebe um nome de sobremesa, em ingls, em ordem alfabtica: Primeira verso do Android foi a 1.6, conhecida como Donut; Em janeiro de 2010, o Google lanou o Android 2.1 Eclair; Maio de 2010, chega o Android 2.2 Froyo; Android 2.3 Gingerbread chega para os smartphones em dezembro de 2010; Para os tablets, o Android 3.0 Honeycomb chega em janeiro de 2011, que a verso mais recente do sistema dedicado aos smartphones. Comparado ao Android de 2009, o Gingerbread praticamente outro sistema operacional, bem mais moderno e prtico. Sua interface foi totalmente remodelada para tornar o sistema mais simples e rpido, tanto para usurios j acostumados com o Android quanto para os novos. Os menus foram modificados e o tema tambm, com maior contraste nas cores. O teclado virtual ficou mais confortvel e agora inclui sugestes de dicionrio para auto completar a digitao. O copiar e colar tambm ficou mais simples e pode ser feito com apenas um toque, segurando e arrastando o dedo pela tela para selecionar o texto. 4 Google Maps A popularizao dos servios baseados em localizao tm produzido uma

srie de aplicaes em rastreamento de locais, pacotes e pessoas, identificao de rotas, alm de promover o uso de localizao em aplicaes de presena mvel e de redes sociais. De fato, h um interesse evidente no desenvolvimento de aplicaes baseadas em mapas e sensveis a localizao e, na pesquisa em computao ubqua, que faa um uso dos mecanismos de computao sensvel ao contexto para torn-las flexveis, dinmicas e adaptativas [Endler et al. 2010]. Existem diversas empresas e instituies que disponibilizam bases de mapas, tais como NASA, Microsoft, Yahoo e Google. Associado a cada um desses provedores, tipicamente existe um framework para desenvolvimento de aplicaes que permitem consultar e integrar seus mapas a aplicaes de propsito especfico. O Google Maps um exemplo de framework, disponvel em plataformas como Android, iPhone OS e navegadores web. Esses frameworks so fortemente acoplados uma nica base de mapas e com uma semntica de localizao bem definida, sendo tipicamente, coordenadas geo espaciais baseadas em latitude e longitude. O Google Maps, um sistema para visualizao de mapas na Web, com o diferencial de ser rpido e interativo. A localizao dos pontos nos mapas feita a partir de sua latitude e longitude e esta informao administrada pelo prprio usurio. Estes dados so obtidos atravs de dos servios de geocoding disponveis gratuitamente na Internet. Um dos grandes diferenciais do Google Maps que existe uma API (Application Programing Interface) para JavaScript, que possibilita a sua utilizao e integrao, gratuitamente, com qualquer pgina Web. A interatividade um outro diferencial que o Google Maps oferece. Pode-se clicar vrias vezes sobre os mapas e se movimentar sobre o mesmo, visualizar determinadas zonas com mais detalhes atravs de zoom e tambm escolher o tipo do mapa, sem necessidade de recarregar a pgina, tudo isso de forma fcil e intuitiva, essa API disponibiliza vrios mtodos para manipulao dos mapas. O Google Maps uma das ltimas inovaes que a empresa Google disponibilizou na Web. Permitindo que os usurios visualizem e interajam com os mapas em diferentes localizaes no globo. Um grafo consiste em um conjunto N de ns ou vrtices e um conjunto A de arcos ou arestas, que representam as ligaes entre os vrtices. O menor caminho pode ser encontrado atravs dos mtodos bsicos de caminhamento em grafos: amplitude e profundidade. O problema do Menor Caminho um problema clssico da rea de

otimizao, um problema inerentemente aplicado em situaes prticas. No caso de problemas de caminho mais curto calculados sobre mapas reais, a estimativa de custo para um caminho entre os vrtices u e v pode ser o custo (no caso, o tamanho ou a distncia) da linha reta entre u e v. Esta tende a ser uma boa estimativa para a comparao entre distncias em casos reais, e certamente nunca superestima a distncia real do caminho dada por vias (estradas ou ruas). O propsito deste estudo est em integrar tcnicas para a soluo do problema do Menor Caminho com informaes reais obtidas com a API do Google Maps, o tornando til na otimizao de qualquer atividade do turismo na cidade de So LusMA.

4 Google Maps 5 Implementao e Complexibilidade 6 Consideraes Finais 7 Referncias

Anda mungkin juga menyukai