PBeFS
Parallel Best-First Search
Loading...
Searching...
No Matches
Domain.h File Reference

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

Detailed Description

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].

Author
Donato Meoli
Dipartimento di Informatica
Università di Pisa