llvm::DeltaAlgorithm

Implements the delta debugging algorithm (A. Zeller '99) for minimizing arbitrary sets using a predicate function.

Synopsis

Declared in <llvm/ADT/DeltaAlgorithm.h>

class DeltaAlgorithm;

Description

The result of the algorithm is a subset of the input change set which is guaranteed to satisfy the predicate, assuming that the input set did. For well formed predicates, the result set is guaranteed to be such that removing any single element would falsify the predicate.

For best results the predicate function should (but need not) satisfy certain properties, in particular: (1) The predicate should return false on an empty set and true on the full set. (2) If the predicate returns true for a set of changes, it should return true for all supersets of that set.

It is not an error to provide a predicate that does not satisfy these requirements, and the algorithm will generally produce reasonable results. However, it may run substantially more tests than with a good predicate.

Type Aliases

NameDescription
change_ty Opaque identifier for a single change in the input set.
changeset_ty Set of change identifiers forming a candidate subset.
changesetlist_ty Ordered collection of change sets used during search.

Member Functions

NameDescription
~DeltaAlgorithm [destructor] [virtual]Virtual destructor for subclasses that implement the test predicate.
Run Minimize the set Changes by executing

Protected Member Functions

NameDescription
operator= Default copy-assign for subclasses that store no additional state.
ExecuteOneTest [virtual]Execute a single test predicate on the change set S.
UpdatedSearchState [virtual]Callback used when the search state changes.