|
PBeFS
Parallel Best-First Search
|
Header file for the class template PASE, Parallel A* for Slow Expansions of Phillips, Likhachev and Koenig (ICAPS 2014). More...
#include <algorithm>#include <cmath>#include <compare>#include <condition_variable>#include <cstdint>#include <memory>#include <mutex>#include <tuple>#include <type_traits>#include <utility>#include <vector>#include "PBeFS/astar/HDAStar.h"#include "ADS/tree/BTreeMap.h"Go to the source code of this file.
Classes | |
| struct | PASEOptions |
| the options of PASE More... | |
| class | PASE< D, Executor > |
| Parallel A* for Slow Expansions. More... | |
Namespaces | |
| namespace | PBeFS_di_unipi_it |
| namespace for the Parallel Best-First Search library | |
Header file for the class template PASE, Parallel A* for Slow Expansions of Phillips, Likhachev and Koenig (ICAPS 2014).
The search follows Algorithm 1 of Phillips, Likhachev and Koenig (ICAPS 2014), with the notation of the page "Best-first search and A*" of the documentation: BE is the set of the states being expanded, OPEN is an ordered set by increasing \( f \) and, for equal \( f \), by decreasing \( g \), \( h( t , s ) \) is the pairwise heuristic of the Domain, \( \varepsilon_p \geq 1 \) the inflation of the independence rule, and one lock \( L \) protects OPEN, BE and CLOSED:
A state \( s \) is independent of \( t \) when \( g( s ) - g( t ) \leq \varepsilon_p \, h( t , s ) \), since then no path through \( t \) can lower \( g( s ) \) below \( g( s ) / \varepsilon_p \); by Theorem 2 of the paper only the states of OPEN with a smaller \( f \) have to be checked (line 26). With \( \varepsilon_p = 1 \) a state is expanded only with its optimal \( g \), hence at most once, and a closed state is never improved (line 19); the goal is returned as soon as it is safe (line 11), with an optimal cost, or within a factor \( \varepsilon_p \) of the optimum otherwise (Theorem 3 of the paper). The scan at line 6 is limited to the first 64 states of OPEN, which bounds the time spent under the lock: a state further down would have to be checked against a longer prefix of OPEN, and with BE empty the first state is always safe, so that the search goes on. For real costs the test at lines 25 and 27 allows a relative error of \( 10^{-9} \), so that the rounding does not make the goal dependent on the states of equal \( f \).