1. 程式人生 > >人工智能之歸結反演法

人工智能之歸結反演法

nbsp blog mage 不同 不同的 博客 log inf ima

歸結反演法

  1. 魯濱遜歸結原理

檢查子句集S中是否包含空子句。若包含,則S不可滿足;若不包含,就在子句集中選擇合適的子句進行歸結,一旦通過歸結能推出空子句,就說明子句集S是不可滿足的。(這是我的理解:如果論據是真的,最後肯定會推出一個最終結論,如果是假的,最後的結論肯定就為空了也就是沒有結論)

2. 一個十分重要的公式:

技術分享圖片

3. 子句的定義:

任何文字的析取(即並集、或)稱為子句。

4. 把謂詞公式化成子句集的步驟

1) 利用等價關系消去“→”和“↔”

例如公式

技術分享圖片

可等價變換為

技術分享圖片

2) 利用等價關系把“¬”移到緊靠謂詞的位置上上式經等價變換後

技術分享圖片

3重新命名變元,使不同量詞約束的變元有不同的名字

上式經變換後

技術分享圖片

4消去存在量詞

a.存在量詞不出現在全稱量詞的轄域內,則只要用一個新的個體常量替換受該量詞約束的變元。(我的理解:說明兩個量詞沒有關系)(比如說 存在某個x,那麽用y=存在的某個x,即用y替換()即可)

b.存在量詞位於一個或者多個全稱量詞的轄域內,此時要用函數替換受該存在量詞約束的變元。(說明兩個量詞是有關系的,即函數關系)

上式中存在量詞($y)及($z)都位於("x)的轄域內,所以需要用函數替換,設替換y和z的函數分別是f(x)和g(x),則替換後得到

技術分享圖片

5)把全稱量詞全部移動到公式的左邊

6)利用等價關系把公式化為標準形:(就是分配率)

技術分享圖片

上式化為標準形後得到:

技術分享圖片

7)消去全稱量詞(我的理解是:就是直接去掉全稱量詞,既然所有的x都是了,那麽自然可以省略

8)對變元更名,使不同子句中的變元不同名

上式化為:

技術分享圖片

(x,y)只是變元,PQR才是關系,自然可以用不同的方式命名)

9)消去合取詞,就得到子句集

技術分享圖片

5. 命題邏輯中的歸結原理

定義:若P是原子謂詞公式,則稱P與¬P為互補文字。在命題邏輯中,P為命題。

定義:設C1與C2是子句集中的任意兩個子句。如果C1中的文字L1與C2中文字L2互補,那麽從C1和C2中分別消去L1和L2,並將兩個子句中余下的部分析取,構成一個新子句C12,則稱這一過程為歸結。稱C12為C1和C2的歸結式,C1和C2為C12的親本子句。

定理:C12是其親本子句C1與C2的邏輯結論。

定義定理的證明:

技術分享圖片

6. 歸結反演法的具體步驟

以上都是基礎知識,下面是歸結反演的步驟。

1.否定Q,得到¬Q;

2.把¬Q並入到公式集F中,得到{F, ¬Q};

3.把公式集{F, ¬Q}化為子句集S;

4.應用歸結原理對子句集S中的子句進行歸結,並把每次歸結得到的歸結式都並入S中。如此反復進行,若出現了空子句,則停止歸結,此時就證明了Q為真。

                                      第一次寫博客,理解得有什麽不對的地方,或者有什麽寫得不好的地方請大家多多指教。。。

人工智能之歸結反演法