Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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?