0% found this document useful (0 votes)
120 views

A Star

The A* algorithm is used to find the shortest path between a starting node and a goal node in a graph. It works by using both an actual cost function g(n), which represents the cost to reach the current node, as well as a heuristic cost function h(n), which estimates the cost to reach the goal node from the current node. The algorithm selects the next node to expand based on minimizing the total estimated cost f(n)=g(n)+h(n). If the heuristic h(n) is admissible (does not overestimate cost) and consistent (estimated cost to reach goal never decreases along path), then A* is guaranteed to find the optimal shortest path. A* has been used for

Uploaded by

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

A Star

The A* algorithm is used to find the shortest path between a starting node and a goal node in a graph. It works by using both an actual cost function g(n), which represents the cost to reach the current node, as well as a heuristic cost function h(n), which estimates the cost to reach the goal node from the current node. The algorithm selects the next node to expand based on minimizing the total estimated cost f(n)=g(n)+h(n). If the heuristic h(n) is admissible (does not overestimate cost) and consistent (estimated cost to reach goal never decreases along path), then A* is guaranteed to find the optimal shortest path. A* has been used for

Uploaded by

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

The A* Algorithm

Hctor Muoz-Avila

The Search Problem


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

5
25

33

15

18

Shortest Path
Consider the following weighted undirected graph:

We want:

10
2

16
6
10

22
8

20

18

20

20
24

6
66

A path 5 v1 v2 20

Such that g(20) = cost(5v1) + cost(v1 v2) + + cost ( 20)


is minimum

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

10
15
20

5
25

33

15
18

Djikstra Algorithm

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}
T

Djikstras algorithm
pick the edge v in
Fringe(T) that has
minimum distance to
the starting node
g(v) is minimum

Example
7

10
2

16
6
10

22
8

20
18

20

20
24

6
66

Properties

Dijkstras is a greedy algorithm

Why Dijkstras Algorithm works?

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


T

x
20

15

VT

20
6

Example

What does Djikstras algorithm will do? (minimizing g(n))


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

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

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

Lets Try A Heuristic

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


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

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)

estimated cost

actual cost

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
h(n)
20
g(n)
15
n
10
5
15
18
20
25
33

Example

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

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)
h(n) c(n,n) + h(n)
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

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

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?

Example: Admissible Heuristics in 8Puzzle 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)

Using A* in Planning

A
C
B
B
C
A

C
A B
C
A B

C
A
B

A
B C

C
B
A

B
A C

A B C

A
B C

A
B
C

B
C

B
A
C

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

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

You might also like