Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Otimizador de Rotas - PythonBrasil[6]

3,284 views

Published on

Slides da palestra no PythonBrasil[6] com o tema "Implementação do algoritmo de Dijkstra para calcular da distância mínima entre cidades"

Published in: Technology
  • Be the first to comment

Otimizador de Rotas - PythonBrasil[6]

  1. 1. Otimizador de rotas Implementação do algoritmo de custo mínimo de Dijkstra em Python para calcular a distância mínima entre cidades Luiz Augusto de Macêdo Morais luizaugustomm@gmail.com
  2. 2. Quem sou eu ✔ 18 anos; ✔ Graduando em Licenciatura em Computação – UEPB; ✔ Monitor da disciplina de Linguagem de Programação I – Python; ✔ Faz parte do grupo de pesquisa “Genética e Evolução de Plantas do Semiárido” e utiliza o Python na pesquisa; ✔ Conheceu a linguagem Python há um ano.
  3. 3. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  4. 4. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  5. 5. Objetivos ✔ Mostrar quem foi Dijkstra ✔ Explicar o funcionamento do algoritmo de Dijkstra ✔ Exibir um exemplo prático do algoritmo, utilizando a linguagem Python ✔ Explicar qual é a proposta do programa Otimizador de rotas ✔ Expor as futuras funcionalidades do software
  6. 6. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  7. 7. Quem foi Dijkstra? Edsger Wybe Dijkstra (1930 - 2002) ● Matemático e cientista da computação ● Áreas de atuação: ● Algoritmos; ● Linguagens de programação; ● Sistemas operacionais, etc. ● Criou o primeiro compilador para a linguagem ALGOL 60 ● Foi contrário ao comando GOTO ● A Case against the GO TO Statement (1968) ● Criador do algoritmo do caminho mais curto (shortest path)
  8. 8. Quem foi Dijkstra? Edsger Wybe Dijkstra (1930 - 2002) Prêmios e titulações: ● Membro da Sociedade Britânica de Computação (1971) ● Prêmio Turing (1972) ● Prêmio AFIPS Harry Goode (1974) ● Prêmio de pioneiro da computação do IEEE (1982) ● Prêmio ACM SIGCSE para contribuições proeminentes à instrução da ciência da computação (1989)
  9. 9. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  10. 10. O algoritmo de Dijkstra ● Encontra o menor caminho entre dois vértices de um grafo ● Não funciona com arestas de peso negativo. Para isso, usa-se o algoritmo de Bellman-Ford ● Complexidade O(|V|²) ● O(|E| + |V| * log|V|) (heap de Fibonacci) Características:
  11. 11. O algoritmo de Dijkstra # Inicia-se os valores para todo v V[G]∈ dist[v]← ∞ prec[v] ← nulo dist[s] ← 0 Q ← V[G] # Conjunto dos vértices abertos S ← ø # Conjunto dos vértices fechados # Relaxamento das arestas enquanto Q ≠ ø u ← extraia-mín(Q) S ← S {u}∪ para cada v adjacente a u se dist[v] > dist[u] + w(u, v) então dist[v] ← dist[u] + w(u, v) prec[v] ← u Pseudocódigo:
  12. 12. O algoritmo de Dijkstra ∞ ∞ ∞ ∞ 0 A B C D E 10 5 2 3 1 9 7 2 4 6 Vértices A B C D E Estimativas 0 ∞ ∞ ∞ ∞ Precedentes - - - - - - Atribui um custo infinito a todas as distâncias, exceto a distância do vértice A, que é 0. Execução:
  13. 13. O algoritmo de Dijkstra ∞ ∞ ∞ ∞ 0 A B C D E 10 5 2 3 1 9 7 2 4 6 Vértices A B C D E Estimativas 0 ∞ ∞ ∞ ∞ Precedentes A - - - - - Seleciona A (vértice aberto de menor estimativa); - Fecha A; Execução:
  14. 14. O algoritmo de Dijkstra 5 ∞ 10 ∞ 0 A B C D E Vértices A B C D E Estimativas 0 10 ∞ 5 ∞ Precedentes A A - A - 10 5 2 3 1 9 7 2 4 6 - Seleciona A (vértice aberto de menor estimativa); - Fecha A; - Recalcula as estimativas de B e D. Execução:
  15. 15. O algoritmo de Dijkstra 5 ∞ 10 ∞ 0 A B C D E Vértices A B C D E Estimativas 0 10 ∞ 5 ∞ Precedentes A A - A - 10 5 2 3 1 9 7 2 4 6 - Seleciona D (vértice aberto de menor estimativa); - Fecha D; Execução:
  16. 16. O algoritmo de Dijkstra 5 7 8 14 0 A B C D E Vértices A B C D E Estimativas 0 8 14 5 7 Precedentes A D D A D 10 5 2 3 1 9 7 2 4 6 - Seleciona D (vértice aberto de menor estimativa); - Fecha D; - Recalcula as estimativas de B, C e E. Execução:
  17. 17. O algoritmo de Dijkstra 5 7 8 14 0 A B C D E Vértices A B C D E Estimativas 0 8 14 5 7 Precedentes A D D A D 10 5 2 3 1 9 7 2 4 6 - Seleciona E (vértice aberto de menor estimativa); - Fecha E; Execução:
  18. 18. O algoritmo de Dijkstra 5 7 8 13 0 A B C D E Vértices A B C D E Estimativas 0 8 13 5 7 Precedentes A D E A D 10 5 2 3 1 9 7 2 4 6 - Seleciona E (vértice aberto de menor estimativa); - Fecha E; - Recalcula a estimativa de C. Execução:
  19. 19. O algoritmo de Dijkstra 5 7 8 13 0 A B C D E Vértices A B C D E Estimativas 0 8 13 5 7 Precedentes A D E A D 10 5 2 3 1 9 7 2 4 6 - Seleciona B (vértice aberto de menor estimativa); - Fecha B; Execução:
  20. 20. O algoritmo de Dijkstra 5 7 8 9 0 A B C D E Vértices A B C D E Estimativas 0 8 9 5 7 Precedentes A D B A D 10 5 2 3 1 9 7 2 4 6 - Seleciona B (vértice aberto de menor estimativa); - Fecha B; - Recalcula a estimativa de C. Execução:
  21. 21. O algoritmo de Dijkstra 5 7 8 9 0 A B C D E Vértices A B C D E Estimativas 0 8 9 5 7 Precedentes A D B A D 10 5 2 3 1 9 7 2 4 6 - Seleciona C (vértice aberto de menor estimativa); - Fecha C Execução:
  22. 22. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  23. 23. Afinal, pra que serve este algoritmo? ● Linhas de transmissão elétrica ● Conexão de redes ● Panejamento de movimentos de um robô ● Planejamento de rotas e tempo de viagens
  24. 24. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  25. 25. Implementação do algoritmo em Python
  26. 26. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  27. 27. O otimizador de rotas ● Auxilia em viagens de percursos desconhecidos; ● Calcula a rota mínima entre cidades; ● Mostra passo a passo o percurso escolhido; ● Informa a distância e o tempo total de viagem; ● Não necessita de conexão com a Internet. Características:
  28. 28. O otimizador de rotas Screenshots: Janela principal
  29. 29. O otimizador de rotas Screenshots: Resultado simples
  30. 30. O otimizador de rotas Screenshots: Resultado completo
  31. 31. O otimizador de rotas ● Exibir o mapa da rota escolhida; ● Informar a rota mais rápida; ● Aumentar o número de cidades e Estados; ● Exibir informações sobre pedágios e tipo de estrada; ● Otimizar o algoritmo. Próximos passos:
  32. 32. Roteiro ● Objetivos ● Quem foi Dijkstra? ● O algoritmo de Dijkstra ● Afinal, pra que serve este algoritmo? ● Implementação do algoritmo em Python ● O otimizador de rotas ● Dúvidas
  33. 33. Dúvidas
  34. 34. Obrigado! Twitter: @luizaugustomm E-mail: luizaugustomm@gmail.com Site: http://ola-mundo.com
  35. 35. Referências Edsger Dijkstra. Disponível em: <http://pt.wikipedia.org/wiki/Edsger_Dijkstra>. Acesso em: 8 de outubro de 2010. Algoritmo de Dijkstra. Disponível em: <http://pt.wikipedia.org/wiki/Algoritmo_de_Dijkstra>. Acesso em: 8 de outubro de 2010. Algoritmo de Dijkstra para cálculo do Caminho de Custo Mínimo. Disponível em: <http://www.inf.ufsc.br/grafos/temas/custo-minimo/dijkstra.html>. Acesso em: 8 de outubro de 2010. LEMOS, G. Otimização de Rotas Rodoviárias Utilizando o Algoritmo de Dijkstra e a API do Google Maps. 2009. 24f. Universidade Estadual de Londrina. Londrina, Paraná, 2009. MÉNDEZ, Y. S.; GUARDIA, L. E. T. Problema do caminho mais curto: Algoritmo de Dijkstra. Universidade Federal Fluminense. Rio de Janeiro, Rio de Janeiro, 2008.

×