Вы находитесь на странице: 1из 12

Iterative Deepening

G51IAI Introduction to AI Andrew Parkes


http://www.cs.nott.ac.uk/~ajp/

Motivations
BFS & A*
good for optimality bad on memory, O(bd)

DFS
solutions not guaranteed optimal: dives and misses good nodes good for memory O(bd)

Iterative Deepening refers to a method that tries to combine the best of the above

Depth-Limited Search
Simply put an upper limit on the depth (cost) of paths allowed Motivation:
e.g. inherent limit on range of a vehicle
tell me all the places I can reach on 10 litres of petrol

prevents search diving into deep solutions might already have a solution of known depth (cost), but are looking for a shallower (cheaper) one

Depth-Limited Search
Impose an upper limit on the depth (cost) of paths allowed
Only add nodes to the queue if their depth does not exceed the bound

DepthLimitedDFS ( k ) : DFS but only consider nodes with depth d k

Trees: Depth-Limited
Depth limit of 2 would mean that children of E are ignored
d=0

d=1

d=2

d=3

d=4

Iterative Deepening Search


Follow the BFS pattern of search all nodes of depth d before depth d+1 But do the search at depth d using Depth-Limited-DFS
Schematically: IDS: k=0; while ( not success && k < depth of tree ) { Depth-Limited-DFS ( k ); k++ }

Properties of IDS
Memory Usage
Same as DFS O(bd)

Time Usage:
Worse than BFS because nodes at each level will be expanded again at each later level BUT often is not much worse because almost all the effort is at the last level anyway, because trees are leaf heavy Typically might be at most a factor two worse

Memory Usage of A*
We store the tree in order to
to return the route avoid repeated states

Takes a lot of memory But scanning a tree is better with DFS

IDA*
Combine A* and iterative deepening f is the estimate of total path cost for start to goal IDA*:
Impose a limit on f Use DFS to search within the f limit Iteratively relax the limit

Greatly reduces memory usage Can repeat far too much work, and so be slow

Summary
Algorithm IDS:
IDS : BFS plus DFS for tree search

Algorithm IDA*:
the basis of state of the art complete & optimal algorithms

Summary
BFS & A*: good for optimality, but not memory DFS: good for memory O(bd), but not optimality Iterative Deepening refers to
IDS Iterative Deeepening Search
mix of DFS and BFS on trees

Self-Study: carefully work through ids.ppt Expectations:

a broad approach used for general search, with general aim to combine optimality with low memory usage of DFS

know about the motivations and ideas and the search pattern do not need details of how to code IDA*

Questions?

Вам также может понравиться