演算法導論-4-6 VLSI晶片測試

來源:互聯網
上載者:User

【轉】

問題:Diogenes
教授有n個被認為是完全相同的VLSI晶片,原則上它們是可以互相測試的.教授的測試裝置一次可測試二片,當該裝置中放有兩片晶片時,每一片就對另一片作
測試並報告其好壞.一個好的晶片總能夠正確的報告另一片的好壞,但一個壞的晶片的結果就是不可靠的.這樣,每次的測試的四種可能結果如下:

a)證明若少於 n/2 的晶片是壞的,在這種成對測試方式下,使用任何策略都不能確定哪個晶片是好的.
b)假設有多於 n/2 的晶片是好的,考慮從 n 片中找出一片好晶片的問題.證明 n/2 對測試就足以使問題的規模降至近原來的一半.
c)假設有多於 n/2 的晶片是好的,證明好的晶片可用 O(n) 對測試找出。

解題思路:
a)    在所有的策略中,時間複雜度最高但最有效方法是:對每個晶片,讓其它所有晶片對它進行報告,由於好晶片數目小於n/2,對於任意晶片,壞晶片都可以讓判斷結果一模一樣(比如判斷結果好壞各佔一半),此時,就無法判斷出好壞。得證。
b)    問題可以這麼理解,證明:當多於n/2的晶片是好的時,可以通過【n/2的下界】次操作,得到一個包含至多n/2個晶片的集合,且該集合內好的晶片大於一半。這樣,以後只需要在這個集合上執行類似的判斷動作就好了。
對於n個晶片的集合,假設good代表好晶片的數目,則壞晶片有(n – good)個,將n個晶片兩兩組合,接下來分類討論。
        1.    當n為偶數時,假設好晶片和壞晶片集成的對數為r,則(n - good) >=
r。對每個對,如果結果是情況2、3、4,則不做任何操作,如果結果是情況1,則從中挑出一個放到一個集合中。所以,我們可以在好晶片對中取到(good
– r)/2個晶片,從壞晶片對中取到m個晶片,m <= (n – good - r)/2。因為(good – r)/2 > (n –
good - r)/2,所以新集合中好晶片的數目大於一半,另外總晶片數小於等於(n/2 - r)。
        2.    當n為奇數時,提取一個晶片,對剩下的晶片採取偶數的方法,只不過最後的集合情況是:(good - r)/2 >= (n – 1 – good - r)/2,晶片總數小於等於((n – 1)/2 - r)。
                1)    當總數是偶數時,要麼好的晶片數和壞的晶片數一樣,原先被提取的晶片是好的晶片,把好的晶片加入集合;要麼好的晶片比壞晶片多偶數個,此時不論被提取的晶片是好是壞,把它加入集合也能保證好的晶片數大於坏的晶片數。
                2)    當總數是奇數時,好的晶片數必然大於坏的晶片數。
       得證。
c)    當每次的r為0時,所需要的遞迴次數最多,T(n) = T(n/2) + n/2。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.