Otimizador de Rotas - PythonBrasil[6]

3.089 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.089
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.559
Ações
Compartilhamentos
0
Downloads
41
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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.

×