0% found this document useful (0 votes)
80 views37 pages

Artificial Intelligence: Pathfinding

The document discusses pathfinding algorithms for artificial intelligence. It introduces pathfinding and describes representing a search space using grids, waypoint graphs, or navigation meshes. It then covers five pathfinding algorithms - A*, Random-Trace, Breadth-First, Best-First, and Dijkstra - comparing their characteristics such as resource usage, path quality, and completeness. A* is described as combining qualities of Best-First and Dijkstra to efficiently find optimal paths.

Uploaded by

Exneyder Montoya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views37 pages

Artificial Intelligence: Pathfinding

The document discusses pathfinding algorithms for artificial intelligence. It introduces pathfinding and describes representing a search space using grids, waypoint graphs, or navigation meshes. It then covers five pathfinding algorithms - A*, Random-Trace, Breadth-First, Best-First, and Dijkstra - comparing their characteristics such as resource usage, path quality, and completeness. A* is described as combining qualities of Best-First and Dijkstra to efficiently find optimal paths.

Uploaded by

Exneyder Montoya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 37

Chapter 5.

4
Artificial Intelligence: Pathfinding
Outline
 Introduction to pathfinding
 5 pathfinding algorithms
 Summary

2
Introduction
 Almost every game requires pathfinding
 Agents must be able to find their way
around the game world
 Pathfinding is not a trivial problem
 The fastest and most efficient
pathfinding techniques tend to consume
a great deal of resources

3
Pathfinding algorithms
 A* algorithm
 Random-Trace
 Breadth-First
 Best-First
 Dijkstra

4
Representing
the Search Space
 Agents need to know where they can move
 Search space should represent either
 Clear routes that can be traversed
 Or the entire walkable surface
 Search space typically doesn’t represent:
 Small obstacles or moving objects
 Most common search space representations:
 Grids
 Waypoint graphs
 Navigation meshes

5
Grids
 2D grids – intuitive world representation
 Works well for many games including some
3D games such as Warcraft III
 Each cell is flagged as either Passable
or impassable
 Each object in the world can occupy
one or more cells

6
Characteristics of Grids
 Fast look-up
 Easy access to neighboring cells
 Complete representation of the level

7
Waypoint Graph
 A waypoint graph specifies lines/routes that
are “safe” for traversing
 Each line (or link) connects exactly two
waypoints
 An agent can choose to
walk along any of these
lines without having to
worry about running
into major obstacles
8
Characteristics
of Waypoint Graphs
 Waypoint node can be connected to any
number of other waypoint nodes
 Waypoint graph can easily represent
arbitrary 3D levels
 Can incorporate auxiliary information
 Such as ladders and jump pads
 Incomplete representation of the level

9
Navigation Meshes
 Combination of grids and waypoint graphs
 Every node of a navigation mesh represents a
convex polygon (or area)
 As opposed to a single position in a waypoint node
 Advantage of convex polygon
 Any two points inside can be connected without
crossing an edge of the polygon
 Navigation mesh can be thought of as a
walkable surface

10
Navigation Meshes (continued)

11
Characteristics of
Navigation Meshes
 Complete representation of the level
 Ties pathfinding and collision detection
together
 Can easily be used for 2D and 3D games

12
Searching for a Path
 A path is a list of cells, points, or nodes that
an agent must traverse
 A pathfinding algorithm finds a path
 From a start position to a goal position
 The following pathfinding algorithms can be
used on
 Grids
 Waypoint graphs
 Navigation meshes

13
Criteria for Evaluating
Pathfinding Algorithms
 Quality of final path
 Resource consumption during search
 CPU and memory
 Whether it is a complete algorithm
 A complete algorithm guarantees to find a
path if one exists

14
Random Trace
 Simple algorithm
 Agent moves towards goal
 If goal reached, then done
 If obstacle
 Trace around the obstacle clockwise or counter-
clockwise (pick randomly) until free path
towards goal
 Repeat procedure until goal reached

15
Random Trace Characteristics
 Not a complete algorithm
 Found paths are unlikely to be optimal
 Incapable of considering a wide variety
of paths
 Consumes very little memory

16
Random Trace (continued)
 How will Random Trace do on the
following maps?

17
Understanding A*
 To understand A*
 First understand Breadth-First, Best-First,
and Dijkstra algorithms
 A* is a combination of Best-First and
Dijkstra
 These algorithms use nodes to
represent candidate paths
 They keep track of numerous paths
simultaneously
18
Understanding A*
class PlannerNode
{
public:
PlannerNode *m_pParent;
int m_cellX, m_cellY;
...
};

 The m_pParent member is used to chain nodes


sequentially together to represent a path

19
Understanding A*
 All of the following algorithms use two lists
 The open list

 The closed list

 Open list keeps track of promising nodes


 When a node is examined from open list
 Taken off open list and checked to see whether it has

reached the goal


 If it has not reached the goal
 Used to create additional nodes

 Then placed on the closed list

 The closed nodes are those that do not correspond to the goal
cell and have been processed already
20
Overall Structure of the
Algorithms
1. Create start point node – push onto open list
2. While open list is not empty
A. Pop node from open list (call it currentNode)
B. If currentNode corresponds to goal, break from
step 2
C. Create new nodes (successors nodes) for cells
around currentNode and push them onto open list
D. Put currentNode onto closed list

21
Main different between 5
pathfinding algorithms
 Breadth-First always processes the node
that has been waiting the longest
 Best-First always processes the one that
is closest to the goal
 Dijkstra processes the one that is the
cheapest to reach from the start cell
 A* chooses the node that is cheap and
close to the goal

22
Breadth-First
 Finds a path from the start to the goal by
examining the search space step by step
 It checks all the cells that are one step from
the start, and then checks cells that are two
plies from the start, and so on.
 This is because the algorithm always
processes the node that has been waiting the
longest.

23
Bread-First cont’
 It uses a queue as the open list
 Once a node is created, it is pushed to
the back of the queue
 So that the node at the front of the
queue is always the one that has been
waiting the longest

24
Breadth-First Characteristics
 Exhaustive search
 Systematic, but not clever
 Consumes substantial amount of CPU and
memory
 Guarantees to find paths that have fewest
number of nodes in them
 Not necessarily the shortest distance!
 Search as hard in the direction away from the
goal as it does toward the goal
 Complete algorithm

25
Bread-First example

26
Best-First
 Uses problem specific knowledge to
speed up the search process
 Head straight for the goal
 Computes the distance of every node to
the goal
 Uses the distance (or heuristic cost) as a
priority value to determine the next node
that should be brought out of the open list
27
Best-First (continued)

28
Best-First (continued)
 Situation where Best-First finds a suboptimal path

29
Best-First Characteristics
 Heuristic search
 Uses fewer resources than Breadth-First
 Tends to find good paths
 No guarantee to find most optimal path
 Complete algorithm

30
Dijkstra
 Disregards distance to goal
 Keeps track of the cost of every path
 No guessing
 Computes accumulated cost paid to
reach a node from the start
 Uses the cost (called the given cost) as a
priority value to determine the next node
that should be brought out of the open list
31
Dijkstra Characteristics
 Exhaustive search
 At least as resource intensive as
Breadth-First
 Always finds the most optimal path
 Complete algorithm

32
A*
 It uses an admissible heuristic function that
never overestimates the true cost
 Uses both heuristic cost (the estimated cost
to reach the goal) and given cost (the actual
cost paid to reach a node from the start) to
order the open list
 Final Cost = Given Cost + (Heuristic Cost * Heuristic Weight)

33
A* cont’
 Final Cost = Given Cost + (Heuristic Cost *
Heuristic Weight)
 Heuristic weight can be used to control the amount
of emphasis on the heuristic cost versus the given
cost.
 It can control whether A* should behave more like
Best-First or Dijkstra.
 If hw=0, final cost will be the given cost ->Dijkstra
 If hw >>1, it will behave just like Best-First

34
A* (continued)
 Avoids Best-First trap!

35
A* Characteristics
 Heuristic search
 On average, uses fewer resources than
Dijkstra and Breadth-First
 Admissible heuristic guarantees it will find the
most optimal path
 Complete algorithm

36
Summary
 Two key aspects of pathfinding:
 Representing the search space
 Searching for a path

37

You might also like