對於一個算法,它可能會出現最佳狀況好比O(n),也有可能出現最壞狀況O(n^2),但更多的多是出現通常狀況O(nlgn)。那麼是否採用這個算法取決於它的平均狀況,也就是它的指望值,這是一種機率分析手段。面試
下面就來具體介紹這種分析手段,前提假設您已經瞭解了離散數學的機率論的隨機變量和指望值的相關內容。算法
【離散數學中的指望值是針對總的狀況,一次的總的狀況加上兩次的總的狀況加上三次的總的狀況等;而算導裏的指示器是跟蹤每一次的狀況,而後分別相加。】spa
以一個僱用問題來講明:3d
假設你須要僱用一名新的辦公室助理。你先前的僱用嘗試都以失敗了結,因此你決定找一個僱用代理。僱用代理天天給你推薦一個應聘者。你會面試這我的,而後決定要不要僱用他。你必須付給僱用代理一小筆費用來面試應聘者。要真正地僱用一個應聘者則要花更多的錢,由於你必須辭掉目前的辦公室助理,還要付一大筆中介費用給僱用代理。你的諾言是在任什麼時候候,都要找到最佳人選來擔任這項職務。所以,你決定在面試完每一個應聘者後,若是這個應聘者比目前的辦公助理更有資格,你就會辭掉目前的辦公室助理,而後聘請這個新的應聘者。你願意爲這種策略而付出費用,但但願可以預測這種費用會是多少。代理
面試的費用較低,譬如說爲ci,而僱用的費用則較高,設爲ch。假設m是已僱用的人數。那麼這個算法的總費用就是O(nci+mch)。無論僱用多少人,咱們永遠會面試n個應聘者,因此面試的費用永遠是nci。所以,咱們只專一於分析mch,即僱用的費用上。這個量在算法的每次執行中都會改變。blog
最壞狀況分析事件
在最壞狀況下,咱們僱用了每一個面試的應聘者。當應聘者的資質逐漸遞增時,就會出現這種狀況,此時咱們僱用了n次,總的費用是O(nch)。數學
可是,較爲合理的預期是應聘者並不是老是以資質遞增的次序出現的。事實上,咱們既不能得知他們的出現次序,也不能控制這個次序。所以,一般咱們預期的是通常或平均狀況。變量
機率分析方法
機率分析是在問題的分析中應用機率技術。大多數狀況下,咱們使用機率分析來分析一個算法的運行時間。
指示器隨機變量
指示器隨機變量爲機率與指望之間的轉換提供了一個便利的方法。給定一個樣本空間S和事件A,那麼事件A對應的指示器隨機變量I{A}定義爲
舉一個簡單的例子,肯定在拋一枚均勻硬幣時正面朝上的指望次數。樣本空間爲S={H,T},定義一個隨機變量Y,取值H和T的機率各爲1/2。接下來定義指示器隨機變量XH,它對應於硬幣正面朝上的狀況即事件H。這個變量計算拋硬幣時正面朝上的次數,若是正面朝上則其值爲1,不然爲0。寫做:
在拋硬幣時正面朝上的指望次數,就是指示器變量XH的指望值:
所以拋一枚均勻的硬幣時,正面朝上的指望次數是1/2。如如下的引理所示,事件A對應的指示器隨機變量的指望值等於事件A發生的機率。
咱們令指示器隨機變量Xi 對應於第i 次拋硬幣時正面朝上的事件;令Yi 表示第i 次拋硬幣輸出結果的隨機變量,有Xi=I{Yi=H}。假設隨機變量X表示n次拋硬幣中出現正面的總次數,因而
咱們但願計算正面朝上的指望次數,因此咱們使用對上面的等式兩邊取指望,得
等式左邊是n個隨機變量總和的指望值。有引理5.1,容易計算出每一個隨機變量的指望值。根據反映了指望的線性性質的公式E[X+Y]=E[X]+E[Y],容易計算出總和的指望值:它等於n個隨機變量指望值的總和。指望的線性性質利用了指示器隨機變量做爲有力的分析技術;即便隨機變量之間存在依賴關係也成立。如今咱們能夠很容易地計算正面出現次數的指望值:
指示器隨機變量極大地簡化了計算過程。
利用指示器隨機變量分析僱用問題
此時,咱們但願計算僱用一個新的辦公助理的指望次數。爲了利用機率分析,假設應聘者以隨機的順序出現。令X做爲一個隨機變量,其值等於僱用一個新的辦公助理的次數。
爲了利用指示器隨機變量,咱們不是經過定義與僱用一個新的辦公助理的次數對應的變量來計算E[X],而是定義n個和每一個應聘者是否被僱用對應的變量。特別地,令Xi 對應於第i 個應聘者被僱用這個事件的指示器隨機變量。因此,
而且
由引理5.1,有
若是應聘者i 賽過從1到i-1的每個應聘者,則應聘者i 會被僱用。因爲已經假設應聘者以隨機的順序出現,因此前i 個應聘者也是以隨機的順序出現的。這些前i 個應聘者中的任何一個都等可能地是目前最有資格的。應聘者i 比從應聘者1到i-1更有資格的機率是1/i,所以也以1/i 的機率被僱用。由引理5.1,能夠得出結論
如今能夠計算E[X]了:
即便面試了n我的,平均起來看,實際上大約只僱用他們之中的lnn我的。