apresent trab grafos

46
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

Upload: lidinalva-coutinho

Post on 05-Jul-2015

269 views

Category:

Education


0 download

DESCRIPTION

apresenta

TRANSCRIPT

Page 1: Apresent trab grafos

UNIVERSIDADE ESTADUAL DO MARANHÃO - UEMA

CENTRO DE CIÊNCIAS TECNOLÓGICA- CCTPROGRAMA 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 RibeiroJoão Batista Paiva JuniorJosé Wilker LuzLidinalva Almada Coutinho

Prof. Josenildo Silva

Page 2: Apresent trab grafos

ROTEIRO

INTRODUÇÃO

GRAFOS

ANDROID

GOOGLE MAPS

IMPLEMENTAÇÃO E COMPLEXIDADE

CONSIDERAÇÕES FINAIS

Page 3: Apresent trab grafos

INTRODUÇÃO

• Das inúmeras utilizações dos grafos como: análisede circuitos, análise e planejamento de projetos,genética, linguística, ciências sociais, robótica entreoutras, uma delas é a otimização de percursos.

• Por meio da conjugação do uso de grafo e doAlgoritmo de Dijkstra é possível calcular o caminhomais curto para realizar determinado percurso.

Page 4: Apresent trab grafos

INTRODUÇÃO

Um dos algoritmos mais utilizados para resolver oproblema do Caminho Mínimo é o algoritmo deDijkstra. Este algoritmo garante a obtenção docaminho ótimo entre um nó de referência do grafoe os demais.

Nas últimas décadas, a revolução dascomunicações tem provocado uma explosão nacomunicação sem fio.

Page 5: Apresent trab grafos

INTRODUÇÃO

Em especial smartphones, dispositivos e-reader etablets.

Com ênfase no Sistema Operacional Android, quevem impulsionando a inovação na tecnologia móvel.

Os aplicativos Android são desenvolvidos com Java.

O Java é usado para desenvolver aplicativosempresariais de larga escala.

Page 6: Apresent trab grafos

INTRODUÇÃO

Além de permitir desenvolver aplicativos utilizandografos que são executados em uma variedade dedispositivos, sem nenhum código específico para aplataforma.

PROBLEMA

Como conseguir o menor caminho entre os principaispontos turísticos de São Luís-Ma, utililizando oalgoritmo Dijkstra.

Page 7: Apresent trab grafos

INTRODUÇÃO

OBJETIVOS

• integrar técnicas computacionais deprogramação, tendo como base o algoritmo deDijsktra para a solução de problemas, usandocálculo para o custo mínimo com informaçõesobtidas através do uso do API do Google Maps,o qual facilita a busca de pontos turísticosimportantes na cidade de São Luís-MA.

• descrever o funcionamento do referidoalgoritmo, permitindo a sua implementação anível informático;

Page 8: Apresent trab grafos

INTRODUÇÃO

• apresentar detalhes de sua implementação degrafos, detalhando as estruturas de dadosutilizadas e a API (métodos de criar, adicionarvértices, arestas, percorrer etc.);

• fazer uma análise teórica sobre correção e acomplexidade do algoritmo utilizado pararesolver o problema proposto;

Page 9: Apresent trab grafos

INTRODUÇÃO

• fazer previsões teóricas sobre limite de tamanho de problemaresolvível e quantidade de tempo necessário;

• realizar experimentos para verificar se a performance dasoperações implementadas estão de acordo com análiseteórica;

• utilizar conjuntos de dados grandes o suficiente parademonstrar que sua análise teoria esta correta.

• Nesse trabalho, propõe-se uma metodologia para determinaro caminho de menor custo entre dois pontos em uma dadaregião.

Page 10: Apresent trab grafos

INTRODUÇÃO

• Para alcance dos objetivos propostos nesteartigo, é necessário uma sistematização dasinformações relevantes para a construção doaplicativo para dispositivos móveis que garantaboa interatividade durante todo processo deinteração.

• busca-se desenvolver uma ferramentacomputacional que garanta aos usuários dedispositivos móveis utilizarem a plataformaAndroid para determinar o caminho de menorcusto entre os principais pontos turísticos dacidade de São Luís-Ma.

Page 11: Apresent trab grafos

INTRODUÇÃO

O artigo está estruturado da seguinte forma:

• Grafos, especificando o uso do algoritmo Dijkstra;

• Android, objetivando uma fundamentação para o usode ambientes de dispositivos móveis;

• O Google Maps no contexto tecnológico, contribuindopara o desenvolvimento do aplicativo, possibilitandoo uso mais interativo no desenvolvimento dehabilidades que serão úteis para uma práticaeficiente e eficaz.

Page 12: Apresent trab grafos

INTRODUÇÃO

• Metodologia utilizada, incluindo a implementaçãodo algoritmo Dijkstra e a sua complexibilidade; e,

• Considerações finais.

• Espera-se que as ideias e concepçõesapresentadas neste trabalho tragam valiosascontribuições no contexto da sociedade atual.

Page 13: Apresent trab grafos

GRAFOS

• Origem de teoria dos Grafos: Originou-sede jogos e recreações matemática, atribui-se a sua criação a Leonhard Euler, aoresolver o problema das pontes deKönigsberg em 1736.

Page 14: Apresent trab grafos

GRAFOS

• Mas foram os problemas acerca de formulasestruturais de compostos químicos, que A.Cayley resolveu na segunda metade do séculoXIX, que a começaram a desenvolver(FEOFILOFF, 2005, p.8).

Page 15: Apresent trab grafos

CIDADE DE KÖNIGSBERG

Figura retirada de Patricia Jaques

Page 16: Apresent trab grafos

GRAFOS

• Conceito: Conjunto de elementos (nós ouvértices) que se relacionam de alguma maneiraatravés de arcos ou arestas, tais relações podempossuir valor ou não.

Page 17: Apresent trab grafos

O ALGORITMO DE DIJKSTRA

• O Algoritmo de Dijkstra foi desenvolvidoem 1959 por Edsger Wybe Dijkstra, deonde vem a origem do nome. Estealgoritmo se aplica em grafos simples paradeterminar o caminho mínimo entre doisvértices.

Page 18: Apresent trab grafos

O ALGORITMO DE DIJKSTRA

• Ele é desenvolvido em uma árvore decaminhos mínimos. Quando o grafo nãofor simples, então procura-se transformá-lo em um grafo simples eliminando seuslaços e eventuais arestas múltiplasdeixando apenas a com o peso menor.

Page 19: Apresent trab grafos

COMPLEXIDADE

• A complexidade do Algoritmo de Dijkstra é O(n²), onde n é a quantidade de vértices do grafo.

Page 20: Apresent trab grafos

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

Page 21: Apresent trab grafos

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

Page 22: Apresent trab grafos

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

Page 23: Apresent trab grafos

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

Page 24: Apresent trab grafos

ANDROID

• É um sistema operacional baseado no núcleoLinux para dispositivos móveis.

• Foi desenvolvido pela Android, adquirida peloGoogle em julho de 2005. Em novembro de2007, foi formada a Open Handset Alliance –um consórcio compost inicialmente de 34empresas e agora contando com 81(www.openhandsetalliance.com/oha_members.html.

Page 25: Apresent trab grafos

VISÃO GERAL DO ANDROID

A primeira geração de telefones Android foilançada em outubro de 2008. De acordocom a Gartner, as vendas de telefonesbaseados em Android nos Estados Unidosaumentaram 707% no primeiro trimestre de2010, em relação ao ano anterior.

Page 26: Apresent trab grafos

VISÃO GERAL DO ANDROID

Em março de 2011, um estudo da Nielsenmostrou que o Android tinha 37% da fatiade mercado de smartphones nos EstadosUnidos, comparados com 27% do iPhone daApple e 22% do Blackberry.

Page 27: Apresent trab grafos

CÓDIGO-FONTE ABERTO

• Uma vantagem de desenvolver aplicativosAndroid é a franqueza (ou grau deabertura) da plataforma. O sistemaoperacional é de código-fonte aberto egratuito. Isso permite ver o código-fontedo Android e como seus recursos sãoimplementados.

Page 28: Apresent trab grafos

JAVA

• Os aplicativos Android são desenvolvidos comJava – a linguagem de programação mais usadado mundo. Essa linguagem foi uma escolhalógica para a plataforma Android, porque époderosa, gratuita e de código-fonte aberto.

• Permite desenvolver aplicativos que sãoexecutados em uma variedade de dispositivos,sem nenhum código específico para aplataforma.

Page 29: Apresent trab grafos

ANDROID E SUAS VERSÕES

• Primeira versão do Android foi a 1.6;

• Em janeiro de 2010, o Google lançou o Android2.1;

• Maio de 2010, chega o Android 2.2;

• Android 2.3 chega para os smartphones emdezembro de 2010;

• Para os tablets, o Android 3.0 chega em janeirode 2011, que é a versão mais recente dosistema dedicado aos smartphones.

Page 30: Apresent trab grafos

GOOGLE MAPS

• É um sistema para visualização de mapas naWeb, com o diferencial de ser rápido einterativo. A localização dos pontos nos mapas éfeita a partir de sua latitude e longitude e estainformação é administrada pelo próprio usuário.

Page 31: Apresent trab grafos

DIFERENCIAL DO GOOGLE MAPS

• Existe uma API (Application ProgrammmingInterface) para JavaScript, que possibilita a suautilização e integração, gratuitamente, comqualquer página Web.

• Interatividade é um outro diferencial que oGoogle Maps oferece.

Page 32: Apresent trab grafos

REQUISITOS DE SISTEMA PARA SOFTWARE E HARDWARE

• Para desenvolver aplicativos Android, precisa-se de um sistema Windows®, Linux ou MacOS 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 forEclipse.

Page 33: Apresent trab grafos

INSTALANDO A(S) PLATAFORMA(S) ANDROID

• Na IDE Eclipse - Selecione Window > Android SDK and AVD Manager para exibir a janela AndroidSDK and AVD Manager (Fig. 1).

Page 34: Apresent trab grafos

INSTALANDO A(S) PLATAFORMA(S) ANDROID

Selecione Available Packages . A coluna esquerda dajanela mostra Android Repository e Third party Add-ons como opções. Expanda o nó Android Repositorypara ver a lista de ferramentas e plataformas Androiddisponíveis. Vamos usar os itens do AndroidRepository marcados na Figura 2.

Page 35: Apresent trab grafos

INSTALANDO A(S) PLATAFORMA(S) ANDROID

• Selecionando pacotes do Android Repositorypara instalar;

• Selecionando pacotes do Third party Add-ons para instalação;

Page 36: Apresent trab grafos

INSTALANDO A(S) PLATAFORMA(S) ANDROID

Clique no botão Install Selected para exibir a janelaChoose Packages to Install (Fig. 4). Clique no botãode opção Accept All e, em seguida, clique no botãoInstall . A janela Installing Archives (Fig. 5) vaiaparecer para mostrar o status do processo deinstalação.

Page 37: Apresent trab grafos

INSTALANDO A(S) PLATAFORMA(S) ANDROID

• Quando o processo de instalação terminar, vocêpode ver os itens instalados clicando emInstalled Packages na coluna esquerda dajanela Android SDK and AVD Manager . É precisofechar e reabrir o Eclipse.

Page 38: Apresent trab grafos

USO NO EMULADOR DO ANDROID

• O emulador do Android , incluído no SDK doAndroid, permite executar aplicativos Android emum ambiente simulado em seu computador, em vezdo dispositivo Android real. Antes de executar umaplicativo no emulador, você precisa criar um AVD(Android Virtual Device ou Dispositivo AndroidVirtual) , que define as características dodispositivo no qual se deseja fazer o teste,incluindo o tamanho da tela em pixels, a densidadede pixels, o tamanho físico da tela, o tamanho docartão SD para armazenamento de dados e muitomais.

Page 39: Apresent trab grafos

USO NO EMULADOR DO ANDROID

• No Eclipse -Selecione Window >Android SDK and AVDManager para exibira janela Android SDKand AVD Manager(Fig. 1). Por padrão,Virtual Devices éselecionado nacoluna esquerda dajanela.

Page 40: Apresent trab grafos

TELAS APP TURISMO SÃO LUÍS - MA

Page 41: Apresent trab grafos

COMPLEXIDADE

• A complexidade do algoritmo de Dijkstraimplementando a fila como uma lista não ordenadaé O(n²), onde n é o número de vértices do grafo deentrada.

• Esta variação é geralmente referenciada como“implementação ingênua"(naive implementation).

• Talvez a primeira e mais significativa contribuiçãopara reduzir a complexidade da implementaçãoingênua tenha sido feita por Donald Johnson queintroduziu a estrutura de dados denominada heap k-ário.

Page 42: Apresent trab grafos

COMPLEXIDADE

• Esta variação melhora o comportamentoassintótico do algoritmo de Dijkstra para grafosesparsos. Implementando-se este algoritmo comum 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 algortimoDijkstra usando pilhas e possui umacomplexidade O((m+n) log n).

Page 43: Apresent trab grafos

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

Page 44: Apresent trab grafos

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

Tem

po

Repetições

Tempo Menor Caminho Dijkstra

Series1

Page 45: Apresent trab grafos

CONSIDERAÇÕES FINAIS

• Através do estudo de grafos, percebe-se queencontrar caminhos mínimos torna-se umatarefa passível de diferentes abordagens.

• O algoritmo de Dijkstra, principal foco destetrabalho, e sem dúvida o mais aplicado emproblemas de caminhos mínimos do mundo real.

Page 46: Apresent trab grafos

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. Acessoem: 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.