概率算法:
1. 隨機數。
應用: 拋硬幣,統計頻率。
2. 數值概率算法。
應用: 隨機投點,計算π值。
隨機投點,計算定積分。
平均值法,計算定積分。
解非線性方程組。
常用於 數值問題的求解。 往往求的是 近似解 。近似解的精度隨計算時間的增加而不斷提高。
3.舍伍德算法:
排序算法中,樞軸元素,選用擬中位數 可以保證 最壞情況下用線性時間 完成麼
採用劃分數組第一個元素作爲劃分基準的話,最壞情況下需要要O(n^2) , 平均較好。。。。
舍伍德選擇算法則隨機地選擇一個數組元素作爲劃分基準,這樣既保證算法的線性時間平均性能,又避免了計算擬中位數的麻煩。
例子詳見:
http://blog.csdn.net/liufeng_king/article/details/9038771
另,如果事先把要排序的元素打亂,就不需要 舍伍德 了。
就是 所謂的 隨機洗牌。 可看下面的代碼:
隨機洗牌算法: http://blog.chinaunix.net/uid-20775243-id-2555001.html
另, 0045算法筆記——【隨機化算法】舍伍德隨機化思想搜索有序表
舍伍德改進快速排序 http://www.2cto.com/kf/201305/212296.html
舍伍德算法總能求得問題的一個解,且所求得的解總是正確的。
當一個算法的最壞複雜度 與 平均複雜度 相差較大時,可在 其中 引入 隨機性,將其改造成一個 舍伍德算法, 用以消除 好壞實例間的差別。
4.拉斯維加斯算法。
該算法不會得到不正確的解。 but' 它 可能找不到解。
應用 :n後 問題
之前回溯法是 系統性的搜索棋盤,找一個合適的位置。
採用拉斯維加斯算法,可以給每個皇后 隨機性的選擇一個位置,然後,判斷這個皇后可否放在此(剪枝?)
此方法,一旦發現一個皇后無法正確放置,就要重新開始。
改進: 選取 m 個皇后 隨機放置, 後面的 利用 回溯法 找合適位置。 其中,m越大,後面回溯所需時間越小,失敗概率越大。
5. 蒙特卡羅算法。
用於求解問題的【準確解】。 但 無法 有效 判斷 該解 是否肯定正確。
這個寫的不錯 http://hi.baidu.com/yangkunarsenal/item/d52895f5d599a70984d27887
在圍棋中的應用 http://blog.csdn.net/lanphaday/article/details/2387034
http://blog.tianya.cn/blogger/post_show.asp?BlogID=1992967&PostID=17179181
艾瑪 好多 好複雜的樣紙 先放鏈接 改天在看