人工智能--狀態空間的盲目搜索

狀態空間的盲目搜索

根據狀態空間所採用的數據結構的不同,可分爲圖搜索算法和樹搜索算法。由於圖搜索算法且一般問題都可用樹搜索算法解決,於是主要討論樹搜索算法,包括一般和代價樹

一般樹的盲目搜索主要包括深度優先和廣度優先兩種搜索算法。

廣度優先算法

也稱爲寬度優先算法,是一種先生成的節點先擴展的策略

算法精髓:從初始節點$S_0$開始逐層向下擴展,在第n層還沒有完全搜索完之前不會進入第n+1層的搜索。Open表中的節點總是按進入的先後排序,先進入的節點排在前面。

算法描述:

  1. 把初始節點$S_0$放入Open表中
  2. 如果Open表爲空,則問題無解,失敗退出
  3. Open表的第一個節點取出,放入Closed表,並記該節點爲n
  4. 考察節點n是否爲目標節點,若是,則得到問題的解,成功退出
  5. 若節點n不可擴展,則轉第二步
  6. 擴展節點n,將其子節點放入Open表的尾部,並未每一個子節點設置指向父節點的指針,然後轉到第二步。

image

總結

廣度優先搜索是一種完備策略,即只要問題有解,算法就一定可以找到解。並且,廣度優先算法找到的解還一定是路徑最短的解

缺點是盲目性較大,特別是當目標節點與初始節點距離較遠時,將產生許多無用的節點,效率較低。

深度優先算法

算法步驟基本與廣度優先算法相同,只是Open表中的排序不同,在深度優先算法中,後進入Open表的節點總是排在最前面。即後生成的節點先擴展。

總結

深度優先算法是一種非完備策略,即某些本身有解的問題,該算法可能找不到最優解,甚至找不到解。常見做法是增加一個深度限制,當達到一定深度時,停止深度搜索,轉向寬度搜索。這種算法也叫有界深度優先算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章