当前位置:   article > 正文

芯片测试—分治_分治 坏的芯片 c++

分治 坏的芯片 c++

Diogenes教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的。教授的测试装置一次可测二片,当该装置中放有两片芯片 时,每一片就对另一片作测试并报告其好坏。一个好的芯片总是能够报告另一片的好坏,但一个坏的芯片的结果是不可靠的。这样,每次测试的四种可能结果如下:

芯片A的结果芯片B的结果结论
B是好的A是好的两片都是好的,或都是坏的
B是好的A是坏的至少一块是坏的
B是坏的A是好的至少一块是坏的
B是坏的A是坏的至少一块是坏的
  1. 证明:如果超过n/2块芯片是坏的,使用任何基于这种逐队检测操作的策略,教授都不能确定哪些芯片是好的。假定芯片可以合谋欺骗教授。
  2. 考虑从n块芯片中寻找一块好芯片的问题,假定超过n/2块芯片是好的。证明:进行 \left \lfloor n/2 \right \rfloor 次逐队检测足以将问题规模减半。
  3. 假定超过 n/2 块芯片是好的,证明:可以用 \theta (n) 次逐队检测找出好的芯片。给出描述检测次数的递归式,并求解他。

(1)将任何一片芯片与其它所有芯片进行比较,因为有多于n/2的芯片是坏的,且坏的芯片可以联合起来欺骗教授,则测试结果是不可靠的,无法判断出该芯片是好是坏。

(2)

1.随机的两两配对,则共有⌊n/2⌋对,分别测试。

2.如果测试结果为一好一坏,或者两坏,那么把这对丢弃;如果测试结果为两好,那么随意丢弃其中一个,留下一个。

3.重复以上操作,直至n<=2.

当n是偶数时:测试结果为一好一坏,或者两坏,丢弃后好芯片数都比坏芯片数多。如果测试结果为两好,那么好芯片的数量至少比坏芯片的数量多一对,随意丢弃一个时,好芯片的数量仍然多于坏芯片的数量。

当n是奇数时:单独操作,用剩下的芯片对其测试,判断其好坏。

(3)复杂度: T(n)=2T(n/2)+n 。根据主定理 T(n)=O(n) 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/860116
推荐阅读
相关标签
  

闽ICP备14008679号