Progression and Regression Search
Source slide: C2 Progression and Regression Search
Explicit search still leaves an important design choice open: which direction should the search go? A planner can start from the initial state and move forward through applicable operators, or it can start from the goal description and reason backward about what must have been true before the last action.
These two choices are called progression and regression. They solve the same planning task, but their search states have different meanings.
Progression Search
Section titled “Progression Search”Progression is forward search. Its search states are ordinary world states: complete truth assignments over the planning variables. From a state , the planner applies an applicable operator and generates the successor state .
For a task , the progression interface is:
init()returns ;is_goal(s)tests whether ;succ(s)returns each pair such that is applicable in ;cost(o)returns .
This is the most direct implementation of the induced transition system. The nodes of the search graph are the states of the planning task, and the edges are operator applications.
How to Read a Progression Step
Section titled “How to Read a Progression Step”Suppose the current state satisfies the precondition of an operator . Progression asks only one local question:
What state results if is executed now?
The answer is determined by the operator semantics from the formal-definition chapter. Preconditions are checked in the current state, effects fire according to their effect conditions, and unaffected variables keep their values.
Progression is simple and efficient because successor generation is concrete. Given and , there is at most one resulting state. The drawback is that the search may branch over many applicable operators and may still need to visit a large number of individual states.
Regression Search
Section titled “Regression Search”Regression is backward search, but backward search in planning is not just forward search with arrows reversed. The reason is that the goal is usually not a single complete state. It is a formula that describes a set of acceptable states.
So regression search states are formulas, often called subgoals. A subgoal represents all world states that satisfy . Regressing over an operator asks:
What must have been true before applying so that is true afterward?
The high-level regression interface is:
init()returns the goal formula ;is_goal(\varphi)tests whether ;succ(\varphi)returns predecessor subgoals for relevant operators ;cost(o)returns .
A solution is found when the backward search reaches a subgoal that is already true in the initial state. Reading the resulting operator sequence in the forward direction gives a plan.
Why Regression Is Harder in General
Section titled “Why Regression Is Harder in General”Regression can be attractive because one formula may represent many states. The formula , for instance, represents every complete state where both atoms hold, regardless of all unrelated variables.
The cost is that search operations become logical operations. Duplicate detection may require asking whether two formulas describe the same set of states. Pruning may require checking entailment. These problems can be NP-complete or coNP-complete for general formulas.
This is why the course immediately pays attention to STRIPS regression. STRIPS keeps subgoals in a very simple syntactic form: conjunctions of atoms.
STRIPS Regression
Section titled “STRIPS Regression”Assume is a conjunction of atoms:
Let be a STRIPS operator with add effects and delete effects . The STRIPS regression of over is:
This formula is easier to read as an algorithm.
- Check whether deletes anything required by . If it does, cannot be the last action for this subgoal, so regression returns .
- Remove from the atoms that adds. Those atoms need not be true before , because will make them true.
- Add the preconditions of . They must be true before can be applied.
The result is again a conjunction of atoms, unless regression fails. That closure property is the main reason STRIPS regression is clean.
A Small Regression Example
Section titled “A Small Regression Example”Suppose the current subgoal is:
Consider an operator deliver with:
The operator does not delete or , so it is not rejected by the conflict check. It adds , so that atom is removed from the subgoal. Its preconditions are then added. The regressed subgoal is:
This means: if, before executing deliver, the package is in the truck, the truck is at the destination, and payment has already been made, then after executing deliver, the original subgoal will hold.
Now suppose deliver deleted . Then it could not be the final action for the subgoal , because it would destroy something the goal needs. Regression would return .
The Regression Property
Section titled “The Regression Property”The correctness of STRIPS regression is captured by the regression property:
The left side talks about the state before applying . The right side talks about the state after applying . The property says that the regressed formula is exactly the weakest kind of subgoal we need before for to hold afterward, within the STRIPS setting used here.
This equivalence is what makes backward search meaningful. If a backward path reaches a formula true in the initial state, then applying the selected operators forward will satisfy each later subgoal and finally the original goal.
Choosing a Direction
Section titled “Choosing a Direction”Progression and regression expose different structure.
Progression is usually straightforward to implement because it works with concrete states and concrete successor generation. It can use standard graph-search machinery directly.
Regression can focus on facts relevant to the goal. Instead of considering all consequences of actions from the initial state, it asks which actions could have achieved the current subgoal. In STRIPS, it is common to consider only operators that add at least one atom in the current subgoal.
The trade-off is that regression search states are formulas, not world states. In general planning this makes the machinery more expensive. In STRIPS, the formula shape stays simple enough that regression becomes a practical concept to study.
What Can Go Wrong
Section titled “What Can Go Wrong”A common mistake is to remove delete effects from the subgoal in the same way as add effects. That is backwards. If an operator deletes an atom required by the subgoal, the operator conflicts with being the last step and regression fails.
Another mistake is to forget that regression produces a condition on the predecessor state. The regressed formula is not what becomes true after the operator; it is what must already be true before the operator.
Finally, progression and regression do not necessarily explore the same intermediate objects. Progression visits complete states. Regression visits formulas that denote sets of states. This difference affects duplicate detection, pruning, and heuristic design.
Chapter Summary
Section titled “Chapter Summary”Progression search moves forward from the initial state through concrete world states. Regression search moves backward from the goal through formulas that describe sets of possible predecessor states. General regression requires logical reasoning over formulas, which can be expensive. For STRIPS tasks, regression has a simple form: reject operators that delete required atoms, remove atoms achieved by the operator, and add the operator preconditions. The regression property connects the backward formula to the forward execution semantics.
Check Your Understanding
Section titled “Check Your Understanding”- What is the search state in progression, and what is the search state in regression?
- Why is backward search in planning not just the reverse of forward search?
- In STRIPS regression, why are added atoms removed from the subgoal?
- What does it mean when ?
- How does the regression property justify using backward search to find a forward plan?