人工智能 一种现代方法 第6章 约束满足问题
文章目錄
- 定義約束滿足問題
- 約束傳播:CSP中的推理
- 結點相容
- 弧相容
- 路徑相容
- k-相容
- 全局約束
- CSP形式化為一個搜索問題(CSP的回溯搜索)
- 如何提高回溯搜索的效率
- 變量順序
- 取值順序
- 如何提前檢查失敗(搜索與推理交錯進行)
- CSP局部搜索
- 問題的結構
- 資源分享
定義約束滿足問題
使用要素化來描述狀態:一組變量,每個變量有自己的值。當每個變量都有自己的賦值同時滿足所有關于變量的約束時,問題就得到了解決。這類問題就叫做約束滿足問題(CSP),全稱Constraint Satisfaction Problem。
CSP利用了狀態結構的優勢,使用的是通用策略而不是問題專業啟發式來求解復雜問題。
主要思想:通過識別違反約束的變量/值的組合迅速消除大規模的搜索空間。
賦值:問題的狀態由對部分或者全部變量的一個賦值來定義,{X_i=v_i,…}。
相容賦值、合法賦值:一個不違反約束條件的賦值。
完整賦值:每個變量都已經賦值。
部分賦值:只有部分變量賦值。
CSP的解是相容的、完整的賦值。
CSP包含三個成分X,D,C:
- X:變量集合 (variables)
- D:值域集合,每個變量有自己的值域 (domain)
- C:描述變量取值的約束集合 (constraint)
八皇后問題的CSP形式
- Variables: X={X1,X2,X3,…,X8}
- Domain: D={D1,D2,D3,…,D8},Di={1,2,3,4,5,6,7,8}
- Constraints:C={<{Xi,Xj}, Xi≠Xj & |Xi-Xj|≠|i-j|, 1 ≤ i ≤ 8,1 ≤ j ≤ 8}
a solution {5,2,4,6,8,3,1,7}
地圖著色問題
任務:對澳大利亞地圖的每個州進行著色,每個區域可以涂上紅色、綠色或者藍色,要求是相鄰的區域顏色不能相同。
下圖中的右圖就是左圖所示的羅馬尼亞問題的約束圖
地圖著色問題的CSP形式化
- Variables: X={WA, NT, Q, NSW, V, SA, T}
- Domain: D={D 1 ,…,D 7 }, D i ={red, green, blue}
- Constraints: adjacent regions must have different colors:C={WA≠NT, WA≠SA, NT≠SA, NT≠Q, SA≠Q,SA≠W, SA≠V,Q≠NSW, NSW≠V}
SA≠WA是< (SA, WA),SA≠WA>的簡潔表示
Solutions are assignments satisfying all constraints:
{WA=red, NT=green, Q=red,NSW=green, V= red, SA=blue,T= green}
約束傳播:CSP中的推理
CSP中的推理:約束傳播。約束傳播使用約束減小一個變量的合法取值范圍,從而影響到跟此變量有約束關系的另一變量的取值。
局部搜索(local search):全部賦值full assignment
約束傳播(constraint propagation):部分賦值partial assignment
- 給一個變量賦值后,則通過約束傳播可縮小與其有約束關系的其他變量的值域。
例如
- 在CSP中,算法可以進行約束傳播,也可以搜索(從幾種可能性中選擇新的變量賦值)。約束傳播與搜索可以交替進行,或者也可以將約束傳播作為搜索前的預處理步驟。
- 約束傳播的核心思想是局部相容性。
- 增強約束圖中各部分局部相容性會導致不相容的結點取值被刪除。
結點相容
如果單個變量(對應于CSP網絡中的結點)值域中的所有取值滿足它的一元約束,就稱此變量是結點相容的。
例如,如果地圖著色問題中南澳洲人不喜歡綠色,變量SA原來值域為{red, green, blue},刪除green此結點即為結點相容的,此時SA的值域為{red, blue}。
如果網絡中每個變量都是結點相容的,則此網絡是結點相容的。
弧相容
對于變量Xi,Xj ,若對Xi的每個賦值在Xj都存在某個取值滿足弧(Xi, Xj)的二元約束,則稱Xi對于Xj是弧相容的。
如果每個變量對于其它變量都是弧相容的,則稱該網絡是弧相容的。
路徑相容
對{Xi , Xj}的每一個相容賦值{Xi =a, Xj =b},Xm都有合適的取值同時使得{Xi , Xm }和{Xm , Xj }是相容的,則稱集合{Xi , Xj }對于Xm 是(路徑)相容的。被稱為路徑相容,是因為這很像是一條從Xi途經Xm,再到Xj的路徑。
k-相容
如果對于任何k-1個變量的任何相容賦值,任何第k個變量總能被賦予一個和前k-個變量相容的值,那么這個CSP是k相容的。
1-相容是節點相容。2-相容即為弧相容。對二元約束網絡,3-相容是路徑相容。
全局約束
全局約束可涉及任意個約束變量(此處說的全局約束不一定是所有變量)。例如,Alldiff約束表示所有相關變量必須取不同的值。Alldiff約束的不相容檢測的一種簡單形式:如果約束涉及m個變量,可能的不同取值有n個,且m>n,那么約束不可能滿足。
另一個重要的高階約束是資源約束,有時稱為atmost約束。例如在調度問題中,用P1 ,…,P4 表示執行四項任務的人數??側藬挡怀^10人的約束記為atmost(10, P1 , P2 , P3 , P4)。
CSP形式化為一個搜索問題(CSP的回溯搜索)
在CSP中,算法可以進行約束傳播,也可以搜索(從幾種可能性中選擇新的變量賦值)。
很多CSP只用推理是無法求解的,還需要通過搜索來求解。
部分賦值的回溯搜索算法:可以用標準的深度優先搜索,狀態可能是部分賦值,行動是將var=value加入到賦值中。
CSP的一個性質:變量賦值是可交換的,不用考慮變量賦值的順序。
例子:澳大利亞地圖著色的一個部分搜索樹如下
回溯搜索,深度優先搜索的一種形式,經常用于求解CSP問題。每次為一個變量選一個賦值,沒有合法的值的時候就回溯。推理和搜索可以交錯進行(如前向檢驗、弧相容檢驗)。
如何提高回溯搜索的效率
變量順序(最少剩余值、最大度)、值的順序(最少約束值)、提前檢查失敗(前向檢驗、維護弧相容)、利用樹形結構
還是以澳大利亞地圖著色為例:
變量順序
1)選擇“合法”取值最少或失敗優先的變量——稱為 最少剩余值(MRV) 啟發式。(做一個強有力的引導,方便提早遇到失敗,從而剪枝)
如果變量都有同樣的最少剩余值,該怎么選呢?
2)度啟發式:通過選擇與其他未賦值變量約束最多的變量來試圖降低未來的分支因子。(用來打破僵局,如選擇第一個著色區域)
取值順序
上面講了怎么選取變量,一旦變量選好了,變量的值應該怎么選呢?
最少約束值:優先選擇的賦值是給鄰居變量留下更多的選擇
下圖中,右上角的Q應選擇紅色,若選擇藍色,則SA沒有可選的顏色了
如何提前檢查失敗(搜索與推理交錯進行)
前向檢驗(Forward Checking):檢查未分配變量的合法剩余值,當任何變量沒有合法值時終止。
上圖中,長條形顏色表示給對應地圖上色,正方形顏色表示未上色,但是可以選擇的顏色,按順序對WA,Q,V賦值后,SA值域為空,故算法立刻回溯。
前向檢驗能檢測出很多不相容,但是它無法檢測所有不相容。它使當前變量弧相容,但是并不向前看使其他變量弧相容。上圖中第三行,當WA,Q都賦值后,NT和SA都是能是藍色了。前向檢驗向前看得不夠遠,不足以觀察出這種不相容;NT和SA鄰接所以不能取相同的值。
如何更早地比前向檢驗檢查失敗呢?
弧相容(Arc consistency)檢驗:當變量X賦值后,弧相容從與X相鄰的弧中所有其他沒有賦值的變量出發,若一旦某個變量的值域變為空,則算法立刻回溯。
上圖中,當WA,Q都賦值后,弧相容算法可以檢測和SA鄰接的NT的取值。若NT沒有可取的值,則回溯。
弧相容檢測故障早于前向檢查
CSP局部搜索
局部搜索算法對求解許多CSP都是很有效的。它們使用完整狀態的形式化:初始狀態是給每個變量都賦一個值,搜索過程是一次改變一個變量的取值。
問題的結構
Theorem: if the constraint graph has no loops,the CSP can be solved in O(nd^2 ) time.
Compare to general CSPs, where worst-casetime is O(d^n)
求解樹結構CSP時,首先任意選擇一個變量為樹的根,選擇變量順序,這樣每個變量在樹中出現在父節點之后。這樣的排序稱為拓撲排序。
資源分享
實驗代碼下載:
https://github.com/yyl424525/AI_Homework
人工智能-一種現代方法中文第三版pdf、課件、作業及解答、課后習題答案、實驗代碼和報告、歷年考博題下載:https://download.csdn.net/download/yyl424525/11310392
總結
以上是生活随笔為你收集整理的人工智能 一种现代方法 第6章 约束满足问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021南京大学软件学院考研经验
- 下一篇: Linux设备驱动开发入门之——hell