PBeFS
Parallel Best-First Search
Loading...
Searching...
No Matches
AbstractZobristDistribution< D > Class Template Reference

HDA*[Z,Afeature]: Zobrist hashing of the abstract features (AZHDA*). More...

#include <PBeFS/astar/Distribution.h>

Public Member Functions

 AbstractZobristDistribution (const D &domain, std::uint64_t seed=1)
 constructor, drawing the table of the abstract features from the seed
std::uint64_t hash (const state_t< D > &s) const
 the abstract Zobrist hash of s
std::uint32_t key (const state_t< D > &s) const
 the key of s, the high 32 bits of its hash
unsigned owner (const state_t< D > &s, unsigned p) const
 the owner of s among p workers, that of its key
std::uint32_t key (std::uint32_t k, const state_t< D > &s, const state_t< D > &t) const
 the key of t, a successor of s whose key is k

Static Public Member Functions

static std::string name (void)
 the name in the notation of Jinnai and Fukunaga

Detailed Description

template<AbstractFeatureDomain D>
class PBeFS_di_unipi_it::AbstractZobristDistribution< D >

HDA*[Z,Afeature]: Zobrist hashing of the abstract features (AZHDA*).

\( AZ( s ) = R[ A( x_0 ) ] \oplus \cdots \oplus R[ A( x_n ) ] \), where \( A \) is the feature projection of the Domain [see Jinnai and Fukunaga, JAIR 2017, equation (2)]. A successor that changes no abstract feature keeps the owner of its parent, which cuts the communication, while the Zobrist hashing of all the abstract features keeps the load balanced. The table is laid out by raw feature (Algorithm 3 of the paper), so that hashing costs exactly as much as with ZobristDistribution.

Constructor & Destructor Documentation

◆ AbstractZobristDistribution()

template<AbstractFeatureDomain D>
AbstractZobristDistribution ( const D & domain,
std::uint64_t seed = 1 )
inlineexplicit

constructor, drawing the table of the abstract features from the seed

Member Function Documentation

◆ hash()

template<AbstractFeatureDomain D>
std::uint64_t hash ( const state_t< D > & s) const
inlinenodiscard

the abstract Zobrist hash of s

◆ key() [1/2]

template<AbstractFeatureDomain D>
std::uint32_t key ( const state_t< D > & s) const
inlinenodiscard

the key of s, the high 32 bits of its hash

◆ key() [2/2]

template<AbstractFeatureDomain D>
std::uint32_t key ( std::uint32_t k,
const state_t< D > & s,
const state_t< D > & t ) const
inlinenodiscard

the key of t, a successor of s whose key is k

Equal to key( t ), but it reads the entries of the features that the move changes only [see IncrementalFeatureDomain].

◆ name()

template<AbstractFeatureDomain D>
std::string name ( void )
inlinestaticnodiscard

the name in the notation of Jinnai and Fukunaga

◆ owner()

template<AbstractFeatureDomain D>
unsigned owner ( const state_t< D > & s,
unsigned p ) const
inlinenodiscard

the owner of s among p workers, that of its key


The documentation for this class was generated from the following file: