Apresent trab grafos

652 views

Published on

apresenta

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
652
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apresent trab grafos

  1. 1. UNIVERSIDADE ESTADUAL DO MARANHÃO - UEMA CENTRO DE CIÊNCIAS TECNOLÓGICA- CCT PROGRAMA DE PÓS-GRADUAÇÃO MESTRADO EM ENGENHARIA DA COMPUTAÇÃO E SISTEMAS DISCIPLINA: PROJETO DE ALGORITMO Grafos: algoritmo de busca do menor caminho entre os pontos turísticos de São Luís – Ma, usando Dijkstra Francisco Adelton Alves Ribeiro João Batista Paiva Junior José Wilker Luz Lidinalva Almada Coutinho Prof. Josenildo Silva
  2. 2. ROTEIRO  INTRODUÇÃO  GRAFOS  ANDROID  GOOGLE MAPS  IMPLEMENTAÇÃO E COMPLEXIDADE  CONSIDERAÇÕES FINAIS
  3. 3. INTRODUÇÃO • Das inúmeras utilizações dos grafos como: análise de circuitos, análise e planejamento de projetos, genética, linguística, ciências sociais, robótica entre outras, uma delas é a otimização de percursos. • Por meio da conjugação do uso de grafo e do Algoritmo de Dijkstra é possível calcular o caminho mais curto para realizar determinado percurso.
  4. 4. INTRODUÇÃO  Um dos algoritmos mais utilizados para resolver o problema do Caminho Mínimo é o algoritmo de Dijkstra. Este algoritmo garante a obtenção do caminho ótimo entre um nó de referência do grafo e os demais.  Nas últimas décadas, a revolução das comunicações tem provocado uma explosão na comunicação sem fio.
  5. 5. INTRODUÇÃO  Em especial smartphones, dispositivos e-reader e tablets.  Com ênfase no Sistema Operacional Android, que vem impulsionando a inovação na tecnologia móvel.  Os aplicativos Android são desenvolvidos com Java.  O Java é usado para desenvolver aplicativos empresariais de larga escala.
  6. 6. INTRODUÇÃO Além de permitir desenvolver aplicativos utilizando grafos que são executados em uma variedade de dispositivos, sem nenhum código específico para a plataforma. PROBLEMA Como conseguir o menor caminho entre os principais pontos turísticos de São Luís-Ma, utililizando o algoritmo Dijkstra.
  7. 7. INTRODUÇÃO OBJETIVOS • integrar técnicas computacionais de programação, tendo como base o algoritmo de Dijsktra para a solução de problemas, usando cálculo para o custo mínimo com informações obtidas através do uso do API do Google Maps, o qual facilita a busca de pontos turísticos importantes na cidade de São Luís-MA. • descrever o funcionamento do referido algoritmo, permitindo a sua implementação a nível informático;
  8. 8. INTRODUÇÃO • apresentar detalhes de sua implementação de grafos, detalhando as estruturas de dados utilizadas e a API (métodos de criar, adicionar vértices, arestas, percorrer etc.); • fazer uma análise teórica sobre correção e a complexidade do algoritmo utilizado para resolver o problema proposto;
  9. 9. INTRODUÇÃO • fazer previsões teóricas sobre limite de tamanho de problema resolvível e quantidade de tempo necessário; • realizar experimentos para verificar se a performance das operações implementadas estão de acordo com análise teórica; • utilizar conjuntos de dados grandes o suficiente para demonstrar que sua análise teoria esta correta. • Nesse trabalho, propõe-se uma metodologia para determinar o caminho de menor custo entre dois pontos em uma dada região.
  10. 10. INTRODUÇÃO • Para alcance dos objetivos propostos neste artigo, é necessário uma sistematização das informações relevantes para a construção do aplicativo para dispositivos móveis que garanta boa interatividade durante todo processo de interação. • busca-se desenvolver uma ferramenta computacional que garanta aos usuários de dispositivos móveis utilizarem a plataforma Android para determinar o caminho de menor custo entre os principais pontos turísticos da cidade de São Luís-Ma.
  11. 11. INTRODUÇÃO O artigo está estruturado da seguinte forma: • Grafos, especificando o uso do algoritmo Dijkstra; • Android, objetivando uma fundamentação para o uso de ambientes de dispositivos móveis; • O Google Maps no contexto tecnológico, contribuindo para o desenvolvimento do aplicativo, possibilitando o uso mais interativo no desenvolvimento de habilidades que serão úteis para uma prática eficiente e eficaz.
  12. 12. INTRODUÇÃO • Metodologia utilizada, incluindo a implementação do algoritmo Dijkstra e a sua complexibilidade; e, • Considerações finais. • Espera-se que as ideias e concepções apresentadas neste trabalho tragam valiosas contribuições no contexto da sociedade atual.
  13. 13. GRAFOS • Origem de teoria dos Grafos: Originou-se de jogos e recreações matemática, atribui- se a sua criação a Leonhard Euler, ao resolver o problema das pontes de Königsberg em 1736.
  14. 14. GRAFOS • Mas foram os problemas acerca de formulas estruturais de compostos químicos, que A. Cayley resolveu na segunda metade do século XIX, que a começaram a desenvolver (FEOFILOFF, 2005, p.8).
  15. 15. CIDADE DE KÖNIGSBERG Figura retirada de Patricia Jaques
  16. 16. GRAFOS • Conceito: Conjunto de elementos (nós ou vértices) que se relacionam de alguma maneira através de arcos ou arestas, tais relações podem possuir valor ou não.
  17. 17. O ALGORITMO DE DIJKSTRA • O Algoritmo de Dijkstra foi desenvolvido em 1959 por Edsger Wybe Dijkstra, de onde vem a origem do nome. Este algoritmo se aplica em grafos simples para determinar o caminho mínimo entre dois vértices.
  18. 18. O ALGORITMO DE DIJKSTRA • Ele é desenvolvido em uma árvore de caminhos mínimos. Quando o grafo não for simples, então procura-se transformá- lo em um grafo simples eliminando seus laços e eventuais arestas múltiplas deixando apenas a com o peso menor.
  19. 19. COMPLEXIDADE • A complexidade do Algoritmo de Dijkstra é O(n²), onde n é a quantidade de vértices do grafo.
  20. 20. FUNCIONAMENTO DO ALGORITMO DE DIJKSTRA, UTILIZANDO PONTOS TURÍSTICOS DE SÃO LUÍS-MA Fonte: https://maps.google.com.br/maps?hl=pt-BR&tab=wl
  21. 21. FUNCIONAMENTO DO ALGORITMO DE DIJKSTRA Fonte: https://maps.google.com.br/maps?hl=pt-BR&tab=wl modificado pelos autores 8,6km 29,5km 15km 23,4km 21,3km 28km 17km 26,7km
  22. 22. FUNCIONAMENTO DO ALGORITMO DE DIJKSTRA Fonte: https://maps.google.com.br/maps?hl=pt-BR&tab=wl modificado pelos autores 8,6km 29,5km 15km 23,4km 21,3km 28km 17km 26,7km
  23. 23. FUNCIONAMENTO DO ALGORITMO DE DIJKSTRA Fonte: https://maps.google.com.br/maps?hl=pt-BR&tab=wl modificado pelos autores 8,6km 29,5km 15km 23,4km 21,3km 28km 17km 26,7km
  24. 24. ANDROID • É um sistema operacional baseado no núcleo Linux para dispositivos móveis. • Foi desenvolvido pela Android, adquirida pelo Google em julho de 2005. Em novembro de 2007, foi formada a Open Handset Alliance – um consórcio compost inicialmente de 34 empresas e agora contando com 81 (www.openhandsetalliance.com/oha_member s.html.
  25. 25. VISÃO GERAL DO ANDROID A primeira geração de telefones Android foi lançada em outubro de 2008. De acordo com a Gartner, as vendas de telefones baseados em Android nos Estados Unidos aumentaram 707% no primeiro trimestre de 2010, em relação ao ano anterior.
  26. 26. VISÃO GERAL DO ANDROID Em março de 2011, 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.
  27. 27. CÓDIGO-FONTE ABERTO • Uma vantagem de desenvolver aplicativos Android é a franqueza (ou grau de abertura) da plataforma. O sistema operacional é de código-fonte aberto e gratuito. Isso permite ver o código-fonte do Android e como seus recursos são implementados.
  28. 28. JAVA • Os aplicativos Android são desenvolvidos com Java – a linguagem de programação mais usada do mundo. Essa linguagem foi uma escolha lógica para a plataforma Android, porque é poderosa, gratuita e de código-fonte aberto. • Permite desenvolver aplicativos que são executados em uma variedade de dispositivos, sem nenhum código específico para a plataforma.
  29. 29. ANDROID E SUAS VERSÕES • Primeira versão do Android foi a 1.6; • Em janeiro de 2010, o Google lançou o Android 2.1; • Maio de 2010, chega o Android 2.2; • Android 2.3 chega para os smartphones em dezembro de 2010; • Para os tablets, o Android 3.0 chega em janeiro de 2011, que é a versão mais recente do sistema dedicado aos smartphones.
  30. 30. GOOGLE MAPS • É um sistema para visualização de mapas na Web, com o diferencial de ser rápido e interativo. A localização dos pontos nos mapas é feita a partir de sua latitude e longitude e esta informação é administrada pelo próprio usuário.
  31. 31. DIFERENCIAL DO GOOGLE MAPS • Existe uma API (Application Programmming Interface) para JavaScript, que possibilita a sua utilização e integração, gratuitamente, com qualquer página Web. • Interatividade é um outro diferencial que o Google Maps oferece.
  32. 32. REQUISITOS DE SISTEMA PARA SOFTWARE E HARDWARE • Para desenvolver aplicativos Android, precisa- se de um sistema Windows®, Linux ou Mac OS X. • Aplicativos usados para o desenvolvimento: – JDK (Java Development Kit), versão 5 ou 6; – Eclipse 3.6.2 (Helios) IDE for Java Developers; – SDK ( Software Development Kit) do Android, versão 4.1.2; – ADT (Android Development Tools) Plugin for Eclipse.
  33. 33. INSTALANDO A(S) PLATAFORMA(S) ANDROID • Na IDE Eclipse - Selecione Window > Android SDK and AVD Manager para exibir a janela Android SDK and AVD Manager (Fig. 1).
  34. 34. INSTALANDO A(S) PLATAFORMA(S) ANDROID Selecione Available Packages . A coluna esquerda da janela mostra Android Repository e Third party Add- ons como opções. Expanda o nó Android Repository para ver a lista de ferramentas e plataformas Android disponíveis. Vamos usar os itens do Android Repository marcados na Figura 2.
  35. 35. INSTALANDO A(S) PLATAFORMA(S) ANDROID • Selecionando pacotes do Android Repository para instalar; • Selecionando pacotes do Third party Add-ons para instalação;
  36. 36. INSTALANDO A(S) PLATAFORMA(S) ANDROID Clique no botão Install Selected para exibir a janela Choose Packages to Install (Fig. 4). Clique no botão de opção Accept All e, em seguida, clique no botão Install . A janela Installing Archives (Fig. 5) vai aparecer para mostrar o status do processo de instalação.
  37. 37. INSTALANDO A(S) PLATAFORMA(S) ANDROID • Quando o processo de instalação terminar, você pode ver os itens instalados clicando em Installed Packages na coluna esquerda da janela Android SDK and AVD Manager . É preciso fechar e reabrir o Eclipse.
  38. 38. USO NO EMULADOR DO ANDROID • O emulador do Android , incluído no SDK do Android, permite executar aplicativos Android em um ambiente simulado em seu computador, em vez do dispositivo Android real. Antes de executar um aplicativo no emulador, você precisa criar um AVD (Android Virtual Device ou Dispositivo Android Virtual) , que define as características do dispositivo no qual se deseja fazer o teste, incluindo o tamanho da tela em pixels, a densidade de pixels, o tamanho físico da tela, o tamanho do cartão SD para armazenamento de dados e muito mais.
  39. 39. USO NO EMULADOR DO ANDROID • No Eclipse - Selecione Window > Android SDK and AVD Manager para exibir a janela Android SDK and AVD Manager (Fig. 1). Por padrão, Virtual Devices é selecionado na coluna esquerda da janela.
  40. 40. TELAS APP TURISMO SÃO LUÍS - MA
  41. 41. COMPLEXIDADE • A complexidade do algoritmo de Dijkstra implementando a fila como uma lista não ordenada é O(n²), onde n é o número de vértices do grafo de entrada. • Esta variação é geralmente referenciada como “implementação ingênua"(naive implementation). • Talvez a primeira e mais significativa contribuição para reduzir a complexidade da implementação ingênua tenha sido feita por Donald Johnson que introduziu a estrutura de dados denominada heap k- ário.
  42. 42. COMPLEXIDADE • Esta variação melhora o comportamento assintótico do algoritmo de Dijkstra para grafos esparsos. Implementando-se este algoritmo com um heap binário (k = 2), sua complexidade é melhorada de O(n2) para O((m + n) log n), onde m denota o número de arestas. • O App Turismo implementa uma algortimo Dijkstra usando pilhas e possui uma complexidade O((m+n) log n).
  43. 43. TEMPO DE EXECUÇÃO - Os testes do app foram realizados em um tablet PC, com as seguintes características: - CPU BoxChip 1.5GHz - Mémoria RAM: 512 MB DDRII - Memória interna: 8GB(flash) - Sistema Operacional: Android 4.0
  44. 44. TEMPO DE EXECUÇÃO 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0 5 10 15 20 25 30 35 Tempo Repetições Tempo Menor Caminho Dijkstra Series1
  45. 45. CONSIDERAÇÕES FINAIS • Através do estudo de grafos, percebe-se que encontrar caminhos mínimos torna-se uma tarefa passível de diferentes abordagens. • O algoritmo de Dijkstra, principal foco deste trabalho, e sem dúvida o mais aplicado em problemas de caminhos mínimos do mundo real. •
  46. 46. REFERÊNCIAS CORMEN, Thomas H. et al., Algoritmos: teoria e prática : Elsevier. Rio de Janeiro 2012; DUARTE, Alexandre. Algoritmos Avançados. Disponível em: www.slideshare.net/alexandrend/grafos- parte-1-introduo. Acesso em: 23 de dez de 2012; FEOFILOFF, Paulo. Algoritmos para Grafos em C via Sedgewick. Disponível em: http://www.ime.usp.br/~pf/algoritmos_para_grafos/ Acesso em: 22 de dez 2012; LAFORE, ROBERT. Estruturas de Dados & Algoritmos em Java. editora ciência moderna, 2004. NEVES, Patrícia Takaki. Variações do algoritmo de Dijkstra-Campinas, [S.P.:s.n.], 2007; NONATO, Luis G. Algoritmo de Dijkstra. Disponível em: http://www.lcad.icmc.usp.br. Acessado em: 23 de dez de 2012; Teoria dos Grafos. Disponível em: erinaldosn.files.wordpress.com/2011/02/aula-1-conceitos.pdf. Acesso em: 23 de dez de 2012; ZIVIANI, Nivio. Projeto de algoritmos: com implementação em Pascal e C. 3. ed. rev. e ampl. Cegage Learning, São Paulo 2011.

×