Copyright | (c) Masahiro Sakai 2011-20142016-2018 |
---|---|
License | BSD-style |
Maintainer | masahiro.sakai@gmail.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Extensions |
|
ToySolver.Converter.PB
Contents
- Normalization of PB/WBO problems
- Modify objective function
- Linealization of PB/WBO problems
- Quadratization of PB problems
- Converting inequality constraints into equality constraints
- Converting constraints into penalty terms in objective function
- PB↔WBO conversion
- SAT↔PB conversion
- MaxSAT↔WBO conversion
- PB→QUBO conversion
- General data types
- misc
Description
Synopsis
- module ToySolver.Converter.Base
- module ToySolver.Converter.Tseitin
- normalizePB :: Formula -> Formula
- normalizeWBO :: SoftFormula -> SoftFormula
- data ObjType
- setObj :: ObjType -> Formula -> Formula
- linearizePB :: Formula -> Bool -> (Formula, PBLinearizeInfo)
- linearizeWBO :: SoftFormula -> Bool -> (SoftFormula, PBLinearizeInfo)
- type PBLinearizeInfo = PBTseitinInfo
- quadratizePB :: Formula -> ((Formula, Integer), PBQuadratizeInfo)
- quadratizePB' :: (Formula, Integer) -> ((Formula, Integer), PBQuadratizeInfo)
- type PBQuadratizeInfo = PBTseitinInfo
- inequalitiesToEqualitiesPB :: Formula -> (Formula, PBInequalitiesToEqualitiesInfo)
- data PBInequalitiesToEqualitiesInfo = PBInequalitiesToEqualitiesInfo !Int !Int [(Sum, Integer, [Var])]
- unconstrainPB :: Formula -> ((Formula, Integer), PBUnconstrainInfo)
- newtype PBUnconstrainInfo = PBUnconstrainInfo PBInequalitiesToEqualitiesInfo
- pb2wbo :: Formula -> (SoftFormula, PB2WBOInfo)
- newtype PB2WBOInfo = PB2WBOInfo Integer
- wbo2pb :: SoftFormula -> (Formula, WBO2PBInfo)
- data WBO2PBInfo = WBO2PBInfo !Int !Int (VarMap Constraint)
- addWBO :: (PrimMonad m, AddPBNL m enc) => enc -> SoftFormula -> m (PBSum, VarMap Constraint)
- sat2pb :: CNF -> (Formula, SAT2PBInfo)
- type SAT2PBInfo = IdentityTransformer Model
- pb2sat :: Formula -> (CNF, PB2SATInfo)
- pb2satWith :: Strategy -> Formula -> (CNF, PB2SATInfo)
- type PB2SATInfo = TseitinInfo
- maxsat2wbo :: WCNF -> (SoftFormula, MaxSAT2WBOInfo)
- type MaxSAT2WBOInfo = PBIdentityInfo
- wbo2maxsat :: SoftFormula -> (WCNF, WBO2MaxSATInfo)
- wbo2maxsatWith :: Strategy -> SoftFormula -> (WCNF, WBO2MaxSATInfo)
- type WBO2MaxSATInfo = PBTseitinInfo
- pb2qubo' :: Formula -> ((Formula, Integer), PB2QUBOInfo')
- type PB2QUBOInfo' = ComposedTransformer PBUnconstrainInfo PBQuadratizeInfo
- data PBIdentityInfo = PBIdentityInfo
- newtype PBTseitinInfo = PBTseitinInfo TseitinInfo
- pb2lsp :: Formula -> Builder
- wbo2lsp :: SoftFormula -> Builder
- pb2smp :: Bool -> Formula -> Builder
Documentation
module ToySolver.Converter.Base
module ToySolver.Converter.Tseitin
Normalization of PB/WBO problems
normalizePB :: Formula -> Formula Source #
Modify objective function
Constructors
ObjNone | |
ObjMaxOne | |
ObjMaxZero |
Instances
Bounded ObjType Source # | |
Enum ObjType Source # | |
Show ObjType Source # | |
Eq ObjType Source # | |
Ord ObjType Source # | |
Defined in ToySolver.Converter.PB |
Linealization of PB/WBO problems
linearizePB :: Formula -> Bool -> (Formula, PBLinearizeInfo) Source #
linearizeWBO :: SoftFormula -> Bool -> (SoftFormula, PBLinearizeInfo) Source #
type PBLinearizeInfo = PBTseitinInfo Source #
Quadratization of PB problems
quadratizePB :: Formula -> ((Formula, Integer), PBQuadratizeInfo) Source #
Quandratize PBO/PBS problem without introducing additional constraints.
quadratizePB' :: (Formula, Integer) -> ((Formula, Integer), PBQuadratizeInfo) Source #
Quandratize PBO/PBS problem without introducing additional constraints.
type PBQuadratizeInfo = PBTseitinInfo Source #
Converting inequality constraints into equality constraints
inequalitiesToEqualitiesPB :: Formula -> (Formula, PBInequalitiesToEqualitiesInfo) Source #
Convert inequality constraints into equality constraints by introducing surpass variables.
data PBInequalitiesToEqualitiesInfo Source #
Instances
Converting constraints into penalty terms in objective function
unconstrainPB :: Formula -> ((Formula, Integer), PBUnconstrainInfo) Source #
newtype PBUnconstrainInfo Source #
Constructors
PBUnconstrainInfo PBInequalitiesToEqualitiesInfo |
Instances
PB↔WBO conversion
pb2wbo :: Formula -> (SoftFormula, PB2WBOInfo) Source #
newtype PB2WBOInfo Source #
Constructors
PB2WBOInfo Integer |
Instances
wbo2pb :: SoftFormula -> (Formula, WBO2PBInfo) Source #
data WBO2PBInfo Source #
Constructors
WBO2PBInfo !Int !Int (VarMap Constraint) |
Instances
addWBO :: (PrimMonad m, AddPBNL m enc) => enc -> SoftFormula -> m (PBSum, VarMap Constraint) Source #
SAT↔PB conversion
type SAT2PBInfo = IdentityTransformer Model Source #
pb2sat :: Formula -> (CNF, PB2SATInfo) Source #
Convert a pseudo boolean formula φ to a equisatisfiable CNF formula ψ together with two functions f and g such that:
- if M ⊨ φ then f(M) ⊨ ψ
- if M ⊨ ψ then g(M) ⊨ φ
pb2satWith :: Strategy -> Formula -> (CNF, PB2SATInfo) Source #
type PB2SATInfo = TseitinInfo Source #
MaxSAT↔WBO conversion
maxsat2wbo :: WCNF -> (SoftFormula, MaxSAT2WBOInfo) Source #
type MaxSAT2WBOInfo = PBIdentityInfo Source #
wbo2maxsat :: SoftFormula -> (WCNF, WBO2MaxSATInfo) Source #
wbo2maxsatWith :: Strategy -> SoftFormula -> (WCNF, WBO2MaxSATInfo) Source #
type WBO2MaxSATInfo = PBTseitinInfo Source #
PB→QUBO conversion
General data types
data PBIdentityInfo Source #
Constructors
PBIdentityInfo |
Instances
newtype PBTseitinInfo Source #
Constructors
PBTseitinInfo TseitinInfo |
Instances
misc
wbo2lsp :: SoftFormula -> Builder Source #