[英]How does a Resolution algorithm work for propositional logic?
我無法理解命題邏輯中的解析規則是什么。 解決方案是否只是簡單地說明了一個句子可以擴展和以另一種形式書寫的規則?
以下是命題邏輯的簡單分辨率算法。 該函數返回通過解析它的2輸入獲得的所有可能子句的集合。 我無法理解算法的工作原理,有人可以向我解釋一下嗎?
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 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
這是一個完整的討論話題,但我會試着向你解釋一個簡單的例子。
您的算法輸入是KB - 執行分辨率的規則集。 很容易理解,如下事實:
我們引入兩個謂詞R(x)
- ( x
是紅色 )和S(x)
- ( x
是甜的 )。 我們可以用正式語言寫出事實:
R('apple')
R(X) -> S(X)
我們可以將第二個事實替換為¬R v S
以符合解決規則的條件。
程序中的Caluclating resolvents步驟刪除了兩個相反的事實:
示例:1) a & ¬a -> empty
。 2) a('b') & ¬a(x) vs(x) -> S('b')
請注意 ,在第二個示例變量x
用實際值'b'
替換。
我們的程序確定判斷蘋果是否甜的目標是真實的。 我們也用正式語言將這句話寫為S('apple')
並以倒置狀態詢問它。 那么問題的正式定義是:
R('apple')
¬R(X) v S(X)
¬S('apple')
算法的工作原理如下:
S('apple')
這意味着我們的判決是真的。 如果你不能得到具有這樣的分辨率的空集,則意味着句子是錯誤的(但對於大多數情況,在實際應用中,它缺乏KB事實)。
考慮條款X和Y,X = {a,x1,x2,...,xm}和Y = {~a,y1,y2,...,yn},其中a是變量,~a是它的否定,xi和yi是文字(即可能否定的變量)。
X的解釋是命題(a \\ / x1 \\ / x2 \\ / ... \\ / xm) - 也就是說,假設X為真,則xi中的至少一個或其中一個必須為真。 同樣對Y.
我們假設X和Y是真的。
我們也知道(a \\ / ~a)總是正確的,無論a的值如何。
如果~a為真,則a為假,所以~a / \\ X => {x1,x2,...,xm}。
如果a為真,則~a為假。 在這種情況下,a / \\ Y => {y1,y2,...,yn}。
因此,我們知道{x1,x2,...,xm,y1,y2,...,yn}必須為真,假設X和Y為真。 注意新子句不引用變量a。
這種推論被稱為解決方案。
這在基於分辨率的定理證明器中如何工作? 簡單:我們使用矛盾證明。 也就是說,我們首先將我們的“事實”轉化為條款,並添加對應於否定我們“目標”的條款。 然后,如果我們最終可以解決空子句{},那么我們就會遇到矛盾,因為空子句相當於虛假。 因為事實已經給出,這意味着我們的否定目標必定是錯誤的,因此(不需要的)目標必須是真實的。
resolution是一個過程,用於證明謂詞邏輯中可表達的參數是正確的
分辨率導致命題邏輯中句子的駁斥定理證明技術 。
決議通過駁斥提供證據 。 即為了表明它是有效的,解決方案試圖表明對陳述的否定產生了與已知陳述的矛盾
算法:
1)。 將公理的所有命題轉換為子句形式
2)。 否定命題並將結果轉換為子句形式
3)解決它們
4)如果解決方案是空條款,則發現矛盾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.