Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

- M4 heuristics by Yasir Khan 559 views
- The Max Cut Problem by dnatapov 2335 views
- Pathfinding - Part 1: Α* heuristic ... by Stavros Vassos 1492 views
- Paper Review : a pathfinding algor... by hanaskuliah 218 views
- Game Paper by Siddharth Gupta 206 views
- Ai for games seminar: N-Grams pred... by Andrea Tucci 2297 views

1,390 views

Published on

An explanation of the A* Path Finding Algorithm

http://www.cse.yorku.ca/~dnatapov

No Downloads

Total views

1,390

On SlideShare

0

From Embeds

0

Number of Embeds

2

Shares

0

Downloads

95

Comments

0

Likes

4

No embeds

No notes for slide

- 1. A* PATH FINDING ALGORITHM Presented by Daniel Natapov
- 2. PROBLEM DEFINITION <ul><li>Find the shortest (weighted) path from a start node to a goal node in a graph (or grid). </li></ul><ul><li>What if we are “informed” with heuristics? Can we “look-ahead” and direct our search? </li></ul>
- 3. APPLICATION <ul><li>Games – NPC movement. Needs to be smart and fast. </li></ul><ul><li>Games use grids to describe the environment. These slides do too. </li></ul><ul><li>Many other applications: </li></ul><ul><ul><li>Network routing </li></ul></ul><ul><ul><li>Image processing </li></ul></ul><ul><ul><li>A.I. Path finding </li></ul></ul><ul><ul><li>... </li></ul></ul>
- 4. GRID = GRAPH <ul><li>Grid allows movement between adjacent cells in 4 or 8 possible directions. </li></ul><ul><li>Each direction may have a different cost. </li></ul><ul><ul><li> = </li></ul></ul>
- 5. EXAMPLE – GET FROM S TO T S T
- 6. EXAMPLE – EDGE WEIGHTS <ul><li>In a game, edge weights depend on various factors, ie travel on road vs. grass. </li></ul><ul><li>For simplicity: lets say all horizontal and vertical costs are the same. </li></ul><ul><li>Also assume no diagonal paths. </li></ul>
- 7. WWDD? – WHAT WOULD DIJKSTRA’S DO? Found it! (finally) S S T
- 8. WWDD? <ul><li>Dijkstra’s algorithm guarantees shortest path. </li></ul><ul><li>But searches a lot of unneeded area. </li></ul><ul><li>We know where the destination node is, (just not how to get there). </li></ul><ul><li>We can try to direct the search with greedy Best-First-Search. </li></ul>
- 9. BEST-FIRST-SEARCH <ul><li>Similar to Dijkstra’s, but is informed. </li></ul><ul><li>Has some estimate of how far from the goal each vertex is: “look-ahead”. </li></ul><ul><li>This estimate is a heuristic. </li></ul><ul><li>It prioritizes vertices which it believes to be closets to the goal, as opposed to vertices closest to the start. </li></ul>
- 10. BEST-FIRST-SEARCH EXAMPLE S S T
- 11. HOW TO BREAK IT – OBSTACLES! S Found it! (could’ve taken a better route) S T
- 12. BEST-FIRST-SEARCH <ul><li>Best-First-Search works faster than Dijkstra’s. </li></ul><ul><li>But does not guarantee an optimal-path. </li></ul><ul><li>We want some combination of Dijkstra’s and Best-First-Search. </li></ul><ul><li>Enter A*! </li></ul>
- 13. A* ALGORITHM <ul><li>Prioritizes its search based on: </li></ul><ul><ul><li>The distance traveled (Dijkstra’s) </li></ul></ul><ul><ul><li>The distance remaining (Best-First-Search) </li></ul></ul><ul><li>g(n) = Distance traveled from the start to a cell. </li></ul><ul><li>h(n) = Estimated distance from a cell to the target. </li></ul><ul><li>Value of a cell is f(n) = g(n) + h(n) . </li></ul><ul><li>The algorithm prioritizes cells whose f(n) is lowest. </li></ul>
- 14. WHAT’S ALL THIS TALK ABOUT ESTIMATES? <ul><li>An estimate of the distance between a cell and a target is a heuristic . </li></ul><ul><li>May be able to estimate distance between two cells. </li></ul><ul><li>Choosing a good heuristic is important, and can be difficult. </li></ul><ul><li>In our simplified case it is easy: the Manhattan Distance: </li></ul><ul><ul><li>h(n) = |cell.x – goal.x| + |cell.y – goal.y| </li></ul></ul>
- 15. MANHATTAN DISTANCE <ul><li>Good for our case. Actual distance can never be less (more on this later). </li></ul><ul><li>Lets go through a complete example. </li></ul>
- 16. A* EXAMPLE S T
- 17. A* EXAMPLE g = 1 h = 6 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7
- 18. A* EXAMPLE g = 1 h = 6 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7
- 19. A* EXAMPLE g = 2 h = 3 f = 5 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7 g = 2 h = 5 f = 7
- 20. A* EXAMPLE g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7 g = 2 h = 5 f = 7
- 21. A* EXAMPLE g = 3 h = 6 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 3 h = 6 f = 9
- 22. A* EXAMPLE g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 3 h = 6 f = 9
- 23. A* EXAMPLE g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9
- 24. A* EXAMPLE g=2 h=7 f=9 g=2 h=7 f=9 g=2 h=7 f=9 g=3 h=8 f=11 g=3 h=8 f=11 g=3 h=8 f=11 g=3 h=8 f=11 g = 3 h = 6 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9
- 25. A* EXAMPLE g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 4 h = 5 f = 9
- 26. A* EXAMPLE g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 4 h = 5 f = 9 g = 5 h = 4 f = 9
- 27. A* EXAMPLE g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 T g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 6 h = 3 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 4 h = 5 f = 9 g = 5 h = 4 f = 9 g = 6 h = 3 f = 9
- 28. A* EXAMPLE g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 g = 7 h = 2 f = 9 T g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 6 h = 3 f = 9 g = 7 h = 2 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 4 h = 5 f = 9 g = 5 h = 4 f = 9 g = 6 h = 3 f = 9
- 29. A* EXAMPLE g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 S g = 1 h = 4 f = 5 g = 7 h = 2 f = 9 g = 8 h = 1 f = 9 T g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 1 h = 6 f = 7 g = 2 h = 5 f = 7 g = 6 h = 3 f = 9 g = 7 h = 2 f = 9 g = 8 h = 1 f = 9 g = 3 h = 8 f = 11 g = 2 h = 7 f = 9 g = 3 h = 6 f = 9 g = 4 h = 5 f = 9 g = 5 h = 4 f = 9 g = 6 h = 3 f = 9
- 31. MORE ABOUT HEURISTICS <ul><li>Depending heuristic, A* can be admissible . </li></ul><ul><li>This guarantees an optimal solution, despite using an estimate. </li></ul><ul><li>For A* to be admissible and guarantee an optimal solution we need: </li></ul><ul><ul><li> n, h(n) ≤ h*(n) </li></ul></ul><ul><li>h*(n) is the actual distance. </li></ul><ul><li>If the heuristic overestimates the actual distance, an optimal solution is not guaranteed. </li></ul>
- 32. MORE ABOUT HEURISTICS CONT’D <ul><li>For admissibility we also need monotonicity. </li></ul><ul><li>Satisfy triangle inequality h(n1) ≤ c(n1 -> n2) + h(n2) </li></ul>n1 goal h(n1) n2 c(n1->n2) h(n2)
- 33. FIDDLING WITH THE HEURISTIC <ul><li>Use the heuristic to balance speed vs. accuracy. </li></ul><ul><li>If h(n) = 0, then f(n) = g(n). </li></ul><ul><ul><li>In other words, A* becomes Dijkstra’s. </li></ul></ul><ul><li>If h(n) >> g(n), g(n) can be ignored. </li></ul><ul><ul><li>f(n) ≈ h(n). A* becomes Best-First-Search. </li></ul></ul><ul><li>In general: </li></ul><ul><ul><li>The bigger g(n) is, the more it expands, which makes it slower. </li></ul></ul><ul><ul><li>The bigger h(n) is, the more direct the search is, but better paths could be missed. </li></ul></ul>
- 34. FIDDLING WITH THE HEURISTIC 2 <ul><li>If h(n) = h*(n), then A* will find the optimal solution, and not expand anything unnecessary. </li></ul><ul><ul><li>Straight to the target. </li></ul></ul><ul><li>Only possible with good heuristic and no obstacles. </li></ul><ul><li>Can ‘fiddle’ with the heuristic and set it depending on the need. </li></ul><ul><li>Sometimes okay to get an approximate solution at the cost of a speed-up. </li></ul>
- 35. SPEED-ACCURACY SEE-SAW g(n) h(n) Speed Accuracy
- 36. FORMAL DEFINITION <ul><li>preCond : Input a grid/graph G with positive edge weights, a source node s, a target node t . </li></ul><ul><ul><li>Also given a admissible heuristic for estimating distances. </li></ul></ul><ul><li>postCond : Finds a shortest weighted path from s to t. </li></ul><ul><li>Loop Invariant: So far, the nodes have been handled in order of f(n), where f(n) = g(n) + h(n). </li></ul>
- 37. FORMAL DEFINITION CONT’D <ul><li>Step: Handle the found (not handled) node with min f(n). </li></ul><ul><ul><li>Store the parent for each cell – the cell through which the shortest path from s came. </li></ul></ul><ul><li>Exit: Stop when t has been found. </li></ul><ul><li>Obtaining the post condition: LI + Exit + Code => PostCond. </li></ul><ul><li>Proving the path we traced back is shortest: </li></ul><ul><ul><li>Prove there is a path of this length: We have one. </li></ul></ul><ul><ul><li>Prove there is no shorter path: ... </li></ul></ul>
- 38. PROOF THAT THERE IS NO BETTER PATH <ul><li>We know our heuristic is admissible, h(n) ≤ h*(n). </li></ul><ul><li>By LI, our path handles cells in order of the minimum of f(n) = g(n) + h(n). </li></ul><ul><li>All unhandled paths have a larger f(n) than ours. </li></ul><ul><li>We found t. So h(n)=0. f(n) becomes our actual - g(n). In other words, our actual cost is lower than the actual+ estimated of any other found node. </li></ul><ul><li>The estimated cost is always less than the actual cost. Meaning our actual cost is less than any other actual cost. </li></ul>COMPLICATED SLIDE. PAY ATTENTION!
- 39. CONFUSED? f(n) ≤ f(any) = g(any) + h(any) ≤ g(any) + actual(any) Our actual cost Any other found estimate Any other ‘actual’
- 40. WHAT IT ALL MEANS <ul><li>If heuristic is admissible, A* returns the shortest path. </li></ul><ul><li>It will find it by (likely) expanding and searching less cells than Dijkstra’s. </li></ul><ul><li>But if the condition that h(n) ≤ h*(n) is violated, we can no longer ensure optimality. </li></ul><ul><li>Should it always be optimal? </li></ul>
- 41. RUNNING TIME <ul><li>Well.... </li></ul><ul><li>Dijkstra’s O( | E | + | V |log | V | ) </li></ul><ul><ul><li>V = number of vertices, E = number of edges. </li></ul></ul><ul><li>Obviously it is possible for A* to search every edge as well, so we have no savings in the worst case. </li></ul><ul><li>Lets focus on the nodes instead: </li></ul><ul><li>Dijkstra’s O(V 2 ) </li></ul>
- 42. RUNNING TIME – DIJKSTRA’S S T Area of circle is O(L 2 )
- 43. RUNNING TIME – A* S T Area of half ellipse: O(L∙H)
- 44. RUNNING TIME – A* S T In total: O((L/n)∙H∙n) = O(L∙H)
- 45. ALL DONE! <ul><li>Thank you. Questions? </li></ul><ul><li>The algorithm was first described in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael </li></ul><ul><li>References & Resources: </li></ul><ul><ul><li>http://theory.stanford.edu/~amitp/GameProgramming/ (Great source) </li></ul></ul><ul><ul><li>http://www.policyalmanac.org/games/aStarTutorial.htm </li></ul></ul><ul><ul><li>http://en.wikipedia.org/wiki/A*_search_algorithm </li></ul></ul><ul><ul><li>http://www.cse.yorku.ca/course_archive/2008-09/W/3402/slides/Week3.pdf </li></ul></ul>

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment