pub struct LocalSearch { /* private fields */ }Expand description
Local Search SAT Solver
Implements both WalkSAT and ProbSAT algorithms. Maintains a complete assignment and iteratively flips variables.
Implementations§
Source§impl LocalSearch
impl LocalSearch
Sourcepub fn new(num_vars: usize, config: LocalSearchConfig) -> Self
pub fn new(num_vars: usize, config: LocalSearchConfig) -> Self
Create a new local search solver
Sourcepub fn solve_walksat(
&mut self,
clauses: &ClauseDatabase,
num_vars: usize,
) -> (LocalSearchResult, Option<Vec<bool>>)
pub fn solve_walksat( &mut self, clauses: &ClauseDatabase, num_vars: usize, ) -> (LocalSearchResult, Option<Vec<bool>>)
Run WalkSAT algorithm
Returns the result and the final assignment (if SAT)
Sourcepub fn solve_probsat(
&mut self,
clauses: &ClauseDatabase,
num_vars: usize,
) -> (LocalSearchResult, Option<Vec<bool>>)
pub fn solve_probsat( &mut self, clauses: &ClauseDatabase, num_vars: usize, ) -> (LocalSearchResult, Option<Vec<bool>>)
Run ProbSAT algorithm
Returns the result and the final assignment (if SAT)
Sourcepub fn stats(&self) -> &LocalSearchStats
pub fn stats(&self) -> &LocalSearchStats
Get statistics
Auto Trait Implementations§
impl Freeze for LocalSearch
impl RefUnwindSafe for LocalSearch
impl Send for LocalSearch
impl Sync for LocalSearch
impl Unpin for LocalSearch
impl UnsafeUnpin for LocalSearch
impl UnwindSafe for LocalSearch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more