1. 隨機演算法的介紹
1.1 隨機演算法基本概念
隨機演算法是一種使用概率和統計方法在其執行過程中對於下一計算步驟作出隨機選擇的演算法。隨機演算法具有一定的優越性:對於有些問題 ,演算法簡單;對於有些問題,時間複雜性低;對於有些問題,同時兼有簡單和時間複雜性低。隨機演算法具有隨機性:對於同一例項的多次執行,效果可能完全不同;時間複雜性是乙個隨機變數;解的正確性和準確性也是隨機的。常見的隨機演算法分為隨機數值演算法、monte carlo演算法、las vegas演算法、sherwood演算法。
1.2 隨機演算法的效能分析
隨機演算法分析的特徵:僅依賴於隨機選擇,不依賴於輸入的分布;確定演算法的平均複雜性分析依賴於輸入的分布;對於每個入都要考慮演算法的概率統計效能。
隨機演算法分析的目標:平均時間複雜性是時間複雜性隨機變數的均值;獲得正確解的概率;獲得優化解的概率;解的精確度估計。
2. 隨機數值演算法
2.1 計算π
設有乙個半徑為r的圓,其外切四邊形的邊長則為2r。利用面積之比p,可得π = 4*p。因此若想求得π值,只需要利用隨機演算法求出這個比率p即可。演算法步驟如下:
k = 0
for i = 1 to n:
產生乙個點(x,y)使其落在四邊形內;
如果(x,y)也落在圓內,k = k + 1;
return (4k) / n;
該演算法的時間複雜性為o(n), 解的精確度隨著樣本大小n增加而增加。
2.2 計算定積分
演算法步驟如下:
i = 0
for i = 1 to n :
產生(a,b)上一點x
i = i + g(x)
endfor
return i * (b - a) / n
該演算法的時間複雜性為o(n),其中n為樣本的大小;解的精度隨著樣本大小n的增加而增加。
演算法導論 隨機演算法
一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...
隨機演算法 概率演算法
div出現在頁面的隨機位置var sheight jquery document.body outerheight true 100 var swidth jquery document.body outerwidth true 100 var div top getrandomnum 0,shei...
隨機洗牌演算法
問題 給定乙個有序序列1 n,要你將其完全打亂,要求每個元素在任何乙個位置出現的概率均為1 n。解決方案 依次遍歷陣列,對第n個元素,以1 n的概率與前n個元素中的某個元素互換位置,最後生成的序列即滿足要求,1 n的概率可通過rand n實現。見如下程式 void swap int p,int q ...