Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
operations_research::sat::BinaryImplicationGraph Class Reference

Detailed Description

Definition at line 619 of file clause.h.

#include <clause.h>

Inheritance diagram for operations_research::sat::BinaryImplicationGraph:
operations_research::sat::SatPropagator

Public Member Functions

 BinaryImplicationGraph (Model *model)
 BinaryImplicationGraph (const BinaryImplicationGraph &)=delete
BinaryImplicationGraphoperator= (const BinaryImplicationGraph &)=delete
 ~BinaryImplicationGraph () override
bool Propagate (Trail *trail) final
absl::Span< const LiteralReason (const Trail &trail, int trail_index, int64_t conflict_id) const final
void Reimply (Trail *trail, int old_trail_index) final
void Resize (int num_variables)
int64_t literal_size () const
bool IsEmpty () const final
bool AddBinaryClause (ClauseId id, Literal a, Literal b, bool delete_non_representative_id=true)
bool AddBinaryClause (Literal a, Literal b)
bool AddImplication (Literal a, Literal b)
ClauseId GetClauseId (Literal a, Literal b) const
void EnableSharing (bool enable)
void SetAdditionCallback (std::function< void(Literal, Literal)> f)
ABSL_MUST_USE_RESULT bool AddAtMostOne (absl::Span< const Literal > at_most_one)
void MinimizeConflictFirst (const Trail &trail, std::vector< Literal > *c, SparseBitset< BooleanVariable > *marked, std::vector< ClauseId > *clause_ids, bool also_use_decisions)
void AppendImplicationChains (absl::Span< const Literal > literals, std::vector< ClauseId > *clause_ids)
void RemoveFixedVariables ()
bool DetectEquivalences (bool log_info=false)
bool IsDag () const
const std::vector< LiteralIndex > & ReverseTopologicalOrder () const
absl::Span< const LiteralImplications (Literal l) const
Literal RepresentativeOf (Literal l) const
bool ComputeTransitiveReduction (bool log_info=false)
bool TransformIntoMaxCliques (std::vector< std::vector< Literal > > *at_most_ones, int64_t max_num_explored_nodes=1e8)
bool MergeAtMostOnes (absl::Span< std::vector< Literal > > at_most_ones, int64_t max_num_explored_nodes=1e8, double *dtime=nullptr)
const std::vector< std::vector< Literal > > & GenerateAtMostOnesWithLargeWeight (absl::Span< const Literal > literals, absl::Span< const double > lp_values, absl::Span< const double > reduced_costs)
std::vector< absl::Span< const Literal > > HeuristicAmoPartition (std::vector< Literal > *literals)
int64_t num_propagations () const
int64_t num_inspections () const
int64_t num_minimization () const
int64_t num_literals_removed () const
bool IsRedundant (Literal l) const
int64_t num_redundant_literals () const
int64_t num_current_equivalences () const
int64_t num_redundant_implications () const
int64_t ComputeNumImplicationsForLog () const
template<typename Output>
void ExtractAllBinaryClauses (Output *out) const
bool AddBinaryClauseAndChangeReason (ClauseId id, Literal a, Literal b)
const std::vector< Literal > & DirectImplications (Literal literal)
LiteralIndex RandomImpliedLiteral (Literal lhs)
int DirectImplicationsEstimatedSize (Literal literal) const
bool FindFailedLiteralAroundVar (BooleanVariable var, bool *is_unsat)
int64_t NumImplicationOnVariableRemoval (BooleanVariable var)
void RemoveBooleanVariable (BooleanVariable var, std::deque< std::vector< Literal > > *postsolve_clauses)
bool IsRemoved (Literal l) const
void RemoveAllRedundantVariables (std::deque< std::vector< Literal > > *postsolve_clauses)
void CleanupAllRemovedAndFixedVariables ()
void ResetWorkDone ()
int64_t WorkDone () const
absl::Span< const LiteralGetAllImpliedLiterals (Literal root)
bool LiteralIsImplied (Literal l) const
void ClearImpliedLiterals ()
template<bool use_weight = true>
std::vector< LiteralExpandAtMostOneWithWeight (absl::Span< const Literal > at_most_one, const util_intops::StrongVector< LiteralIndex, bool > &can_be_included, const util_intops::StrongVector< LiteralIndex, double > &expanded_lp_values)
void ResetAtMostOneIterator ()
absl::Span< const LiteralNextAtMostOne ()
bool RemoveDuplicatesAndFixedVariables ()
bool HasNoDuplicates ()
absl::Span< const int > AtMostOneIndices (Literal lit) const
bool FixLiteral (Literal true_literal, absl::Span< const ClauseId > clause_ids={})
Public Member Functions inherited from operations_research::sat::SatPropagator
 SatPropagator (const std::string &name)
 SatPropagator (const SatPropagator &)=delete
SatPropagatoroperator= (const SatPropagator &)=delete
virtual ~SatPropagator ()=default
void SetPropagatorId (int id)
int PropagatorId () const
virtual void Untrail (const Trail &, int trail_index)
bool PropagatePreconditionsAreSatisfied (const Trail &trail) const
bool PropagationIsDone (const Trail &trail) const
const std::string & name () const

Friends

class LratEquivalenceHelper

Additional Inherited Members

Protected Attributes inherited from operations_research::sat::SatPropagator
const std::string name_
int propagator_id_
int propagation_trail_index_

Constructor & Destructor Documentation

◆ BinaryImplicationGraph() [1/2]

operations_research::sat::BinaryImplicationGraph::BinaryImplicationGraph ( Model * model)
explicit

Definition at line 3563 of file clause.cc.

◆ BinaryImplicationGraph() [2/2]

operations_research::sat::BinaryImplicationGraph::BinaryImplicationGraph ( const BinaryImplicationGraph & )
delete

◆ ~BinaryImplicationGraph()

operations_research::sat::BinaryImplicationGraph::~BinaryImplicationGraph ( )
override

Definition at line 3579 of file clause.cc.

Member Function Documentation

◆ AddAtMostOne()

bool operations_research::sat::BinaryImplicationGraph::AddAtMostOne ( absl::Span< const Literal > at_most_one)

Definition at line 1075 of file clause.cc.

◆ AddBinaryClause() [1/2]

bool operations_research::sat::BinaryImplicationGraph::AddBinaryClause ( ClauseId id,
Literal a,
Literal b,
bool delete_non_representative_id = true )
inline

Definition at line 660 of file clause.h.

◆ AddBinaryClause() [2/2]

bool operations_research::sat::BinaryImplicationGraph::AddBinaryClause ( Literal a,
Literal b )
inline

Definition at line 665 of file clause.h.

◆ AddBinaryClauseAndChangeReason()

bool operations_research::sat::BinaryImplicationGraph::AddBinaryClauseAndChangeReason ( ClauseId id,
Literal a,
Literal b )
inline

Definition at line 913 of file clause.h.

◆ AddImplication()

bool operations_research::sat::BinaryImplicationGraph::AddImplication ( Literal a,
Literal b )
inline

Definition at line 668 of file clause.h.

◆ AppendImplicationChains()

void operations_research::sat::BinaryImplicationGraph::AppendImplicationChains ( absl::Span< const Literal > literals,
std::vector< ClauseId > * clause_ids )

Definition at line 1487 of file clause.cc.

◆ AtMostOneIndices()

absl::Span< const int > operations_research::sat::BinaryImplicationGraph::AtMostOneIndices ( Literal lit) const
inline

Definition at line 996 of file clause.h.

◆ CleanupAllRemovedAndFixedVariables()

void operations_research::sat::BinaryImplicationGraph::CleanupAllRemovedAndFixedVariables ( )

Definition at line 3401 of file clause.cc.

◆ ClearImpliedLiterals()

void operations_research::sat::BinaryImplicationGraph::ClearImpliedLiterals ( )

Definition at line 3114 of file clause.cc.

◆ ComputeNumImplicationsForLog()

int64_t operations_research::sat::BinaryImplicationGraph::ComputeNumImplicationsForLog ( ) const
inline

Definition at line 873 of file clause.h.

◆ ComputeTransitiveReduction()

bool operations_research::sat::BinaryImplicationGraph::ComputeTransitiveReduction ( bool log_info = false)

Definition at line 2214 of file clause.cc.

◆ DetectEquivalences()

bool operations_research::sat::BinaryImplicationGraph::DetectEquivalences ( bool log_info = false)

Definition at line 1950 of file clause.cc.

◆ DirectImplications()

const std::vector< Literal > & operations_research::sat::BinaryImplicationGraph::DirectImplications ( Literal literal)

Definition at line 3218 of file clause.cc.

◆ DirectImplicationsEstimatedSize()

int operations_research::sat::BinaryImplicationGraph::DirectImplicationsEstimatedSize ( Literal literal) const
inline

Definition at line 935 of file clause.h.

◆ EnableSharing()

void operations_research::sat::BinaryImplicationGraph::EnableSharing ( bool enable)
inline

Definition at line 686 of file clause.h.

◆ ExpandAtMostOneWithWeight()

template<bool use_weight>
template std::vector< Literal > operations_research::sat::BinaryImplicationGraph::ExpandAtMostOneWithWeight< false > ( absl::Span< const Literal > at_most_one,
const util_intops::StrongVector< LiteralIndex, bool > & can_be_included,
const util_intops::StrongVector< LiteralIndex, double > & expanded_lp_values )

Definition at line 2754 of file clause.cc.

◆ ExtractAllBinaryClauses()

template<typename Output>
void operations_research::sat::BinaryImplicationGraph::ExtractAllBinaryClauses ( Output * out) const
inline

Definition at line 889 of file clause.h.

◆ FindFailedLiteralAroundVar()

bool operations_research::sat::BinaryImplicationGraph::FindFailedLiteralAroundVar ( BooleanVariable var,
bool * is_unsat )

Definition at line 3287 of file clause.cc.

◆ FixLiteral()

bool operations_research::sat::BinaryImplicationGraph::FixLiteral ( Literal true_literal,
absl::Span< const ClauseId > clause_ids = {} )

Definition at line 1100 of file clause.cc.

◆ GenerateAtMostOnesWithLargeWeight()

const std::vector< std::vector< Literal > > & operations_research::sat::BinaryImplicationGraph::GenerateAtMostOnesWithLargeWeight ( absl::Span< const Literal > literals,
absl::Span< const double > lp_values,
absl::Span< const double > reduced_costs )

Definition at line 2835 of file clause.cc.

◆ GetAllImpliedLiterals()

absl::Span< const Literal > operations_research::sat::BinaryImplicationGraph::GetAllImpliedLiterals ( Literal root)

Definition at line 3108 of file clause.cc.

◆ GetClauseId()

ClauseId operations_research::sat::BinaryImplicationGraph::GetClauseId ( Literal a,
Literal b ) const
inline

Definition at line 672 of file clause.h.

◆ HasNoDuplicates()

bool operations_research::sat::BinaryImplicationGraph::HasNoDuplicates ( )

Definition at line 939 of file clause.cc.

◆ HeuristicAmoPartition()

std::vector< absl::Span< const Literal > > operations_research::sat::BinaryImplicationGraph::HeuristicAmoPartition ( std::vector< Literal > * literals)

Definition at line 3037 of file clause.cc.

◆ Implications()

absl::Span< const Literal > operations_research::sat::BinaryImplicationGraph::Implications ( Literal l) const
inline

Definition at line 758 of file clause.h.

◆ IsDag()

bool operations_research::sat::BinaryImplicationGraph::IsDag ( ) const
inline

Definition at line 747 of file clause.h.

◆ IsEmpty()

bool operations_research::sat::BinaryImplicationGraph::IsEmpty ( ) const
inlinefinalvirtual

Reimplemented from operations_research::sat::SatPropagator.

Definition at line 643 of file clause.h.

◆ IsRedundant()

bool operations_research::sat::BinaryImplicationGraph::IsRedundant ( Literal l) const
inline

Definition at line 851 of file clause.h.

◆ IsRemoved()

bool operations_research::sat::BinaryImplicationGraph::IsRemoved ( Literal l) const
inline

Definition at line 950 of file clause.h.

◆ literal_size()

int64_t operations_research::sat::BinaryImplicationGraph::literal_size ( ) const
inline

Definition at line 640 of file clause.h.

◆ LiteralIsImplied()

bool operations_research::sat::BinaryImplicationGraph::LiteralIsImplied ( Literal l) const
inline

Definition at line 965 of file clause.h.

◆ MergeAtMostOnes()

bool operations_research::sat::BinaryImplicationGraph::MergeAtMostOnes ( absl::Span< std::vector< Literal > > at_most_ones,
int64_t max_num_explored_nodes = 1e8,
double * dtime = nullptr )

Definition at line 2604 of file clause.cc.

◆ MinimizeConflictFirst()

void operations_research::sat::BinaryImplicationGraph::MinimizeConflictFirst ( const Trail & trail,
std::vector< Literal > * c,
SparseBitset< BooleanVariable > * marked,
std::vector< ClauseId > * clause_ids,
bool also_use_decisions )

Definition at line 1397 of file clause.cc.

◆ NextAtMostOne()

absl::Span< const Literal > operations_research::sat::BinaryImplicationGraph::NextAtMostOne ( )

Definition at line 3552 of file clause.cc.

◆ num_current_equivalences()

int64_t operations_research::sat::BinaryImplicationGraph::num_current_equivalences ( ) const
inline

Definition at line 859 of file clause.h.

◆ num_inspections()

int64_t operations_research::sat::BinaryImplicationGraph::num_inspections ( ) const
inline

Definition at line 839 of file clause.h.

◆ num_literals_removed()

int64_t operations_research::sat::BinaryImplicationGraph::num_literals_removed ( ) const
inline

Definition at line 843 of file clause.h.

◆ num_minimization()

int64_t operations_research::sat::BinaryImplicationGraph::num_minimization ( ) const
inline

Definition at line 842 of file clause.h.

◆ num_propagations()

int64_t operations_research::sat::BinaryImplicationGraph::num_propagations ( ) const
inline

Definition at line 836 of file clause.h.

◆ num_redundant_implications()

int64_t operations_research::sat::BinaryImplicationGraph::num_redundant_implications ( ) const
inline

Definition at line 865 of file clause.h.

◆ num_redundant_literals()

int64_t operations_research::sat::BinaryImplicationGraph::num_redundant_literals ( ) const
inline

Definition at line 852 of file clause.h.

◆ NumImplicationOnVariableRemoval()

int64_t operations_research::sat::BinaryImplicationGraph::NumImplicationOnVariableRemoval ( BooleanVariable var)

Definition at line 3312 of file clause.cc.

◆ operator=()

BinaryImplicationGraph & operations_research::sat::BinaryImplicationGraph::operator= ( const BinaryImplicationGraph & )
delete

◆ Propagate()

bool operations_research::sat::BinaryImplicationGraph::Propagate ( Trail * trail)
finalvirtual

Implements operations_research::sat::SatPropagator.

Definition at line 1280 of file clause.cc.

◆ RandomImpliedLiteral()

LiteralIndex operations_research::sat::BinaryImplicationGraph::RandomImpliedLiteral ( Literal lhs)

Definition at line 3261 of file clause.cc.

◆ Reason()

absl::Span< const Literal > operations_research::sat::BinaryImplicationGraph::Reason ( const Trail & trail,
int trail_index,
int64_t conflict_id ) const
finalvirtual

Reimplemented from operations_research::sat::SatPropagator.

Definition at line 1377 of file clause.cc.

◆ Reimply()

void operations_research::sat::BinaryImplicationGraph::Reimply ( Trail * trail,
int old_trail_index )
finalvirtual

Reimplemented from operations_research::sat::SatPropagator.

Definition at line 1382 of file clause.cc.

◆ RemoveAllRedundantVariables()

void operations_research::sat::BinaryImplicationGraph::RemoveAllRedundantVariables ( std::deque< std::vector< Literal > > * postsolve_clauses)

Definition at line 3378 of file clause.cc.

◆ RemoveBooleanVariable()

void operations_research::sat::BinaryImplicationGraph::RemoveBooleanVariable ( BooleanVariable var,
std::deque< std::vector< Literal > > * postsolve_clauses )

Definition at line 3332 of file clause.cc.

◆ RemoveDuplicatesAndFixedVariables()

bool operations_research::sat::BinaryImplicationGraph::RemoveDuplicatesAndFixedVariables ( )

Definition at line 908 of file clause.cc.

◆ RemoveFixedVariables()

void operations_research::sat::BinaryImplicationGraph::RemoveFixedVariables ( )

Definition at line 1521 of file clause.cc.

◆ RepresentativeOf()

Literal operations_research::sat::BinaryImplicationGraph::RepresentativeOf ( Literal l) const
inline

Definition at line 765 of file clause.h.

◆ ResetAtMostOneIterator()

void operations_research::sat::BinaryImplicationGraph::ResetAtMostOneIterator ( )
inline

Definition at line 977 of file clause.h.

◆ ResetWorkDone()

void operations_research::sat::BinaryImplicationGraph::ResetWorkDone ( )
inline

Definition at line 957 of file clause.h.

◆ Resize()

void operations_research::sat::BinaryImplicationGraph::Resize ( int num_variables)

Definition at line 851 of file clause.cc.

◆ ReverseTopologicalOrder()

const std::vector< LiteralIndex > & operations_research::sat::BinaryImplicationGraph::ReverseTopologicalOrder ( ) const
inline

Definition at line 751 of file clause.h.

◆ SetAdditionCallback()

void operations_research::sat::BinaryImplicationGraph::SetAdditionCallback ( std::function< void(Literal, Literal)> f)
inline

Definition at line 687 of file clause.h.

◆ TransformIntoMaxCliques()

bool operations_research::sat::BinaryImplicationGraph::TransformIntoMaxCliques ( std::vector< std::vector< Literal > > * at_most_ones,
int64_t max_num_explored_nodes = 1e8 )

Definition at line 2500 of file clause.cc.

◆ WorkDone()

int64_t operations_research::sat::BinaryImplicationGraph::WorkDone ( ) const
inline

Definition at line 958 of file clause.h.

◆ LratEquivalenceHelper

friend class LratEquivalenceHelper
friend

Definition at line 1007 of file clause.h.


The documentation for this class was generated from the following files: