pub struct Solver<S, St = UNKNOWN>where
S: Search,
St: SolverState,{
pub(crate) pre_processor: Vec<Box<dyn Pass>>,
pub(crate) in_processor: Vec<Box<dyn Pass>>,
pub(crate) search: S,
pub(crate) kernel: Kernel,
pub(crate) _state: PhantomData<St>,
}Expand description
主求解器对象。
组件说明:
pre_processor:搜索前执行;in_processor:搜索循环中周期执行;search:CDCL 核心;kernel:统一状态与数据。
Fields§
§pre_processor: Vec<Box<dyn Pass>>§in_processor: Vec<Box<dyn Pass>>§search: S§kernel: Kernel§_state: PhantomData<St>Implementations§
Source§impl<S, St> Solver<S, St>where
S: Search,
St: SolverState,
impl<S, St> Solver<S, St>where
S: Search,
St: SolverState,
Sourcepub const fn status(&self) -> SolverStatus
pub const fn status(&self) -> SolverStatus
返回编译期状态对应的运行时枚举。
pub(crate) fn into_state<Next>(self) -> Solver<S, Next>where
Next: SolverState,
Source§impl<S> Solver<S, UNKNOWN>where
S: Search,
impl<S> Solver<S, UNKNOWN>where
S: Search,
Sourcepub fn add_preprocess_pass(&mut self, pass: impl Pass + 'static)
pub fn add_preprocess_pass(&mut self, pass: impl Pass + 'static)
注册一个预处理 Pass。
Sourcepub fn arrange_preprocess_passes(&mut self, ordered: &str)
pub fn arrange_preprocess_passes(&mut self, ordered: &str)
按逗号分隔短名重排预处理 Pass。
Sourcepub fn add_inprocess_pass(&mut self, pass: impl Pass + 'static)
pub fn add_inprocess_pass(&mut self, pass: impl Pass + 'static)
注册一个搜索中 Pass。
Sourcepub fn arrange_inprocess_passes(&mut self, ordered: &str)
pub fn arrange_inprocess_passes(&mut self, ordered: &str)
按逗号分隔短名重排搜索中 Pass。
Sourcepub fn solve(self) -> SolveResult<S>
pub fn solve(self) -> SolveResult<S>
执行完整求解流程并返回分型结果。
主要顺序:
- 先跑预处理,若可直接判定则提前返回;
- 进入
SOLVING状态,执行 CDCL 搜索; - 按最终结果转移到
SAT/UNSAT/UNKNOWN状态。
Auto Trait Implementations§
impl<S, St> Freeze for Solver<S, St>where
S: Freeze,
impl<S, St = UNKNOWN> !RefUnwindSafe for Solver<S, St>
impl<S, St = UNKNOWN> !Send for Solver<S, St>
impl<S, St = UNKNOWN> !Sync for Solver<S, St>
impl<S, St> Unpin for Solver<S, St>
impl<S, St> UnsafeUnpin for Solver<S, St>where
S: UnsafeUnpin,
impl<S, St = UNKNOWN> !UnwindSafe for Solver<S, St>
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