Backward versions of any of the forward search algorithms of Section 2.2.2 can be made. For example, a backward version of Dijkstra's algorithm can be made by starting from . To create backward search algorithms, suppose that there is a single goal state, . For many planning problems, it might be the case that the branching factor is large when starting from . In this case, it might be more efficient to start the search at a goal state and work backward until the initial state is encountered. A general template for this approach is given in Figure 2.6. For forward search, recall that an action is applied from to obtain a new state, . For backward search, a frequent computation will be to determine for some , the preceding state , and action such that . The template in Figure 2.6 can be extended to handle a goal region, , by inserting all into in line 1 and marking them as visited.
For most problems, it may be preferable to precompute a representation of the state transition function, , that is ``backward'' to be consistent with the search algorithm. Some convenient notation will now be constructed for the backward version of . Let , which represents the set of all state-action pairs and can also be considered as the domain of . Imagine from a given state , the set of all that map to using . This can be considered as a backward action space, defined formally for any as
The interpretation of is easy to capture in terms of the state transition graph: reverse the direction of every edge. This makes finding a plan in the reversed graph using backward search equivalent to finding one in the original graph using forward search. The backward state transition function is the variant of that is obtained after reversing all of the edges. Each is a reversed edge. Since there is a perfect symmetry with respect to the forward search of Section 2.2.1, any of the search algorithm variants from Section 2.2.2 can be adapted to the template in Figure 2.6, provided that has been defined.
Steven M LaValle 2020-08-14