演算法導論第5章 概率分析和隨機演算法(5 1)

2021-09-08 14:28:58 字數 1803 閱讀 1405

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語言下實現如下:

//

統計上概率地返回在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;

}

ps:是不是很神奇~~~~。下一題更有趣。

只要找到兩個等概率的取值就好了。例如(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語言實現**:

//

有偏輸出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;

歡迎加入qq群181539446

演算法導論 第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指示器隨機變數 由指示...