Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pathfinding Peril SPA 2016

Pathfinding Peril SPA 2016

chrismdp

June 27, 2016
Tweet

More Decks by chrismdp

Other Decks in Programming

Transcript

  1. Pathfinding Peril Chris Parsons

  2. Huh? What is it all good for... Absolutely nothing?

  3. Games

  4. Workshop Plan Introduction Graph Theory Pathfinding Algorithms The Maze Contest

  5. Graph Theory A B D C E F G

  6. What is it all good for... Graphs can model internet

    networks, data organisation, computation flow, neural networks, the web, wikis, molecular structures, linguistics, social networks, biological habitats, transport networks, etc.
  7. Shortest route from B to C A B D C

    E F G
  8. “Brute force” A B D C E F G

  9. “Brute force” A B D C E F G

  10. “Brute force” A B D C E F G

  11. Weighted graphs A B D E F G 3 3

    17 2 2 3 22 1 C
  12. B - E - C will cost 19 A B

    D E F G 3 3 17 2 2 3 22 1 C
  13. ...but B-A-G-D-C is only 9 A B D E F

    G 3 3 17 2 2 3 22 1 C
  14. Dijkstra's Algorithm Published 1959 Uses an ordered set of open

    nodes, tracking minimum cost to each
  15. Shortest route from B to C A B D E

    F G 3 3 17 2 2 3 22 1 C
  16. Visit B Node Cost B 0 A (from B) 3

    F (from B) 3 E (from B) 17 A B D E F G 3 3 17 2 2 3 22 1 C
  17. Visit A Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from B) 17 A B D E F G 3 3 17 2 2 3 22 1 C
  18. Visit F Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from B) 17 (25 is bigger) A B D E F G 3 3 17 2 2 3 22 1 C
  19. Visit G Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 D (from G) 8 E (from B) 17 A B D E F G 3 3 17 2 2 3 22 1 C
  20. Visit D Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 D (from G) 8 C (from D) 9 E (from B) 17 A B D E F G 3 3 17 2 2 3 22 1 C
  21. Visit C - we’re done! Node Cost B 0 A

    (from B) 3 F (from B) 3 G (from A) 6 D (from G) 8 C (from D) 9 E (from B) 17 A B D E F G 3 3 17 2 2 3 22 1 C
  22. Updated weights A B D E F G 3 3

    17 2 2 3 3 1 C
  23. Visit B Node Cost B 0 A (from B) 3

    F (from B) 3 E (from B) 17 A B D E F G 3 3 17 2 2 3 3 1 C
  24. Visit A Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from B) 17 A B D E F G 3 3 17 2 2 3 3 1 C
  25. Visit F Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from F) 6 A B D E F G 3 3 17 2 2 3 3 1 C
  26. Visit G Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from F) 6 D (from G) 8 A B D E F G 3 3 17 2 2 3 3 1 C
  27. Visit E Node Cost B 0 A (from B) 3

    F (from B) 3 G (from A) 6 E (from F) 6 C (from E) 8 D (from G) 8 A B D E F G 3 3 17 2 2 3 3 1 C
  28. Visit C - we’re done! Node Cost B 0 A

    (from B) 3 F (from B) 3 G (from A) 6 E (from F) 6 C (from E) 8 D (from G) 8 A B D E F G 3 3 17 2 2 3 3 1 C
  29. A* algorithm Published 1968 Variation on Dijkstra, using a heuristic

    to cut down on nodes to visit
  30. Distance Heuristic A 23 B 10 D 12 E 13

    F 18 G 20 3 3 17 2 2 3 22 1 C 0
  31. Visit B Node Cost Order B 0 10 (0+10) F

    3 21 (3+18) A 3 26 (3+23) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  32. Visit F Node Cost Order B 0 10 (0+10) F

    3 21 (3+18) A 3 26 (3+23) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  33. Visit A Node Cost Order B 0 10 (0+10) F

    3 21 (3+18) A 3 26 (3+23) G 6 26 (6+20) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  34. Visit G Node Cost Order B 0 10 (0+10) F

    3 21 (3+18) A 3 26 (3+23) G 6 26 (6+20) D 8 20 (8+12) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  35. Visit D Node Cost Order B 0 10 (0+10) F

    3 21 (3+18) A 3 26 (3+23) G 6 26 (6+20) D 8 20 (8+12) C 9 9 (9 +0) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  36. Visit C - we’re done! Node Cost Order B 0

    10 (0+10) F 3 21 (3+18) A 3 26 (3+23) G 6 26 (6+20) D 8 20 (8+12) C 9 9 (9 +0) E 17 30 (17+13) A 23 B 10 D 12 E 13 F 18 G 20 3 3 17 2 2 3 22 1 C 0
  37. Non-admissible Heuristic A 23 B 10 D 12 E 13

    F 18 G 20 3 3 17 2 2 3 22 1 C 0
  38. Different Heuristics Dijkstra no heuristic A* exact distance (admissible) http://en.wikipedia.org/wiki/A*_search_algorithm

    http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm A* over-egging distance (non-admissible)
  39. Summary Brute force approach: O(n²) (ouch!) Dijkstra: guarantees best path

    but still can be slow A*: depending on Heuristic can trade speed for best path Admissible Heuristics (never overestimating cost) is the sweet spot for A*
  40. Your turn Wifi: BCSGuest Password: xxxx Visit http://10.30.22.125:3000/rules

  41. Slides + tournament online https://speakerdeck.com/chrismdp/pathfinding-peril- spa-2016 github.com/chrismdp/pathfinding-peril

  42. Sol Trader I’m a web programmer moved back into Games

    http://soltrader.net
  43. Thanks! Chris Parsons @chrismdp - http://pa.rsons.org Sol Trader @soltdr -

    http://soltrader.net