PBeFS
Parallel Best-First Search
Loading...
Searching...
No Matches
Topics
The header of the library and its three layers, the headers of each layer gathered by what they define (its searches, its domains, its runtimes, ...), as on the site of Sphinx.
[detail level 123]
 PBeFS.hAll 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]
 coreThe helpers and the parameters of the parallel searches, which do not depend on the kind of search
 Headers of the layer
 core.hCore 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]
 Helpers
 core/SearchUtils.hSmall 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
 astarThe graph searches of A*, sequential and parallel, with their domains, work distributions and data structures
 Headers of the layer
 astar.hGraph searches of PBeFS save the one that needs MPI, HDAStarMPI.h
 Searches
 astar/AStar.hSequential A* over a Domain, with the OPEN list Open
 astar/IDAStar.hThe iterative-deepening A* search of a Domain
 astar/DDDAStar.hThe A* search of a Domain with delayed duplicate detection on the disk
 astar/HDAStar.hHash Distributed A* on a shared-memory machine
 astar/SPAStar.hSimple Parallel A*: one OPEN and one CLOSED list shared by the workers
 astar/MQAStar.hMultiQueue A*: one relaxed OPEN list and one CLOSED list shared by the workers
 astar/SafePBNF.hSafe Parallel Best-NBlock-First search
 astar/PASE.hParallel A* for Slow Expansions
 astar/FarmAStar.hA master-worker parallel A* on a farm with feedback
 astar/HDAStarMPI.hHash Distributed A* with one MPI process per worker
 Work distributions
 astar/Distribution.hWork 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]
 Domains
 astar/Domain.hConcepts 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
 astar/SlidingTile.hThe sliding-tile puzzle on a board of at most 25 cells
 astar/PatternDatabase.hPattern databases of the sliding-tile puzzles, i.e., the heuristics that store the exact distances of an abstraction of the puzzle
 astar/Grid.hPathfinding on a GridMap with 4 (Moves == 4) or 8 (Moves == 8) moves
 astar/ExplicitGraph.hA weighted graph given explicitly, searched from a source to a target
 astar/SlowDomain.hA Domain whose expansions cost a given amount of extra work
 astar/SequenceScore.hThe sliding-tile puzzle with the sequence score heuristic of Nilsson
 astar/Romania.hA trip on the road map of Romania
 astar/NQueens.hThe n-queens problem, with at most 32 queens
 astar/VacuumWorld.hThe vacuum world on a row of at most 32 cells
 astar/MissionariesCannibals.hThe missionaries and cannibals problem
 astar/WaterJugs.hThe water jugs problem, with up to 4 jugs of at most 65535 units
 astar/TravelingSalesman.hThe traveling salesperson problem on at most 32 cities
 Data structures
 astar/Node.hA node of the search graph
 astar/NodeTable.hClass 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]
 astar/structures/ads/NodeTable.hThe closed list, on the PointerTable of ADS, on huge pages
 astar/structures/ads/ConcurrentClosed.hThe closed list shared by the workers, a lock-free set of the nodes
 astar/ConcurrentClosed.hClass template ConcurrentClosed, the closed list that the workers of SPAStar and MQAStar share, taken from the set of data structures chosen [see Structures.h]
 astar/structures/ads/OpenList.hPriority 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/OpenList.hPriority 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
 astar/Structures.hChoice 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
 Results
 astar/Solution.hA path from the initial state to a goal, and its cost
 Helpers
 astar/structures/ads/ExplicitAdjacency.hThe arcs of a weighted graph, on the GraphBuilder and ArrayGraph of ADS
 astar/structures/ads/GridAdjacency.hThe moves from a cell of a GridMap and their costs, on the GridGraph of ADS
 astar/structures/ads/NodePool.hThe arena of the nodes, on the Arena of ADS, on huge pages
 DocumentationThe pages on the theory and on the design of the layer
 Best-first search and A*
 Parallel A*
 Pattern databases
 bnbThe tree searches of branch-and-bound, sequential and parallel, and their choice by scheme
 Headers of the layer
 bnb.hTree 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
 Searches
 bnb/BranchAndBound.hBest-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
 bnb/ParallelBranchAndBound.hParallel 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
 bnb/DeterministicBranchAndBound.hThe parallel B&B by synchronous rounds
 bnb/StealingBranchAndBound.hThe parallel B&B by work stealing
 bnb/MultiQueueBranchAndBound.hThe parallel B&B on the MultiQueue of ADS
 bnb/SelfSplitBranchAndBound.hThe parallel B&B by a split of the tree after a sampling
 bnb/FarmBranchAndBound.hThe master-worker B&B on a farm with feedback
 bnb/MPIBranchAndBound.hMPIBranchAndBound, 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]
 Schemes
 bnb/BranchAndBoundScheme.hChoice 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
 Problems
 bnb/Knapsack.hStruct 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
 DocumentationThe pages on the theory and on the design of the layer
 Branch-and-bound as best-first search
 Parallel branch-and-bound
 Best-first search with an incumbent: design note