PBeFS
Parallel Best-First Search
Loading...
Searching...
No Matches
File List
Here is a list of all files with brief descriptions:
[detail level 12345]
 
PBeFS
 
astar
 
structures
 
ads
 
ConcurrentClosed.h
Header file for the class template ConcurrentClosed of the set of data structures of ADS [see Structures.h]: the nodes are kept in the ConcurrentFlatTable of ADS as a set of pointers compared by their states, a word of 8 bytes for each, which a lookup reads and an insertion fills by a compare-and-swap with no lock
 
ExplicitAdjacency.h
Header file for the class template ExplicitAdjacency of the set of data structures of ADS [see Structures.h], the arcs of a weighted graph, on the GraphBuilder of ADS, frozen into its ArrayGraph before the first visit; ExplicitGraph.h includes it in place of its own
 
GridAdjacency.h
Header file for the class template GridAdjacency of the set of data structures of ADS [see Structures.h], the moves from a cell of a GridMap and their costs, on the GridGraph of ADS, whose adjacency is computed from a copy of the costs of the cells and never stored, a move paying the cost of the cell it leaves; Grid.h includes it in place of its own
 
NodePool.h
Header file for the class template NodePool of the set of data structures of ADS [see Structures.h], the arena the nodes of A* are allocated from, on the Arena of ADS, on huge pages; Node.h includes it in place of its own
 
NodeTable.h
Header file for the class template NodeTable of the set of data structures of ADS [see Structures.h], the closed list of A*, on the PointerTable of ADS, on huge pages; NodeTable.h includes it in place of its own
 
OpenList.h
Header file for the priority queues of the OPEN list of the set of data structures of ADS [see Structures.h], HeapOpenList and BucketOpenList, on the DaryHeap and the BucketQueue of ADS; OpenList.h includes it in place of its own, with the same order of the entries but for the ties of f and g
 
AStar.h
Header file for the class template AStar, the sequential A* search of Hart, Nilsson and Raphael (1968)
 
ConcurrentClosed.h
Header file for the class template ConcurrentClosed, the closed list that the workers of SPAStar and MQAStar share, taken from the set of data structures chosen [see Structures.h]
 
DDDAStar.h
Header file for the class template DDDAStar, the A* search with delayed duplicate detection, whose OPEN and CLOSED lists are files on the disk: the External A* of Edelkamp, Jabbar and Schrödl (2004), with the hash-based delayed duplicate detection of Korf (2008) in place of the external sorts
 
Distribution.h
Header file for the work distribution functions of hash-based parallel A*: each one maps a state to its owner among p workers [see section 6 of Fukunaga et al., 2017, and Jinnai and Fukunaga, JAIR 2017]
 
Domain.h
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
 
ExplicitGraph.h
Header file for the class template ExplicitAdjacency, the arcs of a weighted graph given one by one, and for the class template ExplicitGraph, which implements the Domain concept [see Domain.h] for such a graph, with a heuristic given node by node, such as the map of Romania of Russell and Norvig
 
FarmAStar.h
Header file for the class template FarmAStar, a centralized parallel A* written as a farm with feedback on an executor of ADS: a master holds OPEN and CLOSED, and the workers expand the nodes it sends them
 
Grid.h
Header file for the class GridMap, a map of cells with a cost of traversal, for the class template GridAdjacency, the free cells next to a cell of a GridMap, and for the class template Grid, which implements the Domain concept [see Domain.h] for pathfinding on a GridMap with 4 or 8 moves
 
HDAStar.h
Header file for the class template HDAStar, Hash Distributed A* on a shared-memory machine, whose workers run on an executor of ADS and exchange nodes through the mailbox of ADS on its channels
 
HDAStarMPI.h
Header file for the class template HDAStarMPI, Hash Distributed A* on a distributed-memory machine, with one MPI process per worker
 
IDAStar.h
Header file for the class template IDAStar, the iterative-deepening A* of Korf (1985), which finds an optimal path with a memory linear in its length: a depth-first search bounded by \( f = g + h \), repeated with the bound raised each time to the least \( f \) that exceeded it
 
MissionariesCannibals.h
Header file for the class MissionariesCannibals, which implements the Domain concept [see Domain.h] for the missionaries and cannibals problem of exercise 3.9 of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010), with m missionaries, c cannibals and a boat of b seats
 
MQAStar.h
Header file for the class template MQAStar, MultiQueue A*: the workers share one CLOSED list, as in SPAStar, and an OPEN list that is a relaxed priority queue, the MultiQueue of Rihani, Sanders and Dementiev, in place of a priority queue under one lock
 
Node.h
Header file for the class template Node, a node of the search graph, for the class template NodePool, the arena the nodes are allocated from, taken from the set of data structures chosen [see Structures.h], and for the infinite cost and the path to a goal
 
NodeTable.h
Header file for the class template NodeTable, the closed list of the searches: a map from the generated states to their canonical Node, taken from the set of data structures chosen [see Structures.h]
 
NQueens.h
Header file for the class NQueens, which implements the Domain concept [see Domain.h] for the n-queens problem in the incremental formulation of section 3.2.1 of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010)
 
OpenList.h
Header file for the priority queues of the OPEN list, taken from the set of data structures chosen [see Structures.h]: the class templates HeapOpenList, a heap for any cost type, and BucketOpenList, a two-level bucket queue for integer costs, and their entries
 
PASE.h
Header file for the class template PASE, Parallel A* for Slow Expansions of Phillips, Likhachev and Koenig (ICAPS 2014)
 
PatternDatabase.h
Header file for the pattern databases of the sliding-tile puzzles, i.e., the heuristics that store the exact distances of an abstraction of the puzzle
 
Romania.h
Header file for the class Romania, the road map of Romania of figure 3.2 of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010), as an ExplicitGraph [see ExplicitGraph.h]
 
SafePBNF.h
Header file for the class template SafePBNF, the livelock-free Parallel Best-NBlock-First search of Burns, Lemons, Ruml and Zhou (JAIR 2010)
 
SequenceScore.h
Header file for the class template SequenceScore, which implements the Domain concept [see Domain.h] for the sliding-tile puzzle with the sequence score heuristic of Nilsson, an inadmissible heuristic
 
SlidingTile.h
Header file for the class template SlidingTile, which implements the Domain concept [see Domain.h] for the sliding-tile puzzles with the Manhattan distance heuristic, and for the class Word128, the unsigned integer of 128 bits in which the boards of more than 16 cells are packed
 
SlowDomain.h
Header file for the class template SlowDomain, a Domain [see Domain.h] whose expansions are made artificially slow, to compare the searches when the expansion dominates their cost
 
Solution.h
Header file for the outcome of a search: the class template Solution, the statistics SearchStats collected on the way, and the SearchOptions shared by all the searches
 
SPAStar.h
Header file for the class template SPAStar, Simple Parallel A*: all the workers share one OPEN and one CLOSED list
 
Structures.h
Header file for the choice of the set of data structures of A*: the arena of the nodes (NodePool), the closed list (NodeTable), the OPEN lists (HeapOpenList and BucketOpenList) and the adjacency of the explicit graphs and of the grids
 
TravelingSalesman.h
Header file for the class TravelingSalesman, which implements the Domain concept [see Domain.h] for the traveling salesperson problem with the minimum spanning tree heuristic of exercise 3.30 of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010)
 
VacuumWorld.h
Header file for the class VacuumWorld, which implements the Domain concept [see Domain.h] for the vacuum world of section 3.2.1 of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010), on a row of n cells instead of 2
 
WaterJugs.h
Header file for the class WaterJugs, which implements the Domain concept [see Domain.h] for the water jugs problem of exercise 3.6(d) of Russell and Norvig, "Artificial Intelligence: A Modern Approach" (3rd edition, 2010), which is the PourProblem of aima-python (github.com/aimacode/aima-python)
 
bnb
 
BranchAndBound.h
Header file for the best-first search with an incumbent, i.e., for Branch-and-Bound (B&B): the concept BranchAndBound of a problem, its options and its Solution, the queue of the open nodes, and the sequential search BranchAndBoundSearch
 
BranchAndBoundScheme.h
Header file for the choice of the Branch-and-Bound (B&B) by its scheme: BBScheme names the searches of the core of PBeFS, bb_scheme() reads it from its name (e.g., from a file of parameters), and parallel_branch_and_bound() runs the search of the scheme of the options on a runtime, so that a caller chooses the search by a value rather than by a type
 
DeterministicBranchAndBound.h
Header file for DeterministicBranchAndBound, the parallel Branch-and-Bound (B&B) by synchronous rounds, whose outcome does not depend on the timing of the workers
 
FarmBranchAndBound.h
Header file for FarmBranchAndBound, the master-worker Branch-and-Bound (B&B) on a farm with feedback on an executor of ADS: the master holds the queue of the open nodes, and the workers evaluate and branch the nodes it sends
 
Knapsack.h
Header file for the struct template BasicKnapsack, a 0-1 knapsack problem that implements the BranchAndBound concept [see BranchAndBound.h] with values of a given type, and Knapsack, the one with values of type double, with the random instances of the classes of Pisinger and the dynamic program that gives their optimal value; the tests and the benchmark of the Branch-and-Bound share it
 
MPIBranchAndBound.h
Header file for MPIBranchAndBound, the distributed Branch-and-Bound (B&B) with one MPI process per worker: each process has a queue of open nodes and sends the children to their owners, as DistributedBranchAndBound does with threads [see ParallelBranchAndBound.h] and HDAStarMPI with the states of A* [see HDAStarMPI.h]
 
MultiQueueBranchAndBound.h
Header file for MultiQueueBranchAndBound, the parallel Branch-and-Bound (B&B) whose workers share the open nodes in the MultiQueue of ADS, a relaxed priority queue of \( 2 p \) sequential queues each under its own lock, as the workers of MQAStar do
 
ParallelBranchAndBound.h
Header file for the parallel best-first searches with an incumbent, i.e., the parallel Branch-and-Bound (B&B) on an executor of ADS (the pool of C++ threads, OpenMP or FastFlow): SharedBranchAndBound, whose workers extract the nodes from one queue as the workers of SPA* do, and DistributedBranchAndBound, whose workers have a queue each and send the children to their owners as the workers of HDA* do
 
SelfSplitBranchAndBound.h
Header file for SelfSplitBranchAndBound, the parallel Branch-and-Bound (B&B) whose workers share nothing but the nodes of a first sampling of the tree, as in the SelfSplit of Fischetti, Monaci and Salvagnin (2014)
 
StealingBranchAndBound.h
Header file for StealingBranchAndBound, the parallel Branch-and-Bound (B&B) whose workers keep the children they generate in a queue of their own and take about half of the queue of another worker only when theirs is empty, i.e., by work stealing
 
core
 
SearchUtils.h
Header file for the small helpers shared by the searches: a stopwatch, the placement of the workers on the CPUs and their run on an executor, a prefetch, and the random numbers of the workers; the mixing of the bits of a word, the backoff of the waiting workers, the placement on the CPUs and the allocator of huge pages are those of ADS
 
astar.h
Header file that includes the graph searches of PBeFS save the one that needs MPI, HDAStarMPI.h
 
bnb.h
Header file that includes the tree searches of PBeFS, i.e., the best-first searches with an incumbent (Branch-and-Bound) of a problem satisfying the concept BranchAndBound, save the one that needs MPI, MPIBranchAndBound.h
 
core.h
Header file that includes the core of PBeFS, i.e., what does not depend on the kind of search: the helpers and the parameters of the parallel searches [see SearchUtils.h]
 
PBeFS.h
Header file that includes all of PBeFS, the library of Parallel Best-First Search, save the parts that need an external library: its core [see core.h], the graph searches of A* [see astar.h] and the tree searches of Branch-and-Bound [see bnb.h]
 
theory