本地搜尋算法是一種利用計算機的高性能來有目的地窮舉問題解空間的部分或所有可能情況,從而求出問題的解的方法。這類算法包括枚舉算法、深度優先搜尋、廣度優先搜尋、A*算法、回溯算法、蒙特卡洛樹搜尋和散列函式等。這些算法通常在大規模實驗環境中通過降低搜尋規模、根據問題的約束條件進行剪枝和利用搜尋過程中的中間解來避免重複計算進行最佳化。
本地搜尋算法的實現類似於圖或樹的遍歷,通常有兩種不同的實現方法:深度優先搜尋(DFS)和廣度優先搜尋(BFS)。深度優先搜尋遵循的搜尋策略是儘可能「深」地搜尋樹,它的基本思想是先選擇某一種可能情況向前(子結點)探索,如果在探索過程中發現原來的選擇不符合要求,就回溯至父親結點重新選擇另一結點,繼續向前探索,直至求得最優解。廣度優先搜尋則是按照層次順序遍歷樹的節點,先訪問當前層的所有節點,然後再訪問下一層的所有節點,直到找到目標狀態。
此外,還有其他一些基本的搜尋算法,如順序查找和二分查找。順序查找是在無序或有序佇列中按順序比較每個元素,直到找到關鍵字為止,其時間複雜度為O(n)。二分查找則是在有序數組中查找元素,其基本原理是查找過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜尋過程結束;否則,就在數組大於或小於中間元素的那一半中查找,每一次比較都使搜尋範圍縮小一半,其時間複雜度為O(log n)。