演算法導論 習題5 2 2

2021-06-05 21:56:52 字數 662 閱讀 1700

首先我們有三個觀察結論:

(1) 1號助理總是會被雇用;

(2) 最佳助理(即rank為n的助理)總是會被雇用;

(3) 最佳助理不可能是1號助理,因為那樣將只能剛好雇用一次。

在使hire-assistant剛好雇用兩次的序列中,一號助理必然有rank=i<=n-1,所有rank在[i+1..n-1]區間內的助理必然在rank為n的助理被面試之後被面試。

設ei表示1號助理被雇用的情況,則對於任意給定的i,有pr=1/n。

設j指向最佳助理在面試序列中的位置,讓f表示2、3、...、j-1號助理的rank比1號助理低的情況。假設ei成立,則當最佳助理在rank為i+1、i+2、...、n的n-i個助理之前被面試時f成立。於是,pr=1/(n-i)。

設a表示hire-assistant剛好雇用兩次的情況。於是我們有:

a=f∩(e1∪e2∪...∪en-1)

=(f∩e1)∪(f∩e2)∪...∪(f∩en-1)

pr=∑pr (i<-1 to n-1)

pr=prpr

=1/(n-i)*(1/n)

所以pr=∑1/(n-i)*(1/n) (i<-1 to n-1)

=1/n*∑1/(n-i) (i<-1 to n-1)

=1/n*(1/(n-1)+1/(n-2)+...+1/1)

演算法導論 習題 5 4 1

題 乙個房間裡必須要有多少人,才能讓某人和你生日相同的概率至少為1 2?必須要有多少人,才能讓至少兩個人生日為7月4日的概率大於1 2?解 1.假設一年有n 365 天,房間裡面有x人 不算自己 為求某人與自己生日相同,可求其反面,即房間裡面沒人跟自己生日相同,他們每個人生日可以在n天中選擇除去我生...

演算法導論 習題 6 5 8

題 請給出乙個時間為o nlgk 用來將k個已排序鍊錶合併為乙個排序鍊錶的演算法。此處n為所有輸入鍊錶中元素的總數。k個已排序鍊錶,假設每乙個鍊錶的第乙個元素為root i i 1,2,3.k 那麼可以為這k個元素root i 構造乙個最小堆heap min,其時間複雜度為o lgk 此時堆頂元素假...

演算法導論 習題2 1 4

有兩個各存放在陣列a和b中的n位二進位制整數,考慮它們的相加問題。兩個整數的和以二進位制形式存放在具有 n 1 個元素的陣列c中。請給出這個問題的形式化描述,並寫出偽 以下是我寫的c 如有錯誤請指出 include stdafx.h include include define n 20 using...