分治之芯片测试

一、问题描述

条件:有n片芯片,其中好芯片至少比坏芯片多1片。其中好芯片会给出正确的结果,而坏芯片的结果是不确定的。

问题:使用最少测试次数,从中挑出1片好芯片。

 

二、问题分析

1.      分析特例

假设有两个芯片A和B,使它们互相测试。结果如下:

 

A报告

B报告

结论

1

B是好的

A是好的

A,B都好或A,B都坏

2

B是好的

A是坏的

至少一片是坏的

3

B是坏的

A是好的

至少一片是坏的

4

B是坏的

A是坏的

至少一片是坏的

 

2.      分治的思想是问题的性质不变,但是规模缩减。

 

3.      解题思路

芯片两两测试,如果测试结果是情况1,A、B中留一片丢一片。如果是其他情况全丢掉,剩下的芯片仍然满足好芯片多于坏芯片的假设。因为对于1情况,两个芯片不是都好就是都坏,每次留一片丢一片,相当于对这种情况下的好芯片及坏芯片各种减半。而对于2、3、4情况中,至少有一片是坏的,那么全部丢弃的话,坏芯片减少的数量大于或者等于好芯片。所以,整体来说留下的芯片中好芯片仍然多于坏芯片。这样问题的性质不变,但是规模缩减。

 

三、伪代码

 

分治之芯片测试_第1张图片

 

四、时间复杂度 

分治之芯片测试_第2张图片

 

 

 

你可能感兴趣的:(算法)