說明:第一行:
假設 a 是好的,那麼 b 是好的,則 a,b 都是好的。
假設 a 是壞的,那麼 b 的報告結果不正確,那麼 b 就也是壞的,則 a,b 都是壞的。
第二行:
假設 a 是好的,那麼 b 的報告結果不正確,那麼 b 就也是壞的,此時一好一壞。
假設 a 是壞的,b 的結果顯示 a 是壞的,但是不確定 b 是否壞,有可能壞,有可能好,也就是一好一壞或者兩個都壞。
綜上所述:至少一片是壞的。
第三行分析過程同第二行。
第四行:
假設 a 是好的,那麼 b 一定是壞的,b 的報告結果就無分析意義,此時一好一壞。
假設 a 是壞的,那麼 b 不確定好壞。
綜上所述:至少一片是壞的。
說明:n = 7時,
(注意:好晶元至少有4個)
假設 a 是好的,那麼剩餘的 6 個晶元中好晶元至少有 3 個,也就是 6 個報告至少 3 個報 「好」。
假設 a 是壞的,那麼剩餘的 6 個晶元中好晶元至少有 4 個,也就是 6 個報告至少 4 個報 「壞」。
說明:n = 8時,
(注意:好晶元至少有5個)
假設 a 是好的,那麼剩餘的 7 個晶元中好晶元至少有 4 個,也就是 7 個報告至少 4 個報 「好」。
假設 a 是壞的,那麼剩餘的 7 個晶元中好晶元至少有 5 個,也就是 7 個報告至少 5 個報 「壞」。
說明:1.淘汰規則分析:
由上面測試結果分析,除了 「好,好 」的情況是好壞佔概率二分之一,其他情況都是壞的概率比較大,所以當一組兩個晶元顯示 「好,好」,就選擇留乙個晶元,扔乙個晶元。其他情況將兩個晶元都扔掉。
2.遞迴截止條件分析:
當 n <= 3 時,到遞迴結束的條件,
3 片晶元,1 次測試就可以得到好晶元:
在下面可證明分治演算法是正確的,也就滿足子問題的性質和原問題的性質相同,即子問題中好晶元至少比壞晶元多乙個。
3個晶元,那麼至少有兩個好晶元。
假設測試一次顯示結果為 「好,好」,那麼兩個都是好的,可以任取一片,結束。
假設測試一次顯示結果為其他,那麼扔掉這兩個,選擇剩餘那乙個,剩餘那乙個肯定是好的,結束。
1 或 2 個晶元,那麼不需要測試,因為好晶元至少比壞晶元多乙個,那麼這 1 個或者 2 個晶元都是好的,直接選擇就可以了。
說明:證明過程依照淘汰規則:都好的留 1 扔 1,其他情況都扔掉。
分治前情況:
2i + 2j +2k = n;
好晶元:2i + j;
壞晶元:2k+ j;
所以:2i + j > 2k+ j;
一次分治後的情況:
留下:i+k;(只有都好都壞才會顯示都好,才會背留下來)
好晶元:i ;
壞晶元:k ;
所以:i > k;
即證明完畢。
說明:當 n 為奇數時,不能直接按照淘汰原則淘汰,這樣會使得子問題與原問題性質不一樣。
特殊處理就是在淘汰之前加一組蠻力的測試,測試結果為好,則直接結束;
測試結果為壞,則扔掉,數量就變為了偶數,就可以按照分治演算法來做。
分治法之晶元測試
最近在看演算法導論時,看到了這道晶元測試的題,想了很久,總結一下我的思路 diogenes教授有n個被認為是完全相同的vlsi晶元,原則上它們是可以互相測試的。教授的測試裝置一次可測二片,當該裝置中放有兩片晶元時,每一片就對另一片作測試並報告其好壞。乙個好的晶元總是能夠報告另一片的好壞,但乙個壞的晶...
晶元測試及其應用(分治典例)
問題敘述 vlsi晶元測試 diogenes教授有n個被認為是完全相同的vlsi晶元,原則上它們是可以互相測試的。教授的測試裝置一次可測二片,當該裝置中放有兩片晶元 時,每一片就對另一片作測試並報告其好壞。乙個好的晶元總是能夠報告另一片的好壞,但乙個壞的晶元的結果是不可靠的。這樣,每次測試的四種可能...
晶元IC失效分析測試
ic積體電路在研製 生產和使用過程中失效不可避免,隨著人們對產品質量和可靠性要求的不斷提高,失效分析工作也顯得越來越重要,通過晶元失效分析,可以幫助積體電路設計人員找到設計上的缺陷 工藝引數的不匹配或設計與操作中的不當等問題。華碧實驗室整理資料分享晶元ic失效分析測試。ic失效分析的意義主要表現具體...