The algorithm fits directly into the framework of Section 14.3.4. A search graph is constructed incrementally from by applying any systematic search algorithm. It is assumed that the system has been discretized in some way. Most often, the discrete-time model of Section 14.2.2 is used, which results in a fixed and a finite set of actions.

In the basic search algorithms of Section 2.2.1, it is
important to keep track of which vertices have been explored. Instead
of applying this idea to vertices, it is applied here to cells. A
cell is called *visited* if the search graph that has been
constructed so far contains a vertex in ; otherwise, is called
*unvisited*. Initially, only the cell that contains is
marked as *visited*. All others are initialized to *unvisited*. These labels are used to prune the reachability graph
during the search, as shown in Figure 14.16.

The basic algorithm outline is shown in Figure 14.17.
Let represent a priority queue in which the elements are vertices
of the search graph. If optimization of a cost functional is
required, then may be sorted by the cost accumulated along the
path constructed so far from to . This cost can be
assigned in many different ways. It could simply represent the time
(number of steps), or it could count the number of times the
action has changed. As the algorithm explores, new candidate vertices
are encountered. They are only saved in the search graph and placed
into if they lie in a cell marked *unvisited* and are
violation-free. Upon encountering such a cell, it becomes marked as
*visited*. The REACHED function generates a set of
violation-free trajectory segments. Under the discrete-time model,
this means applying each over time and
reporting only those states reached without violating the constraints
(including collision avoidance).

As usual, the BVP issue may arise if is small relative to the cell size. If is large enough to include entire cells, then this issue is avoided. If is a single point, then it may only be possible to approximately reach . Therefore, the algorithm must accept reaching to within a specified tolerance. This can be modeled by defining to be larger; therefore, tolerance is not explicitly mentioned.

Steven M LaValle 2020-08-14