1. 程式人生 > >演算法知識點整理——第7章 隨機化演算法

演算法知識點整理——第7章 隨機化演算法

第7章 隨機化演算法
概率演算法只能實期望的結果更有效,它可能遭到最壞的可能性。
概率化演算法兩次執行的結果可能不一樣。




1.主要型別:
數值概率演算法、蒙特卡羅演算法、拉斯維加斯演算法、舍伍德演算法


2.數值概率演算法
隨機投點計算pi值
定積分
解非線性方程組


得到的結果不夠精確,但是可以在一個接受範圍內。


3.舍伍德演算法(確定性演算法,不一定能得到解,但是得到的解總是正確的)
想辦法破壞最壞情況出現的概率(還是會出現),以提高演算法的效率。
當最壞情況與平均情況有著較大的差異時,引入舍伍德演算法

資料洗牌 + 確定演算法

線性時間選擇演算法(選擇第 k 小元素)
搜尋有序表(先隨機再順序)
跳躍表(在連結串列中增加向前跳躍的指標):
有序表改造為跳躍表,可以提高減少的效率


快排中隨機選擇基準,而不是一直選擇第一個作為基準。


4.蒙特卡羅演算法(概率演算法,每次都能得到解,但是不一定正確)
得到的是一個確定解,但是不一定正確(常把數值隨機化演算法歸類到這)
正確解的概率依賴於演算法的計算時間

主元素(隨機產生選一個數,然後判斷是不是主元素)
素數測試(Wilson定理、費爾馬小定理、二次探測定理)


5.拉斯維加斯演算法(確定演算法,不一定能得到解,但是得到的解都是正確的)
賭徒的心態,反覆押籌碼不會虧
給出的答案總是正確的(不會得到不正確的解,但是有時找不到),期望值有界

常把舍伍德演算法演算法歸類於此。

N後問題
整數因子分解


6.三種演算法的比較
 
7.隨機 VS 隨意
隨機不等於隨意,隨機是概率確定的多種的選擇
隨意是概率不確定的的多種選擇