5.1 僱傭問題
概率分析:在問題的分析中應用概率技術。
隨機演算法:如果乙個演算法的行為,不只由輸入決定,也由隨機數生成器決定,那麼稱這個演算法為隨機演算法。
1. 習題解答
5.1-1
如果可以知道任意兩個人的排名的大小,自然等價於得到了總排名。
5.1-2
解:這題等價於二進位制表示任意數,其中一次random相當於一位二進位制,其取值為0或1.
例如a=3,b=5;共3個數:3,4,5。等價於0,1,2.只需要2個random即可。00,01,10分別表示3,4,5。
分析其期望執行時間,理論上,n位數表示的是偶數個數,所以有可能多乙個數。故一次生成的概率為x=(b-a)/(b-a+1);根據引理5.2,ex=(b-a)/(b-a+1)(次);
再分析執行一次的時間複雜度。位數為w=
綜上所述:期望執行時間為ex*w=
附c語言下實現如下:
//ps:是不是很神奇~~~~。下一題更有趣。統計上概率地返回在low和high之間的數
#define random(x) (rand()%x)
int t5_1_2(int low,int
high)
while(1
)
if(low+count<=high)
}return low+count;
}測試**:
#include
#include
#include
#define random(x) (rand()%x)
intmain()
return0;
}
只要找到兩個等概率的取值就好了。例如(0,1)和(1,0)。他們的概率分別是p(1-p)和(1-p)p。我們如上題一樣捨去(0,0)和(1,1)即可。取值p
(1-p)(1-p)
(1-p)p
p(1-p)
pp為了複習一下概率,我把它當做概率題來做好了。
設x表示兩位random的值。
設y=1 當x==01或10;
y=0 當x==11 或00故取值
p2p(1-p)
pp+(1-p)(1-p)
計算其期望:
ex=2p(1-p).
再分析其單次執行時間為o(1);
所以其執行時間期望為ex=2p(1-p).
附c語言實現**:
//歡迎加入qq群181539446有偏輸出0或1
intbiasedrandom()
intt5_1_3( )
if(j1==1) return1;
else
return0;
}}測試**:
int j=0
;
int i0=0
;
int i1=0
;
for(; j<500; j++)
printf(
"i0=%d,i1=%d
",i0,i1);
return
0;
演算法導論 第5章 概率分析和隨機演算法
考慮乙個僱傭助理的問題,對於每乙個出現的應聘者,若該應聘者比之前所有應聘者都好,則僱傭該應聘者。初始化時建立乙個虛擬的應聘者編號0,他比其他所有應聘者都差,則過程如下 該問題的費用模型並不關注執行時間,而是面試和僱傭產生的費用。面試費用較低為ci,僱傭費用較高為ch,則若m是僱傭人數,總費用為o c...
《演算法導論》第5章 概率分析和隨機演算法 個人筆記
本章通過四個例子來理解概率分析和隨機演算法。問題 乙個屋子裡人數必須要達到多少人,才能使其中兩人生日相同的機會達到50 5.1.1 概率分析 至少有兩個人生日相同的概率 1 所有人生日都不相同的概率。bk i 1kai 其中ai 是指所有 ji 與 j生日不同的事件,則有bk ak bk 1 可得遞...
演算法導論 第五章 概率分析和隨機演算法
5.1 僱傭問題 僱傭問題類似於在一組隨機排序的陣列中查詢最大值的問題,對於這類問題無法確切的得出其執行效率。但可以根據輸入的概率分布得到平均情況執行時間。對於乙個演算法行為不僅由輸入決定,而且由隨機數生成器產生的數值決定,則稱演算法是隨機的,其執行時間稱為期望執行時間。5.2指示器隨機變數 由指示...