public class PLResolution
extends java.lang.Object
function PL-RESOLUTION(KB, α) returns true or false
inputs: KB, the knowledge base, a sentence in propositional logic
α, the query, a sentence in propositional logic
clauses ← the set of clauses in the CNF representation of KB ∧ ¬α
new ← {}
loop do
for each pair of clauses Ci, Cj in clauses do
resolvents ← PL-RESOLVE(Ci, Cj)
if resolvents contains the empty clause then return true
new ← new ∪ resolvents
if new ⊆ clauses then return false
clauses ← clauses ∪ new
Figure 7.12 A simple resolution algorithm for propositional logic. The
function PL-RESOLVE returns the set of all possible clauses obtained by
resolving its two inputs.Inspection of Figure 7.13 reveals that many resolution steps are pointless. For example, the clause B1,1 ∨ ¬B1,1 ∨ P1,2 is equivalent to True ∨ P1,2 which is equivalent to True. Deducing that True is true is not very helpful. Therefore, any clauses in which two complementary literals appear can be discarded.
Clause.isTautology()
Constructor and Description |
---|
PLResolution()
Default constructor, which will set the algorithm to discard tautologies
by default.
|
PLResolution(boolean discardTautologies)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected void |
discardTautologies(java.util.Set<Clause> clauses) |
boolean |
isDiscardTautologies() |
boolean |
plResolution(KnowledgeBase kb,
Sentence alpha)
PL-RESOLUTION(KB, α)
A simple resolution algorithm for propositional logic. |
java.util.Set<Clause> |
plResolve(Clause ci,
Clause cj)
PL-RESOLVE(Ci, Cj)
Calculate the set of all possible clauses by resolving its two inputs. |
protected void |
resolvePositiveWithNegative(Clause c1,
Clause c2,
java.util.Set<Clause> resolvents) |
void |
setDiscardTautologies(boolean discardTautologies)
Determine whether or not the algorithm should discard tautological
clauses during processing.
|
protected java.util.Set<Clause> |
setOfClausesInTheCNFRepresentationOfKBAndNotAlpha(KnowledgeBase kb,
Sentence alpha) |
public PLResolution()
public PLResolution(boolean discardTautologies)
discardTautologies
- true if the algorithm is to discard tautological clauses
during processing, false otherwise.public boolean plResolution(KnowledgeBase kb, Sentence alpha)
kb
- the knowledge base, a sentence in propositional logic.alpha
- the query, a sentence in propositional logic.public java.util.Set<Clause> plResolve(Clause ci, Clause cj)
ci
- clause 1cj
- clause 2public boolean isDiscardTautologies()
public void setDiscardTautologies(boolean discardTautologies)
discardTautologies
- protected java.util.Set<Clause> setOfClausesInTheCNFRepresentationOfKBAndNotAlpha(KnowledgeBase kb, Sentence alpha)
protected void resolvePositiveWithNegative(Clause c1, Clause c2, java.util.Set<Clause> resolvents)
protected void discardTautologies(java.util.Set<Clause> clauses)