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

sequential A* over a Domain, with the OPEN list Open More...

#include <PBeFS/astar/AStar.h>

Public Types

using State = state_t< D >
 the state type
using Cost = cost_t< D >
 the cost type
using NodeT = Node< State , Cost >
 the node type
using SolutionT = Solution< State , Cost >
 the solution type

Public Member Functions

 AStar (const D &domain, const SearchOptions &options={})
 constructor, taking the Domain (which must outlive the AStar)
SolutionT solve (void) const
 searches the Domain, returning the Solution

Detailed Description

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
class PBeFS_di_unipi_it::AStar< D, Open >

sequential A* over a Domain, with the OPEN list Open

This is Algorithm 1 of Fukunaga et al. (2017): the goal test is done when a node is selected for expansion, so that the first goal expanded is optimal if h is admissible. A node reached through a cheaper path is reopened even if it is closed, so that the search stays admissible with an admissible but inconsistent heuristic; with a consistent one no node is ever reopened.

Open defaults to BucketOpenList for integer costs and to HeapOpenList otherwise [see OpenList.h].

Member Typedef Documentation

◆ Cost

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
using Cost = cost_t< D >

the cost type

◆ NodeT

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
using NodeT = Node< State , Cost >

the node type

◆ SolutionT

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
using SolutionT = Solution< State , Cost >

the solution type

◆ State

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
using State = state_t< D >

the state type

Constructor & Destructor Documentation

◆ AStar()

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
AStar ( const D & domain,
const SearchOptions & options = {} )
inlineexplicit

constructor, taking the Domain (which must outlive the AStar)

Member Function Documentation

◆ solve()

template<Domain D, class Open = std::conditional_t< std::is_integral_v< cost_t< D > > , BucketOpenList< Node< state_t< D > , cost_t< D > > > , HeapOpenList< Node< state_t< D > , cost_t< D > > > >>
SolutionT solve ( void ) const
inlinenodiscard

searches the Domain, returning the Solution


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