我們將學習兩類主要的搜尋過程。其中之一,我們沒有指定問題的任何推理資訊,例如要搜尋這一部分而不是另一部分,就像到目前為止的只要發現一條到目標的路徑即可。這種搜尋是盲目的。另一種,我們指定了要解決問題的資訊以幫助集中搜尋。這個過程叫啟發式搜尋。本章討論盲目搜尋,下一章再討論啟發式搜尋過程。
很多實際問題的搜尋空間是非常大的,以至於他們不能通過顯示圖來表示。這裡我們關心下面幾個問題:
除了agent堆積木問題外,數碼問題也常被用來演示如何在狀態空間中生成動作序列。考慮到多樣化,在本章和下一章用到這個問題。乙個典型的例子是8數碼問題,在乙個3*3的方陣中有8個數碼。假定該問題的目標是把數碼從初始狀態移動到目標狀態,如下圖所示。
一般來講,我們在構造乙個問題的狀態空間時我們有一些代表性的選擇。在8數碼問題中,我們可以想象有8*4個不同的移動,分別是:1上移,1下移,1左移,1右移,2上移,2下移,2左移,2右移……,等等。乙個更精煉的公式只有4個移動,即:空格上移,空格下移,空格左移,空格右移。乙個給定的開始狀態和一組可能的移動隱式的定義了從開始狀態可到達的的乙個狀態圖。在8數碼問題表示的狀態空間中節點數是9!=362880個。
從理論上來講,可以把乙個圖的隱式表示轉換成顯示表示,為此可以產生開始節點的所有後繼節點(通過那個節點應用所有運算元),然後在省城所有後繼節點的所有後繼節點,等等。
有三個基本部分參與表示隱式狀態空間圖:
最簡單的盲目搜尋過程就是廣度優先搜尋(breadth-first search)。該過程把所有的運算元應用到開始節點以產生乙個顯示的狀態空間圖,再把所有可能的運算元應用到開始節點的所有直接後繼,再到後繼的後繼,等等。
搜尋過程一律從開始節點向外擴充套件。把所有可能的運算元稱為後繼函式。當把後繼函式應用到乙個節點時,產生乙個節點集。乙個後繼函式的每一次應用稱為節點的擴充套件。
上圖顯示了8數碼問題經廣度優先搜尋所產生的節點集。標出開始和目標節點,在擴充套件乙個節點時,按空格左上右下的順序應用運算元。儘管每個移動都是可逆的,但刪去了從後繼到雙親的弧。如我們所看到的,廣度優先搜尋的的特徵是:當發現目標節點時,我們已經找到了到達目標的一條最短路徑,然而它的乙個缺點是要求產生和儲存乙個大小是最淺目標節點深度的指數的數。
深度優先搜尋一次對節點應用乙個運算元以產生該節點的乙個後繼。每個節點都留下乙個標記,用來指示如果需要時所必需的的附加運算元。對每乙個節點,必須有乙個決策來決定哪個運算元先用,哪個次之等等。只要乙個後繼產生,它的下乙個後繼就會被生成,一直傳下去,等等。為了防止從開始節點的搜尋過程深度太深,需要乙個深度約束(depth bound)。超過這個深度約束時不再產生後繼(假定沒有任何目標節點超過這個約束深度)。這種限制允許我們忽略搜尋圖的一部分,這些部分已經確定不能高效的到達目標節點。
深度優先演算法使我們只儲存搜尋樹的一部分,它由當前正在搜尋的路徑和指示該路徑上還沒有完全展開的節點標誌構成。因此,深度優先搜尋的儲存器要求是深度約束的線性函式。深度優先搜尋的乙個缺點是當發現目標時,我們不能保證找到的路徑是最短路徑。另乙個缺點是如果只有乙個很淺的目標,且該目標位於搜尋過程的後部時,也必須瀏覽大部分搜尋空間。
一種叫做迭代加深的技術既能滿足深度優先搜尋的線性儲存要求,同時又能保證發現乙個最小深度的目標節點。在迭代加深方法中,連續的深度優先搜尋被引入,每乙個深度約束逐次加1,知道乙個目標節點被發現。下圖說明迭代加深是如何在乙個簡單樹上工作的。
由迭代加深搜尋擴充套件產生的節點數並不比廣度優先搜尋產生的多很多。我們可以計算乙個有相同分支的數在最壞情況下產生的節點數,這個樹的最淺目標在深度d處,並且是該深度最後乙個生產的節點。有廣度優先搜尋擴充套件產生的節點數是:
人工智慧 狀態空間的盲目搜尋
1 先把問題的初始狀態作為當前擴充套件結點對其進行擴充套件,生成一組子結點 2 然後檢查問題的目標狀態是否出現在這些子結點中。若出現,則搜尋成功,找到了問題的解 若沒出現,則再按照某種搜尋策略從已生成的子結點中選擇乙個結點作為當前擴充套件結點。3 重複上述過程,直到目標狀態出現在子結點中或者沒有可供...
人工智慧 搜尋概述
人工智慧所研究的物件大多是屬於結構不良或非結構化的問題。對於這些問題,一般很難獲得其全部資訊,更沒有現成的演算法可供求解使用。因此,只能依靠經驗,利用已有知識逐步摸索求解。這種根據問題的實際情況,不斷尋求可用知識,從而構建一條代價最小的推理路線,使問題得以解決的過程稱為搜尋。根據搜尋過程中是否使用啟...
人工智慧 搜尋的含義
依靠經驗,利用已有知識,根據問題的實際情況,不斷尋找可利用知識,從而構造一條代價最小的推理路線,使問題得以解決的過程稱為搜尋 不良結構或非結構化問題 難以獲得求解所需的全部資訊 更沒有現成的演算法可供求解使用。1 按是否使用啟發式資訊 盲目搜尋 按預定的控制策略進行搜尋,在搜尋過程中獲得的中間資訊並...