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

2021-08-14 09:27:15 字數 913 閱讀 4747

考慮乙個僱傭助理的問題,對於每乙個出現的應聘者,若該應聘者比之前所有應聘者都好,則僱傭該應聘者。

初始化時建立乙個虛擬的應聘者編號0,他比其他所有應聘者都差,則過程如下:

該問題的費用模型並不關注執行時間,而是面試和僱傭產生的費用。面試費用較低為ci,僱傭費用較高為ch,則若m是僱傭人數,總費用為o(cin+chm)。應聘人數總是為n,因此只關注chm。這個量在該演算法的每次執行中都不同。

對於最壞情況,應聘者質量按出現的次序嚴格遞增,此時僱傭了n次,總費用o(chn)。

可以使用概率分析的方法來分析這個演算法的執行時間。假設應聘者以隨機順序出現,以1到n表示應聘者的名次,則出現順序是數字1到n的n!種可能排列中等概率的隨機一種。

如果乙個演算法的行為不僅由輸入決定,也由隨機數生成器產生的數值決定,則稱這個演算法是隨機的。乙個隨機演算法的執行時間稱為期望執行時間

假設應聘者以隨機順序出現,x為僱傭新助理的次數,則:

我們使用指示器隨機變數來分析僱傭問題:

則: 因此總僱傭費用平均情形下為o(chlnn)。

許多時候,我們無法得知輸入分布的資訊,因而阻礙了評價情況分析。如對於僱傭問題,可能出現的最壞情況僱傭次數等於應聘人數,最好情況則只需僱傭1人。由此引入了隨機演算法,使得沒有特別的輸入會引出它的最壞情況行為:

其費用期望是o(chlnn)。

很多隨機演算法通過對給定的輸入變換排列以使輸入隨機化。一種方式是對每個元素賦乙個隨機優先順序,並依據優先順序排序:

該方法可以產生乙個均勻隨機排列,其中使用範圍1到n3是為了盡量避免重複。

另一種方法是原址排列給定陣列:

該方法也可以產生乙個均勻隨機排列。

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

5.1 僱傭問題 概率分析 在問題的分析中應用概率技術。隨機演算法 如果乙個演算法的行為,不只由輸入決定,也由隨機數生成器決定,那麼稱這個演算法為隨機演算法。1.習題解答 5.1 1 如果可以知道任意兩個人的排名的大小,自然等價於得到了總排名。5.1 2 解 這題等價於二進位制表示任意數,其中一次r...

《演算法導論》第5章 概率分析和隨機演算法 個人筆記

本章通過四個例子來理解概率分析和隨機演算法。問題 乙個屋子裡人數必須要達到多少人,才能使其中兩人生日相同的機會達到50 5.1.1 概率分析 至少有兩個人生日相同的概率 1 所有人生日都不相同的概率。bk i 1kai 其中ai 是指所有 ji 與 j生日不同的事件,則有bk ak bk 1 可得遞...

演算法導論 第五章 概率分析和隨機演算法

5.1 僱傭問題 僱傭問題類似於在一組隨機排序的陣列中查詢最大值的問題,對於這類問題無法確切的得出其執行效率。但可以根據輸入的概率分布得到平均情況執行時間。對於乙個演算法行為不僅由輸入決定,而且由隨機數生成器產生的數值決定,則稱演算法是隨機的,其執行時間稱為期望執行時間。5.2指示器隨機變數 由指示...