【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第6章 用搜索树对问题求解
人工智能 一種現代方法 第6章 用搜索樹對問題求解
6.1定義約束滿足問題(CSP)
變量的集合: X={X1, X2,...Xn}?
值域:D={D1, D2...Dn}
約束關系:C
6.1.1地圖著色問題
要求相鄰區域顏色不同,可把問題形式化為CSP問題。
常規搜索只能問:這個解是目標嗎?
CSP一旦發現某部分賦值不滿足約束,便可立即剪枝,不再進一步求精。
6.1.2作業調度問題
過程約束:某部分工作需要在其他工作之前完成
洗去約束:幾個工作之間不能有時間上的重合
6.1.3CSP的形式化
離散的、連續的、有限值域的、無限值域的
一元約束、二元約束、全局約束
任意有限值域的約束都可以引入約束變量而轉換為二元約束
6.2約束傳播:CSP中的推理
約束傳播可以減小變量的合法取值范圍,可以與搜索交替進行,也可以作為搜索前的預處理步驟。
核心思想為局部相容性。
6.2.1結點相容
如果對于單個變量(一個結點),值域(該結點的值域)中的所有取值滿足他的一元約束,就稱此變量是結點相容的。
運行結點相容可消除一元約束,可將n元約束轉換為二元約束。
6.2.2弧相容
如果CSP中某變量值域中的所有取值滿足該變量的所有二元約束,則稱為弧相容。
AC-3算法:
先把所有弧裝入隊列
當弧隊列不為空時,循環彈出一個弧
????? ? 如果弧兩端的節點滿足弧相容,則繼續
????? ? 如果不滿足弧相容,即一個結點的值域要變小
????????????? ? 保存變小后的值域
????????????? ? 把指向該結點的所有弧重新插入隊列
6.2.3路徑相容
對于{Xi, Xj}的每一個相容賦值,Xm都有合適的取值同時使得{Xi, Xm}和{Xm, Xj}是相容的。
6.2.4 k-相容
對于任一個k-1個變量的相容賦值,第k個變量總能被賦予和前k-1個變量相容的值
1-相容:結點相容
2-相容:弧相容
3-相容:路徑相容
6.2.5全局約束
Alldiff約束:每一個變量都不能相同
atmost約束:資源總和受限
6.2.6 數獨游戲9*9
一共有27個Alldiff約束,行9列9方框9
6.3 CSP的回溯搜索
可交換性:對于行動的先后順序對結果沒有影響的問題,可以交換行動順序。從排列變為組合。
回溯搜索:每次為一個變量賦值,當沒有合法值時就回溯到上一個有合法值的變量。
6.3.1變量的取值順序
var <- SELECT-UNASSIGNED-VARIABLE(csp)
選擇下一個未安排的節點的順序對效率有很大影響
最少剩余價值(MRV)啟發式:選擇合法取值最少的變量。----強有力的指引
也就是選擇最少剩余值的變量,通過早期有效剪枝,降低搜索樹結點數。
度啟發式:選擇與其他未賦值變量約束最多的變量來試圖降低未來的分支引子。----打破僵局
最少約束值啟發式:給鄰居變量留下更多的選擇。對于只需要找到一個解的問題有效。
6.3.2搜索與推理交錯進行
向前檢驗:只要某個X賦值了,對于動過約束與X相關的未賦值的變量Y,從Y的值域中刪除與X不相容的值。
維護弧相容(MAC):能夠檢測所有的不相容,當變量Xi被賦值后,INFERENCE調用AC-3。
6.3.3智能回溯:向后看
BACKTRACKING-SEARCH
時序回溯:當一個分支上的搜索失敗時,退回前一個變量并嘗試另一值。
回跳:回溯到沖突集中時間最近的賦值,跳過與當前節點沒有沖突的節點。
沖突指導的回跳:先找出當前變量的沖突集,回跳到沖突集中最近的元素,并將新元素的沖突集與原沖突集取并集,在減去新元素,檢驗是否還有沖突,循環。可以知道要退回多遠
總結
以上是生活随笔為你收集整理的【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第6章 用搜索树对问题求解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux设备驱动-模块加载过程
- 下一篇: 人工智能一种现代的方法 --第2章 智能