260 likes | 428 Views
Problem. Write an algorithm that calculates the most efficient route between two points as quickly as possible. Introduction to Algorithms. Search techniques. Breadth-first search (BFS) Depth-first search (DFS) Tree spanning Greedy best-first search Dijkstra’s algorithm.
E N D
Problem Write an algorithm that calculates the most efficient routebetween two points as quickly as possible.
Search techniques • Breadth-first search (BFS) • Depth-first search (DFS) • Tree spanning • Greedy best-first search • Dijkstra’s algorithm
Improving search performance • Guided search • Uses an heuristic to improve performance • Guaranteed to find a path if one exists • Like other searches • … but will always return the optimum path with admissible heuristic
Heuristics • An heuristic is an experience-based technique used for problem-solving, learning and discovery • Solution is not guaranteed to be optimal • Speeds up process of finding a satisfactory solution using shortcuts • Could be called ‘computational best-guesswork’
Heuristics • Strategies using readily accessible, if not always strictly applicable, information to control and influence problem solving
Heuristics • Common heuristics in humans include • Trial and error • Drawing a picture • Writing out an algorithm • Assuming you have a solution and attempting to derive from that (‘working backwards’) • Talking to someone about a problem • Obtaining a concrete example of an abstract problem • Trying for a general solution before the specific one (‘inventor’s paradox’) • Putting a problem aside and coming back to it later • Getting someone else to do it for you
Admissibility • An heuristic is admissible if and only if it is optimistic • An ‘optimistic’ heuristic will never over-estimate the remaining cost to the goal from any given node n • Assume • n is a node • h is an heuristic • h(n) is the heuristic cost • C(n) is the actual cost
Admissibility • An admissible heuristic can be derived from • Induction and inductive learning • Information from databases with solutions to subproblems • Relaxed versions of the problem
A* basics • Best-first search • Finds a least-cost path from initial node to goal node • Uses a knowledge-plus-heuristic cost to determine search order • Complete and admissible • Will always find a solution if it exists • Guaranteed to find the shortest path between nodes
A* basics • Maintains 2 pieces of information • Open list • Contains candidate nodes which may lie along the path • Closed list • Contains nodes which have the lowest path score so far • Nodes move between lists based on current information
A* basics • Uses a knowledge-plus-heuristic cost • Knowledge • Movement cost to reach node nk from initial node n0G • Heuristic cost to reach target node nt from node nkH • Lowest total path cost to node nk is given by F = G + H • Best path is given by sequence of nodes with lowest F
A* algorithm 1 • Add initial node n0 to open list • Do • Find the node with the lowest F cost on the open list, nc • Remove nc from the open list and add it to the closed list • For all nodes nk connected to nc • If node is on the closed list or not traversable (e.g. a wall): ignore it • If node is not on the open list: add it, record costs, make nc its parent • If node is already on the open list: check to see if this path to nc is better (i.e. a lower G score); if so, change parent of nc to nk and recalculate its G and F scores (may require resorting of open list) • Until • If nt is added to the closed list, path has been found • If open list is empty, there is no path
A* algorithm 2 • Derive path if one exists • Begin at target node nt • Follow chain of parent nodes back to node n0 • Reverse order of nodes to derive path
A* heuristics • There are some ‘standard heuristics’ • G • For square grids, often the ‘Manhattan distance’ • Orthogonal movement costs 10 or 1 • Diagonal movement costs 14 or 1.4 • For other graphs, the edge cost is generally used • H • Straight-line distance often used • Numerous other heuristics are possible (Manhattan, cross-product…)
A* heuristics • Scales must be the same for both heuristics! • What happens if scales are not the same? • Firstly, heuristic is probably inadmissible (overestimates cost) • Won’t find the best path • Might take longer to run • In short, will not find the best path in the best time
A* performance • Speed: O(bd) • Memory requirement: O(bd) • … why? • Same as Dijkstra’s algorithm • Dijkstra’s algorithm is effectively A* with H = 0 for all nodes
References Useful A* resources http://www.policyalmanac.org/games/aStarTutorial.htm http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html http://heyes-jones.com/astar.php Images from http://www.policyalmanac.org/games/aStarTutorial.htm