算法設計之概率算法
- 1.爲什麼需要概率算法?
與確定性算法相比,若冒險,可能做得更好!
- 概率算法的分類?
- 數字算法。
求數字問題的近似解求數字問題的近似解 - Monte Carlo算法 (MC算法)
這裏我們指的MC算法是: 若問題只有1個正確的解,而無近似解的可能時使用MC算法。
特點:MC算法總是給出一個答案,但該答案未必正確,成功(即答案是正確的)的概率正比於算法執行的時間。
缺點:一般不能有效地確定算法的答案是否正確。
常見的場景:素數測定
所以MC算法的基本思想是:爲了增加一個一致的、p-正確算法成功的概率,只需多次調用同一算法,然後選擇出現次數最多的解。
3. Las Vegas(LV)
LV算法絕不返回錯誤的答案。
特點:獲得的答案必定正確,但有時它仍根本就找不到答案。
與MC算法一樣,成功的概率正比於算法的執行時間。
常見問題:N皇后問題。
4.Sherwood算法
當某些確定算法解決一個特殊問題平均的時間比最壞時間快得多時,我們可以使用Sherwood算法來減少,甚至是消除好的和壞的實例之間的差別。
常見的場景: 離散對數計算,搜索有序表
將輸入實例隨機化,從概率上消除實例的差異:
可將隨機預處理使用到f的計算上:
① 使用函數u將x加密爲某一隨機實例y
② 將y提交給f計算出f(y)的值
③ 使用函數v轉換爲f(x)