|Maintainer||Sebastian Fischer (firstname.lastname@example.org)|
This Haskell library provides an implementation of parallel search based on the search tree provided by the package tree-monad.
- class SearchQueue q where
- data SearchView q a
- newtype LIFO a = LIFO [SearchTree a]
- newtype FIFO a = FIFO (Seq (SearchTree a))
- parallelDFS :: Int -> Int -> SearchTree a -> IO [a]
- parallelBFS :: Int -> Int -> SearchTree a -> IO [a]
- parallelTreeSearch :: SearchQueue q => Int -> Int -> q a -> IO [a]
Search queues store multiple search trees.
Constructs an empty search queue.
Adds a search tree to asearch queue.
creates a view on a search queue for pattern matching.
SearchView is used for pattern matching a search queue.
LIFO search queues can be used to implement parallel depth-first search.
FIFO search queues can be used to implement parallel breadth-first search.
Enumerate the leaves of a search tree concurrently in depth-first order.
Enumerate the leaves of a search tree concurrently in breadth-first order.
This function enumerates the results stored in the queue of
SearchTrees in parallel. It is parameterised by the maximum
number of threads to use and the maximum amount of work to perform
by each thread before communicating the results.