39.下列何者不屬於人工智慧演算法中的盲目搜尋範疇?
(A)循序搜尋
(B)深度優先搜尋
(C)廣度優先搜尋
(D)一致代價搜尋
統計: A(4745), B(476), C(144), D(1930), E(0) #3226821
詳解 (共 8 筆)
廣度優先搜尋使用隊列數據結構來記錄待擴展節點,並確保先擴展完當前層的節點才能擴展下一層的節點。由於廣度優先搜尋考慮了所有可能的擴展方式,所以它保證找到的解是最優解。
廣度優先搜尋的缺點是它在空間效率上比較低,因為它需記錄整個搜索空間。當搜索空間很大時,它可能需要大量的內存。
深度優先搜尋是一種無知搜尋策略,它通過遞迴的方式進行搜索。當搜索到達一個節點時,它將繼續擴展該節點的子節點,直到到達目標節點或無法擴展為止。深度優先搜尋使用堆疊數據結構來記錄待擴展節點,並使用回溯來跟蹤搜索的過程。
深度優先搜尋的優點是它在空間效率上比較高,因為它只需記錄一條路徑,而不是整個搜索空間。然而,它可能會陷入無限迴圈,而且不保證找到最優解。
廣度優先搜尋(BFS)
廣度優先搜尋的概念是:選擇一個點做完起點,拜訪起點附近的下一個點,走訪過的元素做標記,直到節點元素全被拜訪過,就會再往下一層直到全部的節點被拜訪過為止。
假設起始點為 0,且每一節點由左至右的順序來搜尋下個節點,則結果為: 0,1,2,3,4,5,6
深度優先搜尋(DFS)
深度優先搜尋的概念是:隨意選擇一個方向,並盡可能往這個方向的深度搜尋下去,走訪過的元素做標記,直到遇到死路或者該元素已被拜訪過,就會換另外一條路,直到全部的節點被拜訪過為止。
假設起始點為 0,且每一節點由左至右的順序來搜尋下個節點,則結果為: 0,1,3,4,2,5,6
BFS 與 DFS 比較
從搜尋的角度來看,我們可以知道 BFS 和 DFS 兩者的搜尋策略幾乎完全一樣,差別只在選擇節點時的策略時的不同。
DFS 的問題
深度優先搜尋是個盲目的搜尋,雖說DFS 在理論上所使用的記憶體大小雖然比 BFS 要小,但是根據定義我們會先不斷往下進行搜尋,直到搜尋到底部後,發現沒有找到要的結果才會開始找新的節點,有著「一失足成千古恨」的問題所在,所以 必須針對這個問題進行解決。
DFS + 限制搜尋的層數 = DLS
深度限制搜索(Depth-Limited Search, DLS)是深度優先搜索的變體,它設置了搜索深度的限制。這種方法透過將超過特定深度的節點視為無後繼節點來解決DFS可能遇到的無限路徑問題。當搜索未在限定深度內找到解時,會回傳截斷失敗值(Cutoff Failure Value),如果問題無解則回傳標準失敗值(Standard Failure Value)。DLS 在記憶體使用上效率高,但如果目標狀態位於深度限制之外,則不一定是最佳或完整的。
DFS + 迭代深度搜尋 = IDDFS
迭代加深深度優先搜索(Iterative Deepening Depth First Search, IDDFS)結合了BFS的完整性和最佳性與DFS的空間效率。它透過迭代地增加搜索深度進行搜索,雖然這種方法在每次迭代中重複了之前的工作,但它保證了在統一步驟成本下的完整性和最佳性。
補充說明 :
人工智慧盲目搜尋(不需要重新安排OPEN表的搜索叫做無信息搜索或盲目搜索,它包括廣度優先搜尋、深度優先搜尋和一致成本搜尋等,盲目搜尋只適用於求解比較簡單的問題。)
三大搜尋法則:
深度優先搜尋(DFS):先深入探索一條路徑到底,再回溯。 廣度優先搜尋(BFS):逐層擴充,確保找到最短解。 一致代價搜尋(UCS):擴充成本最低的節點,雖然使用成本資訊,但仍屬於盲目搜尋的一種變體。
為何循序搜尋不屬於盲目搜尋? 主要用於線性資料結構(如陣列、列表),逐個比對找到目標值。 不涉及樹或圖形結構,也不會進行狀態空間擴充,因此不屬於 人工智慧(AI)中的盲目搜尋範疇。