1 of 20

The A* Algorithm

Héctor Muñoz-Avila

2 of 20

The Search Problem

Starting from a node n find the shortest path to a goal node g

10

15

20

?

20

15

5

18

25

33

3 of 20

Shortest Path

Consider the following weighted undirected graph:

5

2

7

10

18

22

66

20

10

20

16

4

6

8

24

20

6

9

We want:

A path 5 🡪 v1 🡪 v2 🡪 … 🡪 20

Such that g(20) = cost(5🡪v1) + cost(v1🡪 v2) + … + cost ( 🡪20) is minimum

4 of 20

Djikstra Algorithm

Greedy algorithm: from the candidate nodes select the one that has a path with minimum cost from the starting node

10

15

20

?

20

15

5

18

25

33

5 of 20

Djikstra Algorithm

T

Given a Graph G = (V,E) and T a subset of V, the fringe of T, is defined as:

Fringe(T) = { (w,x) in E : w ∈ T and x ∈V − T}

Djikstra’s algorithm pick the edge v in Fringe(T) that has minimum distance to the starting node

g(v) is minimum

6 of 20

Example

5

2

7

10

18

22

66

20

10

20

16

4

6

8

24

20

6

9

7 of 20

Properties

Dijkstra’s is a greedy algorithm

Why Dijkstra’s Algorithm works?

T

V  T

The path from u to every node in T is the minimum path

w

u

r

s

v

6

20

20

x

7

15

8 of 20

Example

What does Djikstra’s algorithm will do? (minimizing g(n))

Problem: Visit too many nodes, some clearly out of the question

9 of 20

Complexity

  • Actual complexity is O(|E|log2 |E|)
  • Is this good?

Actually it is bad for very large graphs!

Branching factor: b

….

….

# nodes = b(# levels)

Another Example: think of the search space in chess

10 of 20

Better Solution: Make a ‘hunch”!

  • Use heuristics to guide the search
    • Heuristic: estimation or “hunch” of how to search for a solution
  • We define a heuristic function:

h(n) = “estimate of the cost of the cheapest path from the starting node to the goal node

11 of 20

Lets Try A Heuristic

Heuristic: minimize h(n) = “Euclidean distance to destination”

Problem: not optimal (through Rimmici Viicea and Pitesti is shorter)

12 of 20

The A* Search

  • Difficulty: we want to still be able to generate the path with minimum cost

  • A* is an algorithm that:
    • Uses heuristic to guide search
    • While ensuring that it will compute a path with minimum cost

  • A* computes the function f(n) = g(n) + h(n)

“actual cost”

“estimated cost”

13 of 20

A*

  • f(n) = g(n) + h(n)
    • g(n) = “cost from the starting node to reach n”
    • h(n) = “estimate of the cost of the cheapest path from n to the goal node

10

15

20

20

15

5

18

25

33

n

g(n)

h(n)

14 of 20

Example

A*: minimize f(n) = g(n) + h(n)

15 of 20

Properties of A*

  • A* generates an optimal solution if h(n) is an admissible heuristic and the search space is a tree:
    • h(n) is admissible if it never overestimates the cost to reach the destination node
  • A* generates an optimal solution if h(n) is a consistent heuristic and the search space is a graph:
    • h(n) is consistent if for every node n and for every successor node n’ of n:

h(n) ≤ c(n,n’) + h(n’)

n

n’

d

h(n)

c(n,n’)

h(n’)

  • If h(n) is consistent then h(n) is admissible
  • Frequently when h(n) is admissible, it is also consistent

16 of 20

Admissible Heuristics

  • A heuristic is admissible if it is too optimistic, estimating the cost to be smaller than it actually is.

  • Example:

In the road map domain,

h(n) = “Euclidean distance to destination”

is admissible as normally cities are not connected by roads that make straight lines

17 of 20

How to Create Admissible Heuristics

  • Relax the conditions of the problem
    • This will result in admissible heuristics!

  • Lets look at an 8-puzzle game:

http://www.permadi.com/java/puzzle8/

  • Possible heuristics?

18 of 20

Example: Admissible Heuristics in 8-Puzzle Game

  • Heuristic: a tile A can be moved to any tile B
    • H1(n) = “number of misplaced tiles in board n”

  • Heuristic: a tile A can be moved to a tile B if B is adjacent to A
    • H2(n) = “sum of distances of misplaced tiles to goal positions in board n”

  • Some experimental results reported in Russell & Norvig (2002):
    • A* with h2 performs up to 10 times better than A* with h1
    • A* with h2 performs up to 36,000 times better than a classical uninformed search algorithm (iterative deepening)

19 of 20

Using A* in Planning

A

C

B

A

B

C

A

C

B

C

B

A

B

A

C

B

A

C

B

C

A

C

A

B

A

C

B

B

C

A

A

B

C

A

B

C

A

B

C

h(n) = “# of goals remaining to be satisfied” g(n) = “# of steps so far”

20 of 20

A* in Games

  • Path finding (duh!)
    • We will have several presentations on the topic
    • We will see that sometimes even A* speed improvements are not sufficient
    • Additional improvements are required

  • A* can be used for planning moves computer-controlled player (e.g., chess)

  • F.E.A.R. uses A* to plan its search