Computing the minimal elements of a partially ordered finite set (poset) is a fundamental problem in combinatorics with numerous applications such as polynomial expression optimization, transversal hypergraph generation and redundant component removal, to name a few. We propose a divide-and-conquer algorithm which is not only cache-oblivious but also can be parallelized free of determinacy races. We have implemented it in Cilk++ targeting multicores. For our test problems of sufficiently large input size our code demonstrates a linear speedup on 32 cores. Categories and Subject Descriptors G.4 [Mathematical Software]: Parallel and vector implementations; G.2.2 [Graph Theory]: Hypergraphs General Terms Algorithms, Theory Keywords Partial ordering, minimal elements, multithreaded parallelism, Cilk, polynomial evaluation, transversal hypergraph
Charles E. Leiserson, Marc Moreno Maza, Liyun Li,