csp搜尋的作用就是在應用約束傳播縮小值域範圍後開始使用搜尋演算法來得到最終結果。
輸入是乙個csp問題,輸出是乙個解決方案。
a、轉態是由賦值的變數決定的
b、初始狀態設為空{}
c、步驟:給乙個沒有賦值的變數賦值,該賦值不與當前已賦值的變數相衝突
d、目標測試:如果所有的賦值完成且滿足終止狀態,則搜搜結束
e、csp適用於通用的搜尋模式,並採用深度搜尋方法
f、缺點:重複計算,每一層對所有節點賦值進行列舉
g、變數的賦值順序是可以交換的
h、改進:每一層只需要考慮乙個變數的賦值
①、演算法之前固定賦值順序
②、可減少到d^n
i、對csp採用深度優先的單個變數賦值,當檢測到(某個分支)不相容時,返回上一層賦值(這條路走不通,走另乙個)
實際上就是就優化過的值域範圍中遍歷所有的可能性,然後找到滿足條件的結果。
上次我們得到了,abc三個變數的值域分別為:;;
那麼,我們就可以用通用搜尋模式,獲得這個問題的csp搜尋樹:
最初的是這樣的:
這個並沒有畫完,還有很多。
可以看出來,很明顯有很多的重複的分支,比方說a=1b=0c=0和b=0a=1c=0這樣的,所以,很自然的就有了改進,即每層只考慮乙個變數,如第一層就考慮a,第二層就考慮b,以此類推,得到了下面的csp搜尋樹:
可以看到,又改進了很多,減少了很多的分支。但這種方法還是有很多的問題,比方說我為什麼第一層不能是變數b?,所以就有了
先a還是先b
·最受約束的變數:優先選擇最少剩餘值的變數進行賦值(即當前值域最小的變數);減少回溯的次數。但這個題目中a、b、c的值域都只有三個,所以只能任選乙個了。
·約束最多的變數:優先選擇最能約束其他變數的變數進行賦值(即約束條件中提到最多的變數);減少回溯的次數。比方說這個題目中,b這個變數被約束條件提到了兩次,a和c各一次,所以可以先從b開始搜尋。
變數先選1還是2
給定乙個變數,演算法決定他的取值順序。
·最少約束值:選擇使得剩餘變數賦值空間更大的值,使剩下的節點有更大的賦值空間。
·前項檢測法:追蹤未賦值變數的剩餘合法賦值;當任何乙個剩餘變數沒有合法賦值時搜尋終止。提早檢測可能失敗的取值。從賦值變數向未賦值變數傳播資訊,但不能對失敗提供早期檢測。可以通過弧相容(維護弧相容)演算法,如果結果為空集說明這種方法將來會失敗,就可以結束。
·智慧型回溯:回溯到和當前變數有約束關係的變數,考慮一下回溯節點的位置來提高演算法的效率。建立衝突集,回溯到衝突集中時間最近的賦值。
機器智慧型 高頻問題 區域性束搜尋 遺傳演算法
1 區域性束搜尋 a 隨機產生k個狀態,然後每一步從所有的後繼狀態中選擇k個最佳的後繼狀態 也有健康度函式,詳見下文 直到找到目標狀態 記憶體中同時保留k個狀態 增大了找到全域性最優的概率。b 相當於多個人去找,或者多次爬山法。c 狀態越多,找到最優的可能性越大 d 空間複雜度高 時間複雜度大 來自...
機器智慧型 高頻問題 人工智慧的定義
目前一共有四中定義方式 1 合理地行動 2 像人一樣行動 3 合理地思考 4 像人一想思考 這也是當前的定義。因為有統一的標準,易於實現 a 正確的推理可能是合理的推理 b 正確的推理不是合理性的全部 c 有些合理的行動不涉及推理 合理的行動比思維法則更一般,因為正確的推理只是實現合理性的其中可能機...
機器智慧型 高頻問題 AC 3演算法
是一種約束傳播演算法,即在得到約束條件和值域的情況下,算出所有變數滿足約束條件的取值範圍。注意,ac 3演算法能夠處理的只有二元約束,即弧相容的情況,或者說在約束條件中任何乙個約束條件都只包含了兩個一下的變數。1 首先,將所有的二元組 弧 入隊 2 二元組乙個個出隊,出隊的時候確定乙個為固定的值,另...