19#ifndef __PBeFS_SlowDomain
20 #define __PBeFS_SlowDomain
64 SlowDomain(
const D & d ,
unsigned long work ) : f_d( d ) , f_work( work ) {}
67 return( f_d.initial_state() );
71 return( f_d.is_goal( s ) );
75 return( f_d.hash( s ) );
79 return( f_d.heuristic( s ) );
88 f_d.for_each_successor( s , h , std::forward< F >( f ) );
93 std::uint8_t op , F && f )
const
96 f_d.for_each_successor( s , h , op , std::forward< F >( f ) );
107 f_d.for_each_feature( s , std::forward< F >( f ) );
112 return( f_d.num_abstract_features() );
133 f_d.for_each_nblock_successor( b , std::forward< F >( f ) );
143 void work(
void )
const {
145 for(
unsigned long k = 0 ; k < f_work ; ++k )
146 i = ( 11 * i ) % 9999943;
151 unsigned long f_work;
152 inline static thread_local std::uint64_t c_sink = 0;
Header file for the concepts a search problem has to satisfy in order to be searched by the algorithm...
std::size_t num_nblocks(void) const
Definition SlowDomain.h:124
std::size_t nblock(const state_type &s) const
Definition SlowDomain.h:127
cost_type pairwise_heuristic(const state_type &s, const state_type &t) const
Definition SlowDomain.h:136
bool is_goal(const state_type &s) const
Definition SlowDomain.h:70
std::size_t num_abstract_features(void) const
Definition SlowDomain.h:110
SlowDomain(const D &d, unsigned long work)
constructor, taking the Domain (which must outlive this) and the work
Definition SlowDomain.h:64
state_type initial_state(void) const
Definition SlowDomain.h:66
void for_each_successor(const state_type &s, cost_type h, F &&f) const
the successors of D, after work iterations of busy work
Definition SlowDomain.h:85
std::uint64_t hash(const state_type &s) const
Definition SlowDomain.h:74
void for_each_successor(const state_type &s, cost_type h, std::uint8_t op, F &&f) const
Definition SlowDomain.h:92
std::uint64_t abstract_state(const state_type &s) const
Definition SlowDomain.h:118
std::size_t num_features(void) const
Definition SlowDomain.h:101
void for_each_feature(const state_type &s, F &&f) const
Definition SlowDomain.h:105
std::size_t abstract_feature(std::size_t i) const
Definition SlowDomain.h:115
cost_type heuristic(const state_type &s) const
Definition SlowDomain.h:78
std::uint64_t perfect_hash(const state_type &s) const
Definition SlowDomain.h:121
void for_each_nblock_successor(std::size_t b, F &&f) const
Definition SlowDomain.h:131
state_t< D > state_type
the state type
Definition SlowDomain.h:59
cost_t< D > cost_type
the cost type
Definition SlowDomain.h:60
a FeatureDomain that also provides a feature projection
Definition Domain.h:155
a Domain with a state abstraction
Definition Domain.h:168
a Domain whose states are described by a set of features
Definition Domain.h:127
a Domain whose state space is partitioned into nblocks
Definition Domain.h:182
a Domain that knows the operator by which a state was generated
Definition Domain.h:217
a Domain with a heuristic between any two states
Definition Domain.h:196
a Domain with a perfect hash of its states
Definition Domain.h:230
namespace for the Parallel Best-First Search library
Definition AStar.h:83
typename D::cost_type cost_t
the cost type of a Domain
Definition Domain.h:245
typename D::state_type state_t
the state type of a Domain
Definition Domain.h:241