算法設計之概率算法

算法設計之概率算法

  • 1.爲什麼需要概率算法?

與確定性算法相比,若冒險,可能做得更好!

  • 概率算法的分類?
  1. 數字算法。
    求數字問題的近似解求數字問題的近似解
  2. 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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章