Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Just a memo about ZDD #226

Open
shnarazk opened this issue Jan 18, 2024 · 0 comments
Open

Just a memo about ZDD #226

shnarazk opened this issue Jan 18, 2024 · 0 comments
Assignees

Comments

@shnarazk
Copy link
Owner

shnarazk commented Jan 18, 2024

fn solve(cnf: &CNF) -> Certificate {
    match solve_(cnf) {
         Ok(c)|Err(c) => c,
    }
}
fn solve_(cnf: &CNF) -> Result<Certificate, Certificate> {
    let mut a_graph: ZDD;
    while let partial_assignment = a_graph.is_equivalent_to(cnf, oracle)? {
        a_graph.add(!partial_assignment);
    }
    Ok(Certificate::UNSAT)
}
  • the given cnf is a shared reference because we will not add learnt clauses.

  • ZDD is a mutable reference but we can merge its variations by thread join.

  • we need to store some extra properties, such as activity or phase, on vars.

  • we could get some nice properties from ZDD itself.

  • I'm not trying to represent CNF as ZDD which is over 1M cascaded decisions. This is an alternative representation for learnt clauses. It's nice that both of knowledge acquired by conflict learning and the problem itself have the same representation. But this does not mean we have to choose it.

@shnarazk shnarazk self-assigned this Jan 18, 2024
@shnarazk shnarazk pinned this issue Jan 18, 2024
@shnarazk shnarazk changed the title just a memo just a memo about ZDD Jul 21, 2024
@shnarazk shnarazk changed the title just a memo about ZDD Just a memo about ZDD Jul 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant