|
PBeFS
Parallel Best-First Search
|
Header file for the concepts a search problem has to satisfy in order to be searched by the algorithms of the library, and for the few type helpers built upon them. More...
#include <concepts>#include <cstddef>#include <cstdint>#include <type_traits>#include <utility>#include "PBeFS/core/SearchUtils.h"Go to the source code of this file.
Classes | |
| struct | OperatorOf< D > |
| the operator that generated a state, kept in a message [see OperatorDomain]; an empty type, with op always no_op, when D is not an OperatorDomain, so that a message with [[no_unique_address]] on it does not grow More... | |
| struct | OperatorOf< D > |
Namespaces | |
| namespace | PBeFS_di_unipi_it |
| namespace for the Parallel Best-First Search library | |
Concepts | |
| concept | PBeFS_di_unipi_it::Domain |
| a search domain | |
| concept | PBeFS_di_unipi_it::FeatureDomain |
| a Domain whose states are described by a set of features | |
| concept | PBeFS_di_unipi_it::IncrementalFeatureDomain |
| a FeatureDomain that also gives the features changed by a move | |
| concept | PBeFS_di_unipi_it::AbstractFeatureDomain |
| a FeatureDomain that also provides a feature projection | |
| concept | PBeFS_di_unipi_it::AbstractStateDomain |
| a Domain with a state abstraction | |
| concept | PBeFS_di_unipi_it::NBlockDomain |
| a Domain whose state space is partitioned into nblocks | |
| concept | PBeFS_di_unipi_it::PairwiseDomain |
| a Domain with a heuristic between any two states | |
| concept | PBeFS_di_unipi_it::OperatorDomain |
| a Domain that knows the operator by which a state was generated | |
| concept | PBeFS_di_unipi_it::PerfectHashDomain |
| a Domain with a perfect hash of its states | |
Typedefs | |
| template<Domain D> | |
| using | state_t = typename D::state_type |
| the state type of a Domain | |
| template<Domain D> | |
| using | cost_t = typename D::cost_type |
| the cost type of a Domain | |
Functions | |
| template<Domain D, class F> | |
| void | for_each_child (const D &d, const state_t< D > &s, cost_t< D > h, std::uint8_t op, F &&f) |
| the successors of s but its parent, when D knows the operators | |
Variables | |
| constexpr std::uint8_t | no_op = 0xFF |
| the operator of the root, which no state was generated by | |
Header file for the concepts a search problem has to satisfy in order to be searched by the algorithms of the library, and for the few type helpers built upon them.
A domain describes an implicit state-space graph in the sense of Edelkamp and Schroedl: an initial state, a goal predicate, and an expansion procedure that enumerates the successors of a state together with the cost of the edge and the heuristic value of the successor. All the searches are templates over the domain, so that no virtual call is paid in the inner loop [see Burns et al., SoCS 2012].