第 5 章 概率分析和隨機算法

  本章介紹概率分析隨機算法.

5.1 僱用問題

概率分析
  概率分析是在問題分析中應用概率的概念。大多數情況下,我們採用概率分析來分析一個算法的運行時間,有時也用來分析其他的量。我們對所有可能輸入產生的運行時間取平均。當報告此種類型的運行時間時,我們稱其爲平均情況運行時間
  我們在確定輸入分佈時必須非常小心。對於某些問題,我們可以對所有可能的輸入集合做某種假定,然後採用概率分析來設計一個高效算法,並加深對問題的認識。對於其他一些問題,我們不能描述一個合理的輸入分佈,此時就不能採用概率分析。
  隨機算法
  爲了利概率分析,我們需要了解關於輸入分佈的一些信息。我們通過使一個算法中的某部分的行爲隨機化,常可以利用概率和隨機性作爲算法設計和分析的工具。
  更一般地,如果一個算法的行爲不僅由輸入決定,而且也有隨機數生成器產生的數值決定,則稱這個算法是隨機的。我們將假設一個可以自由使用的隨機數生成器RANDOM。調用RANDOM(a,b)將返回一個介於a和b之間的整數,並且每個整數以等概率出現。
  當分析一個隨機算法的運行時間時,我們以運行時間的期望值衡量,其中輸入值由隨機數生成器產生。我們將一個隨機算法的運行時間稱爲期望運行時間,以此來區分這類算法和那些輸入是隨機的算法。一般而言,當概率分佈是在算法的輸入上時,我麼討論的是平均情況運行時間;當算法本身做出隨機選擇時,我們討論期望運行時間。

5.2 指示器隨機變量

  爲了分析僱用問題在內的許多算法,我們採用指示器隨機變量。它爲概率與期望之前的轉換提供了一個便利的方法。給定一個樣本空間S和一個事件A,那麼事件A對應的**指示器隨機變量**I{A}定義爲:
  

I{A}={1,0,AA
  
一個事件A對應的指示器隨機變量的期望值等於事件A發生的概率。
引理 5.1 給定一個樣本空間S和S中的一個時間A,設XA=I{A} ,那麼E[XA]=Pr{A}
用指示器隨機變量分析僱用問題
引理 5.2 假設應聘者以隨機次序出現,算法HIRE-ASSISTANT總的僱用費用平均情況下爲O(Chlnn)

5.3 隨機算法

我們讓隨機發生在算法上,而不是在輸入分佈上。對於有該算法及許多其他的隨機算法,沒有特別的輸入會引出它的最壞情況
引理 5.3 過程 RANDOMIZED-HIRE-ASSISTANT的僱用費用期望是O(chlnn) .
隨機排列數組
很對算法通過對給定的輸入變換排列以使輸入隨機化。這裏我們討論兩種隨機化方法。假定給定一個數組A,包含元素1 到n。我們的目標是構造這個數組的一個隨機排列。
  一個通常的做法是爲數組的每個元素A[i]賦一個隨機的優先級P[i],然後依據優先級對數組A中的元素進行排序。我們成這個過程爲PERMUTE-BY-SORTING
  

n = A.length
let P[1..n] be a new array
for i = 1 to n
    P[i] = RANDOM(1,n^3)
sort A,using P as sort keys

引理 5.4假設所有優先級都不同,則過程PERMUTE-BY-SORTING產生輸入的均勻隨機排列。
  產生隨機排列的一個更好方法是原址排列給定數組。過程RANDOMIZE-IN-PLACE在O(n)時間內完成。

n = A.length
for i = 1 to n
    swap A[i] with A[RANDOM(i,n)]

引理 5.5 過程RANDOMIZE-IN-PLACE可計算出一個均勻隨機排列

5.4 概率分析和指示器隨機變量的進一步使用

5.4.1 生日悖論

5.4.2 球與箱子

5.4.3 特徵序列

5.4.4 在線僱用問題

發佈了50 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章