Skip to content
This repository has been archived by the owner on Jun 25, 2024. It is now read-only.

Latest commit

 

History

History
 
 

containers

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Algorithms in the repository

The repository includes a large collection of algorithm implementations. We give a references and a few details for each here. For full details, see our paper.

The listing below is sorted taxonomically, rather than according to which container provides each algorithm; information about the containers can be found in their respective directories.

Some of these algorithms support 'cutoff' enumeration—that is, searching for MHSes of size no larger than some specified bound.

Edge iteration

Berge

(Supports cutoff) A sequential algorithm based on an algebraic decomposition of the input hypergraph. First published in 1984 by Berge in Hypergraphs: combinatorics of finite sets.

An implementation in C++ by A. Gainer-Dewar is provided in the compsysmed/agdmhs container in the agdmhs directory. You can run this container online on the Algorun server.

HS-DAG

(Supports cutoff) A corrected version of Reiter's algorithm, published in A correction to the algorithm in Reiter's theory of diagnosis by Greiner, Smith, and Wilkerson. An implementation in Python by T. Quaritsch and I. Pill is available as part of PyMBD, which is distributed as a zip bundle from Pill's website.

The implementation is provided in the compsysmed/pymbd container in the pymbd directory under the terms of the authors' license. You can run this container online on the Algorun server.

HST

(Supports cutoff) A corrected version of Reiter's algorithm, published in A variant of Reiter's hitting-set algorithm by Wotawa. An implementation in Python by T. Quaritsch and I. Pill is available as part of PyMBD, which is distributed as a zip bundle from Pill's website.

The implementation is provided in the compsysmed/pymbd container in the pymbd directory under the terms of the authors' license. You can run this container online on the Algorun server.

BMR

An improved Berge's algorithm published in A fast algorithm for computing hypergraph transversals and its application in mining emerging patterns.

An implementation in C by K. Murakami is available from the Hypergraph Dualization Repository and is provided in the compsysmed/bmr container in the bmr directory by permission from the authors. You can run this container online on the Algorun server.

DL

An improved Berge's algorithm published in Mining border descriptions of emerging patterns from dataset pairs by Dong and Li.

An implementation in C by K. Murakami is available from the Hypergraph Dualization Repository and is provided in the compsysmed/dl container in the dl directory by permission from the authors. You can run this container online on the Algorun server.

KS

A variation of Berge's algorithm which searches depth first and thus avoids the need to store large intermediate hypergraphs in memory. Published in An efficient algorithm for the transversal hypergraph generation by Kavvadias and Stavroupoulos.

A Pascal implementation by D. Kavvadias and E. Stavropoulos is available from the Hypergraph Dualization Repository and the author's page and is provided in the compsysmed/ks container in the ks directory by permission from the authors. You can run this container online on the Algorun server.

Divide and conquer

FK-A

The A algorithm from On the complexity of dualization of monotone disjunctive normal forms, Fredman, M. and Khachiyan, L, as improved in An efficient implementation of a quasi-polynomial algorithm for generating hypergraph transversals and its application in joint generation, E. Boros et al. Has the best known asymptotic bounds on runtime of any serial algorithm with a public implementation.

An implementation in compiled C is available from the Hypergraph Dualization Repository and is provided in the compsysmed/fka-begk container in the fka-begk directory by permission from the authors. You can run this container online on the Algorun server.

An implementation in C++ of the original, unmodified algorithm is provided in the compsysmed/agdmhs container in the agdmhs directory. You can run this container online on the Algorun server.

BOOL

(Supports cutoff) A divide-and-conquer algorithm introduced in The computation of hitting sets: review and new algorithms by Lin and Jiang. An implementation in Python by T. Quaritsch and I. Pill is available as part of PyMBD, which is distributed as a zip bundle from Pill's website.

The implementation is provided in the compsysmed/pymbd container in the pymbd directory under the terms of the authors' license. You can run this container online on the Algorun server.

STACCATO

(Supports cutoff) A divide-and-conquer approximation algorithm, published in A low-cost approximate minimal hitting set algorithm and its application to model-based diagnosis (PDF) by Abreu and Gemund. An implementation in Python by T. Quaritsch and I. Pill is available as part of PyMBD, which is distributed as a zip bundle from Pill's website.

The implementation is provided in the compsysmed/pymbd container in the pymbd directory under the terms of the authors' license. You can run this container online on the Algorun server.

ParTran

A parallel algorithm using a Berge-like calculation on divided subhypergraphs, published in Parallel computation of the minimal elements of a poset by Leiserson et al. An implementation in Cilk++ by those authors is available from the BPASlib project's webpage.

The implementation is provided in the compsysmed/partran container in the partran directory under the terms of the authors' license. You can run this container online on the Algorun server.

KNUTH

An algorithm based on ZDD representations of hypergraphs or boolean functions. Introduced as solution to exercise 237 of §7.1.4 of Volume 4a of The Art of Computer Programming (1st ed.) by Donald E. Knuth.

An implementation in C by the author of Hypergraph transversal computation with binary decision diagrams is available from his website and is provided in the compsysmed/htcbdd container under the terms of the GPLv3 license. This container is not hosted on the AlgoRun server due to resource constraints.

HTC-BDD

An improved version of KNUTH which uses both BDDs and ZDDs. Introduced in Hypergraph transversal computation with binary decision diagrams by Takahesi Toda.

An implementation in C by Toda is available from his website and is provided in the compsysmed/htcbdd container under the terms of the GPLv3 license. This container is not hosted on the AlgoRun server due to resource constraints.

MHS²

(Supports cutoff) A parallel algorithm from An efficient distributed algorithm for computing minimal hitting sets (PDF) by Cardoso and Abreu.

An implementation in C++ by those authors is available from their GitHub repository and is provided in the compsysmed/mhs2 container in the mhs2 directory under the terms of the GPLv2 license. You can run this container online on the Algorun server.

Transversal buildup

HBC

(Supports cutoff) A vertex-wise algorithm inspired by ideas from data mining and published in A data mining formalization to improve hypergraph minimal transversal computation (PDF) by Hébert, Bretto, and Crémilleux.

An implementation in C++, written by C. Hébert and now maintained by F. Rioult, is available as MtMiner and is provided in the compsysmed/hbc container in the hbc directory by permission from the authors. You can run this container online on the Algorun server.

OCSANA-Greedy

(Supports cutoff) A vertex-wise "greedy" algorithm published in OCSANA: optimal combinations of interventions from network analysis. An implementation in Java by M. Kordi, originally written for a refactoring of OCSANA, is provided in the compsysmed/ocsana container in the ocsana directory.

WARNING: Testing has revealed that this software does not accurately generate all MHSes. Accordingly, this container is not hosted on the AlgoRun server.

MMCS

(pMMCS supports cutoff) Highly performant algorithm published in Efficient algorithms for dualizing large-scale hypergraphs in 2014 by Murakami and Uno.

Those authors provide a C implementation at the Hypergraph Dualization Repository, which is redistributed here in the in the compsysmed/shd container in the shd directory bypermission from the authors. You can run this container online on the Algorun server.

An implementation in C++ which takes advantage of multiple cores using OpenMP is provided in the compsysmed/agdmhs container in the agdmhs directory. You can run this container online on the Algorun server.

RS

(pRS supports cutoff) Highly performant algorithm published in Efficient algorithms for dualizing large-scale hypergraphs in 2014 by Murakami and Uno.

Those authors provide a C implementation at the Hypergraph Dualization Repository, which is redistributed here in the in the compsysmed/shd container in the shd directory bypermission from the authors. You can run this container online on the Algorun server.

An implementation in C++ which takes advantage of multiple cores using OpenMP is provided in the compsysmed/agdmhs container in the agdmhs directory. You can run this container online on the Algorun server.

Full cover

BM

A "global parallel" algorithm based on a full cover decomposition of the input hypergraph. Published in A fast and simple parallel algorithm for the monotone duality problem by E. Boros and K. Makino.

An implementation in C++ using OpenMP by A. Gainer-Dewar is provided in the compsysmed/agdmhs container in the agdmhs directory. You can run this container online on the Algorun server.

Other

Primary decomposition

A method based on computational algebra.

An implementation in Python and Macaulay2 is provided in the compsysmed/primdecomp container in the primdecomp directory. You can run this container online on the Algorun server.