AI 的搜尋路徑

基本款的演算法介紹

Image Powered by DALLE

本文想要討論人工智慧的搜尋部分,簡單介紹人工智慧的若干知識。本篇不討論程式實作,僅講述概念。

ALL start from Searching Solution

我們希望機器幫我們找到答案,所以建立一個問題即之後,我們必須藉由搜尋一些資料幫助我們找到答案。

廣度優先搜尋(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的空間效率。它透過迭代地增加搜索深度進行搜索,雖然這種方法在每次迭代中重複了之前的工作,但它保證了在統一步驟成本下的完整性和最佳性。

What’s next

這個文章間單介紹幾個搜尋,下個篇幅預計來介紹其他的搜尋演算法。

--

--

(KJH) Kuan-Jung, Huang
(KJH) Kuan-Jung, Huang

Written by (KJH) Kuan-Jung, Huang

CTO at Metablox.co, Founder of AI Users Community in Taiwan

No responses yet