Title: SetA
1SetA
- An Efficient BDD-Based Heuristic Search Algorithm
2BDD-based Search
- Binary Decision Diagram
- A BDD is a directed acyclic graph representing a
Boolean function - Each state is encoded as a bit vector
3G
c
h0 (0,1)
(1,1) h0
b
d
a
h1 (0,0)
(1,0) h1
i
4-tuple represents search problems (S, T, i,
G) S set of states T transition
function i initial state G goal states
T(so, s1, s?0, s?1) ?s0 ? ? s1 ? s?0 ? ?
s?1 ? ?s0 ? ? s1 ? ? s?0 ? s?1 ? ?s0 ? s1 ?
s?0 ? s?1 ? s0 ? s1 ? s?0 ? ? s?1
We want to get from the start state, i, to the
goal state, G
4(No Transcript)
5Problems with BDD Search
- Intermediate BDDs tend to be large compared to
the BDD representing the result - Can be solved with disjunctive partitioning
6SetA
- Generalization of weighted A
- f(1-w)g wh, w ? 0,1
- Assumes finite search domain and unit-cost
transitions - Expands a set of states instead of just a single
state - Input is an improvement partitioning (i.e.) the
h-value is reduced by the same amount
7SetA Data Structures
- Priority Queue and Reach Structure
- Each node in the queue contains a BDD
representing the states with particular g and h
values - Lowest f-value has highest priority
- Lowest h-value breaks ties
- Upper bound limits the size nodes
- Reach structure is for loop detection
8SetA Algorithm
- Insert initial state onto queue
- Compute h-value on initial state
- Loop until queue is empty or reached goal
- Pop node of queue
- Find the image of it and the Improvement function
- Prune states seen before
- Path is extracted by applying transitions
backwards
9Function SetA(IP, init, goal, u,
w) Q.initialize(u,w,goal) g lt- 0 h lt-
h(init) Q.insert(init, g, h) R.update(init,
g) while ?Q.empty() and ?Q.topAtGoal() top lt-
Q.pop() for j 0 to IP next lt- image(top,
IPj) R.prune(next) g lt- top.g 1 h lt-
top.h impr(IPj) Q.insert(next, g,
h) R.update(next, g) if Q.empty() then
NoPathExists else R.extractPath()
10Weight
- For w 0.5 SetA behaves like A
- For w 0.0 SetA behaves like best-first search
- For w 1.0 SetA behaves like breadth-first
search - Can be used to compensate for a bad heuristic
11Improvement Partitioning
- A disjunctive partitioning where the transitions
of a partition will reduce the h-value by the
same amount - The improvement partitioning is non-trival to
compute - Only needs to be computed once, prior to the
search
12Intro to IGk problem
- A state is a set of facts and an action is a
triple sets of facts - Actions are (pre, add, del)
- Solution is non-trivial to find since the
heuristic gives no information to guide the
search for the first k steps
13IGK
14Intro to DxVyMz
- A set of sliders are moved between the corner
positions of hyercubes - A corner can be occupied by at most one slider
- Dimension of the hyercube is y
- There are z sliders
- x sliders are on the same cube
15Example D5V3M7
?
?
?
?
?
?
?
16DxV4M15
17Gripper Experiment
18Logistics Experiment
19Conclusion
- Successfully combined BDD-based search and
heuristic search - Several order of magnitude faster than BDD based
breadth-first search and A - However, success may be due to an inherent
simplicity of the benchmark domains when using
the right heuristics