蠻力法是指採用遍歷(掃瞄)技術,即採用一定的策略將待求解問題的所有元素依次處理一次,從而找出問題的解。依次處理所有元素是蠻力法的關鍵,為了避免陷入重複試探,應保證處理過的元素不再被處理。
1、蠻力法(列舉法、窮舉法、暴力法)要求設計者找出所有可能的情況,然後選擇其中一種情況,若該情況不可行(或不是最優解)則試探下一種可能的情況。
2、蠻力法是一種直接解決問題的方法,常常直接基於問
題的描述和所設計的概念定義。
3、力」一指計算機的能力,而不是人的智力。
4、蠻力法常常是最容易應用的方法。
5、蠻力法不是乙個最好的演算法(巧妙和高效的演算法很少出自蠻力) ,但當我們想不出更好的辦法時,它也是一種有效的解決問題的方法。
6、它可能是惟一一種幾乎什麼問題都能解決的一般性方法,常用於一些非常基本、但又十分重要的演算法。
優點
1、邏輯清晰,編寫程式簡潔
2、對於一些重要的問題(比如:排序、查詢、矩陣乘法和字串匹配),可以產生一些合理的演算法
3、解決問題的例項很少時,可以花費較少的代價
4、可以解決一些小規模的問題(使用優化的演算法沒有必要,而且某些優化演算法本身較複雜)
5、可以作為其他高效演算法的衡量標準
缺點
用蠻力法設計的演算法其時間效能往往也是最低的, 典型的指數時間演算法一般都是通過蠻力搜尋而得到的
1、搜尋所有的解空間
2、搜尋所有的路徑
3、直接計算
4、模擬和**
用蠻力法解決問題,通常可以從兩個方面進行演算法設計:
1、找出列舉範圍:分析問題所涉及的各種情況。
2、找出約束條件:分析問題的解需要滿足的條件,並用邏輯表示式表示。
1、百元百雞問題
2、bf演算法
3、kmp演算法
4、排序(選擇排序)
5、0/1揹包問題
6、tsp-圖問題
7、最近對問題
知識點總結
1、蠻力法的設計思想:採用一定的策略將待求解問題的所有元素依次處理一次, 從而找出問題的解。
2、求解步驟:
(1)、找出列舉範圍
(2)、找出約束條件
結語
演算法設計與分析學習 蠻力法
參考 演算法設計與分析 第三章 蠻力法 接下來的每章中,我們專注於一種特定的演算法設計策略。蠻力法是一種最簡單和直接的解決問題的辦法,往往是低效的,但我們不應該忽略它的地位,1 它可以解決廣闊領域的各種問題 2 在規模允許時,多少可以產生一些實用的演算法 3 往往可以以蠻力法為準繩,來衡量高效的演算...
演算法設計之蠻力法
1.蠻力法 也叫窮舉法 是一種直接解決問題的方法,常常直接基於問題的描述和所涉及的概念及定義。2.蠻力法優點 邏輯清晰,相對於高效的 巧妙的演算法,實現和構思簡單。同時蠻力法也是很多高效演算法的基礎。可以作為其他高效演算法的衡量標準。對於一些重要的問題,它可以產生一些合理的演算法。可以解決一些小規模...
演算法分析與設計 蠻力法0 1揹包
蠻力法是一種簡單直接解決問題的方法,常常直接基於問題的描述,所以蠻力法也是最容易應用的方法。蠻力法所依賴 的基本技術是遍歷,即採用一定的策略依次處理待求解問題的所有元素,從而找出問題的解。由於其需要依次窮舉待處理的元素,因此蠻力法是一種典型的指數級時間演算法。給定n個重量為 價值為的物品和乙個容量為...