無資訊搜尋也被稱為盲目搜尋,該術語(無資訊、盲目的)意味著該搜尋策略沒有超出問題定義提供的狀態之外的附加資訊。所有能做的就是生成後繼節點,並且區分乙個目標狀態或乙個非目標狀態。
所有的搜尋策略是由節點擴充套件的順序加以區分.
評價標準
**實現
參考每次擴充套件深度最小的結點之一(不選樹枝,所有結點一排一排地來)
深度優先是完備的 (只要分支不為無窮)
時間複雜度是o(b
d+1)
o(b^)
o(bd+1
), 空間複雜度是o(b
d)o(b^d)
o(bd
). b是平均分支因子, d是目標結點的深度 (空間複雜度理解: 寬度優先是個佇列, 在拓展目標結點的時候, 會儲存同深度的結點, 這裡的深度不包括根結點)
提高效率的方法:限制搜尋層數(可能導致不完備),剪枝(不是無資訊搜尋)
盡量向深擴充套件,到葉子之後回溯到還有未擴充套件後繼的父結點,繼續向深處擴充套件
優點:省空間,只需要儲存$bm+1 個結點
,空間復
雜度為個結點,空間複雜度為
個結點,空間
複雜度為
o(bm) ,
,,m$是樹的高度 (只需要儲存擴充套件子樹每個根結點的子結點)
另外,演算法可以遞迴地描述
缺點:時間複雜度為o(b
m)o(b^m)
o(bm
),m有可能很大,甚至達到無窮
在搜尋空間規模無法確定,或解的深度無法確定時,dfs可能會很慢,甚至找不到最優解
深度優先如果使用圖搜尋在狀態空間是完備的, 而在樹搜尋不是完備的 (可能陷入a->b->a->b死迴圈)
一些改進: 回溯搜尋(每次只產生乙個後繼, 而不是所有的後繼, 空間複雜度o(m
)o(m)
o(m)
)與bfs不同的是, 每次擴充套件當前結點中路徑消耗最低的結點
缺點:完備性需要每一步的耗散都是正的(否則會導致無限迴圈)
優點:可以相對快地找到相對好的解
如果輔助以限制層數、設計剪枝,搜尋的工作量大大減小
複雜度:時間複雜度和空間複雜度是o(b
⌈c∗/
ϵ⌉)o(b^)
o(b⌈c∗
/ϵ⌉)
,其中c
∗c^∗
c∗是最優解的耗散值,ϵ
ϵϵ是單步最小耗散值(兩個相除其實就是解的深度);這種情況對應找到最優解之前探索了一整顆耗散很小的步驟組成的很大的樹。
無資訊搜尋可以說最好的
從深度限制為0開始,每次增加深度限制並做一次深度有限搜尋(dls),直到找到目標解;搜尋下一層之前,所有上層結點都已經搜過
時間複雜度o(b
d)o(b^d)
o(bd
),空間複雜度o(b
d)o(bd)
o(bd
),其中d是最淺的目標結點的深度(深度達到d時找到符合題目要求的目標結點)
優點:完備性、最優性和bfs標齊(因為過程類似),空間複雜度和dfs標齊
缺點: 上層有很多沒必要的搜尋, 所以利用a*使得迭代加深更有目的性(ida*)
dfs的最大深度不能超過l
時間複雜度o(b
l)o(b^l)
o(bl
),空間複雜度o(b
l)o(bl)
o(bl),
缺點:可能找不到最優解(不完備)
乙個從初始狀態開始搜,乙個從目標狀態開始搜,當邊緣有交集,就說明找到了解。
優點:降時間複雜度
如果兩個都用bfs, 時間複雜度和空間複雜度都為o(b
d/2)
o(b^)
o(bd/2
)(兩個o(b
d/2)
o(b^)
o(bd/2
)相加)
要求祖先可以有效地計算 (不如無法從目標狀態往前推, 如八皇后問題不好進行雙向搜尋,)
下圖黃色圓形代表只從初始狀態開始搜尋的狀態空間, 藍色代表雙向搜尋的狀態空間
各種無資訊演算法的主要區別在於選擇部分的不同
# 初始化
frontier <
-while
:# 選擇
if frontier is none:
return failure
else
: best_node <
- get_bestnode(frontier)
, frontier <
- frontier - best_node
# 目標檢測
if is_goal(best_node)
return solution
# 擴充套件
list
<
- successor(best_node)
frontier <
- frontier +
list
# 初始化
frontier <
-, close <
-# close儲存訪問過的結點, 常用hash表表示
while
:# 選擇
if frontier is none:
return failure
else
: best_node <
- get_bestnode(frontier)
, frontier <
- frontier - best_node,
close <
- close和best_node的並集
# 目標檢測
if is_goal(best_node)
return solution
# 擴充套件
list
<
- successor(best_node)
list
<
-list
- frontier - closed
frontier <
- frontier和list的並集
有一點需要注意, 圖搜尋拓展時list需要減去frontier, 原因是要排除擴充套件到s的前乙個結點
常用的無資訊搜尋求解策略
人工智慧第三章(1)——無資訊搜尋(盲目搜尋) (附書本資料)
人工智慧導論_手寫筆記 by 劉嘉禹
[uninformed search](
無資訊搜尋(上)
無資訊搜尋是指除了問題定義中提供的狀態資訊外沒有任何附加資訊。特點 演算法只能區分狀態是不是目標狀態 無法比較非目標狀態的好壞。策略 寬度優先搜尋 一致代價搜尋 深度優先搜尋 深度受限搜尋 迭代加深的深度優先搜尋 一 寬度優先搜尋 1.基本思想 寬度優先搜尋是簡單搜尋策略,先擴充套件根結點,接著擴充...
人工智慧 無資訊搜尋
一 無資訊搜尋 定義除了問題中提供的定義之外沒有任何關於狀態的附加資訊。可以做的事情只能是生成後繼。二 六種搜尋策略 1 廣度優先搜尋 2 代價一致搜尋 而只關心所經步驟總的耗散,擴充套件的是路徑 消耗最低的節點n 3 深度優先搜尋 4 深度有限搜尋 無邊界的搜尋樹問題可以通過對深度優先搜尋提供乙個...
人智導(一) 無資訊搜尋
狀態空間模型 定義兩個基本元素 本體 步驟如下 function problem solving agent p returns an action inputs p a percept static s an action ssequence,intially empty state some d...