概率分析和隨機演算法文件
本章由雇用問題引出隨機演算法。一家公司要雇用乙個新的辦公經理,於是要找乙個雇用**來推薦面試者,由我面試他,然後決定是否雇用。花費主要有:要付一小部分錢給這個雇用**,讓其繼續尋找新的辦公經理‚若是產生了新的辦公經理,就要辭退原有的經理,此時要付一大筆錢給雇用**。
hire-assistant
偽**如下:
best=0;
for i=0 to n
interview candidate i
if candidate i is betterthan the candidate best
best=i
hire candidate i
下面進行費用分析:
假設面試的費用為w1(此費用比較低),雇用的費用為w2(此費用比較高)。設m是雇用的人數,則:總費用是o(w1*n+w2*m),其中,w1*n的費用是必須要出的,所以,當w2*m的值最小的時候,公司損失的就越少。
最壞出現是雇用了n次,就是每次面試乙個新的辦公經理,總是比上乙個優秀。費用為o(w2*n),由於真正進行雇用的時候,無法判斷哪個比較優秀,因此採用類似於產生隨機數的方式,進行模擬,得到的此時演算法hire-assistant的費用為o(w2*ln n)顯然比最差情況要好的多。因此:當我們能使得情況足夠的隨機,就像產生隨機數一樣的安排辦公經理的見面順序,我們就最有可能得到o(w2*ln n)類似的費用,最為有利。
我們可以得到:只要將佇列變得足夠的隨機,就可以實現費用的足夠小,因此,只需要在原來的hire-assistant演算法的開始第一句話的地方稍微改變即可。
得到:(即為隨機演算法,費用的期望是o(w2*ln n),已經實現了較大的優化)
新的hire-assistant偽**如下:
randomly permute the list of candidates //
隨機的進行排列
best=0;
for i=0 to n
interview candidate i
if candidate i is betterthan the candidate best
best=i
hire candidate i
演算法導論 第5章 概率分析和隨機演算法
考慮乙個僱傭助理的問題,對於每乙個出現的應聘者,若該應聘者比之前所有應聘者都好,則僱傭該應聘者。初始化時建立乙個虛擬的應聘者編號0,他比其他所有應聘者都差,則過程如下 該問題的費用模型並不關注執行時間,而是面試和僱傭產生的費用。面試費用較低為ci,僱傭費用較高為ch,則若m是僱傭人數,總費用為o c...
概率分析和隨機演算法
一 隨機分析 考慮乙個僱傭問題,面試n個人,在面試的過程中,只要更為優秀的人出現,就僱傭更為優秀的人,但是更換人選需要花費一筆費用c,現在估算這筆費用。這個問題相當於維護乙個當前的 獲勝者 最壞的情形當然是替換n次,那麼費用就會是cn.隨機的情況 第i個人比前i 1個人更為優秀的概率為1 i,那麼期...
演算法導論 第五章 概率分析和隨機演算法
5.1 僱傭問題 僱傭問題類似於在一組隨機排序的陣列中查詢最大值的問題,對於這類問題無法確切的得出其執行效率。但可以根據輸入的概率分布得到平均情況執行時間。對於乙個演算法行為不僅由輸入決定,而且由隨機數生成器產生的數值決定,則稱演算法是隨機的,其執行時間稱為期望執行時間。5.2指示器隨機變數 由指示...