Talk:Unit propagation
From Wikipedia, the free encyclopedia
Is this actually correct?! By the very definition (and another definition I have here), the example is wrong because the {a} clause should have been deleted, giving:
{c}, {!c, d}
not
{c}, {!c, d}, {a}
Or is my understanding flawed? MikeHearn 22:09, 10 February 2006 (UTC)
- According to the definition of the article, the elimination is to be done for all clauses containing a but a itself ("the other clauses are simplified..."). If you use unit propagation in a backtracking-based algorithm (more generally, if you have a partial current assignment), you may as well remove a, provided that a is added to the current partial evaluation. I have no idea of which definition is actually the most common in textbooks. You mention another definition you have: which one is that? - Liberatore(T) 11:30, 11 February 2006 (UTC)
-
- The current page is just confusing. All other defintions I have seen would also remove the unit clause {a}. Why would you not keep a partial truth assignment?! There is no point in running unit propagation on a clause-set unless you keep a truth assignment, that's what unit propagation is designed for; constructing a truth assignment!
-
- I made the edit yesterday, if you disagree then fair enough but all papers and textbooks that I've read would remove unit clause {a}. RogerWillis 14:54, 08 April 2006 (BST)
-
-
- I added a section "Using a partial model" to explain when unit clauses can be removed. IMO, saying that clauses before=clauses after is simpler than saying partial model|=clause before=clauses after. - Liberatore(T) 10:52, 10 April 2006 (UTC)
-