晶元測試問題 zz

2021-05-22 11:32:10 字數 1339 閱讀 9482

題目:

(30分)

晶元測試:有2k塊晶元,已知好晶元比壞晶元多.請設計演算法從其中找出一片

好晶元,說明你所用的比較次數上限.

其中:好晶元和其它晶元比較時,能正確給出另一塊晶元是好還是壞.

壞晶元和其它晶元比較時,會隨機的給出好或是壞。

題目分析:

不妨設用晶元比較時,0表示好的判斷,1表示壞的判斷,x表示不確定的判斷。

兩個晶元進行比較時,可能出現三種情況:

a) 兩個都好 ==> (0,0)

b) 一好一壞 ==> (1,x)

c) 兩個都壞 ==> (x,x)

情況a為真,則其逆否命題也為真。知:

如果兩個晶元比較結果中出現1,則這兩個晶元中至少有乙個是壞的。 ……(一)

好晶元比壞晶元多。知:

將2k塊晶元平分為兩堆晶元,則這兩堆晶元中都至少含有乙個好的晶元。 ……(二)

根據(一)(二),可以設計如下演算法:

演算法輸入:2k塊晶元,其中好晶元比壞晶元多

演算法輸出:一片好晶元

演算法過程:

1) 將所有晶元平分為兩堆,記為a和b。

2) 如果a中只包含乙個晶元,則返回該晶元;否則從a中任取乙個晶元,記為t。

3) 將t與a中其他晶元依次進行比較,有兩種可能:

3.1) 一旦比較時結果中出現1,則將進行比較的兩片晶元排除出a,同時從b中任取乙個晶元加入a,轉至第2步;

3.2) 所有比較都得到結果(0,0),則返回晶元t。

演算法說明:

步驟2中,如果a中只包含乙個晶元,則b中也只包含乙個晶元,由於好晶元比壞晶元多,所以只可能這兩個晶元都是好晶元。

步驟3.1中,如果比較時結果中出現1,根據(一),這兩片晶元中至少有乙個是壞的,那麼將這兩片晶元排除出a後,a和b合起來依然滿足好晶元比壞晶元多的條件,對原問題的求解轉為對同結構子問題的求解。從b中任取乙個晶元加入a,可以實現再次平分。

步驟3.2中,比較都得到結果(0,0),則晶元t一定是好晶元。否則假設t是壞晶元,而根據(二),a中至少含有乙個好晶元,用該晶元與t比較時,得到的結果應為(1,x),與所有結果都為(0,0)矛盾。其實可以進一步證明,此時a中所有晶元都是好晶元。

演算法複雜度分析:

最壞的情況下,總是不進入步驟3.2,且每次步驟3.1中都是比較到最後一塊晶元才出現結果1,則此時需要比較的總次數為(k-1)+(k-2)+...+1 = k*(k-1)/2;因此該演算法時間複雜度為o(n^2),其中n為總的晶元個數。

壓力測試問題

環境 兩台虛機配置,千m網絡卡 a 8cpu,32g記憶體 應用伺服器 b 2cpu,8g記憶體 資料庫 壓力測試資料 200使用者,每秒響應160 170次左右,cpu占用10 左右,記憶體占用穩定,始終無法提公升,網路使用率4 資料庫伺服器,cpu 2 記憶體占用穩定 資料庫一切正常,伺服器cp...

RabbitMQ 測試問題

使用eventlet併發consumer指令碼 eventlet.monkey patch all true msg per queue 50 queue num 10 rabbit host 10.23.54.150 5672 class consumer def init self,count ...

Linux lftp測試問題

1.客戶端安裝lftp,伺服器端安裝vsftpd 2.伺服器端啟動vsftpd服務 etc init.d vsftpd start 3.測試連線 lftp命令使用方法見 如果出現 delaying before reconnect 表示沒有連線成功,一般是伺服器端的設定問題。檢查以下項 1 檢查登入...