Class PseudoBooleanEncoder
- Namespace
- LogicalOptimizer
- Assembly
- LogicalOptimizer.Sat.dll
Linear pseudo-Boolean constraints (sum of positive-weighted literals compared to a bound). The parameterless overloads use a decision-diagram expansion with memoization — the classic BDD encoding, polynomial for practical weight ranges. Overloads taking a PseudoBooleanEncoding select from a portfolio of semantically equivalent encodings and report the size they introduced.
public static class PseudoBooleanEncoder
- Inheritance
-
PseudoBooleanEncoder
- Inherited Members
Methods
AtLeast(CnfBuilder, IReadOnlyList<int>, IReadOnlyList<long>, long)
Σ weight_i · literal_i ≥ bound. Weights must be positive (stable default output).
public static void AtLeast(CnfBuilder builder, IReadOnlyList<int> literals, IReadOnlyList<long> weights, long bound)
Parameters
builderCnfBuilderliteralsIReadOnlyList<int>weightsIReadOnlyList<long>boundlong
AtLeast(CnfBuilder, IReadOnlyList<int>, IReadOnlyList<long>, long, PseudoBooleanEncoding)
Σ weight_i · literal_i ≥ bound, encoded with the chosen strategy.
public static EncodingStats AtLeast(CnfBuilder builder, IReadOnlyList<int> literals, IReadOnlyList<long> weights, long bound, PseudoBooleanEncoding encoding)
Parameters
builderCnfBuilderliteralsIReadOnlyList<int>weightsIReadOnlyList<long>boundlongencodingPseudoBooleanEncoding
Returns
AtMost(CnfBuilder, IReadOnlyList<int>, IReadOnlyList<long>, long)
Σ weight_i · literal_i ≤ bound. Weights must be positive (stable default output).
public static void AtMost(CnfBuilder builder, IReadOnlyList<int> literals, IReadOnlyList<long> weights, long bound)
Parameters
builderCnfBuilderliteralsIReadOnlyList<int>weightsIReadOnlyList<long>boundlong
AtMost(CnfBuilder, IReadOnlyList<int>, IReadOnlyList<long>, long, PseudoBooleanEncoding)
Σ weight_i · literal_i ≤ bound, encoded with the chosen strategy. Returns the clauses / auxiliary variables the call introduced. Passing DynamicProgramming reproduces the default output.
public static EncodingStats AtMost(CnfBuilder builder, IReadOnlyList<int> literals, IReadOnlyList<long> weights, long bound, PseudoBooleanEncoding encoding)
Parameters
builderCnfBuilderliteralsIReadOnlyList<int>weightsIReadOnlyList<long>boundlongencodingPseudoBooleanEncoding