Beam Search(集束搜尋 束搜尋)

2021-08-02 12:57:17 字數 554 閱讀 1420

1.簡介

beam search(集束搜尋)是一種啟發式圖搜尋演算法,通常用在圖的解空間比較大的情況下,為了減少搜尋所占用的空間和時間,在每一步深度擴充套件的時候,剪掉一些質量比較差的結點,保留下一些質量較高的結點。這樣減少了空間消耗,並提高了時間效率,但缺點就是有可能存在潛在的最佳方案被丟棄,因此beam search演算法是不完全的,一般用於解空間較大的系統中。

2.流程

集束寬度可以是預先定好的,也可以是變動的,可以先按照乙個最小的集束寬度進行搜尋,如果沒有找到合適的解,再擴大集束寬度再找一遍。

ps. 個人認為集束搜尋方法其實提供了一種找最優解的思路,就是說在適當的情況下,可以剪掉一些可信度低的路徑,在實際使用中,可以每一層的集束寬度不一致,比如在初始的一些層次中多保留一些結果,在後邊就可以放心大膽的進行剪枝。當然也可以活學活用,可以結合深度優先演算法,通過回溯,可以找到最優解。

3.應用

beam search(集束搜尋)多用在一些大型系統中,比如機器翻譯系統,語音識別系統等,因為這些系統中的資料集可能非常大,而且結果也沒有唯一正確的解,系統用最快的方式找到最接近正確的解才是系統的目標。

集束搜尋(Beam Search)

beam search的一般步驟為 1 初始化beam size個序列,序列均為空,這些序列稱之為beam paths 2 取下乙個frame的前n個候選值 n一般為beam size或者更大,frame內部侯選值已按照概率倒序排列 與已存在的beam paths組合形成n beam size條路徑...

搜尋(深搜 廣搜)

我記得在遙遠的2017年,我會敲的搜尋也只有暴力列舉了。那個時候的我深搜剛會一丟丟,所以也只配切切水題,然而經常死迴圈re那是肯定的。如今的我因為在多次比賽中都死於搜尋,那就必須得認真磕一下了。其實是這樣的 我眼裡認為的暴力就真的只是暴力,暴力無非就兩種 列舉打表和模擬。然而在這麼多次比賽後,我總能...

迭代加深搜搜尋

對於可以用回溯法求解但解答樹的深度沒有明顯上限的題目,可以考慮使用迭代加深搜尋。經典問題 埃及分數問題 給出乙個分數,比如19 45,把它寫成若干個形如1 ri的分數的和的形式,比如19 45 1 5 1 6 1 18,要求分母不能重複使用並且使用的分數的個數最少。如果有多組個數相同的解,最後的分數...