芯片测试问题的一些理解

一、一次测试过程:

测试方法:将2片芯片(A和B)置于测试台上,互相进行测试,测试报告是“好”或“坏”,只取其一。
chip-test
就是这份报告是针对对方而言的,也就是说A芯片说B芯片是好的,B芯片说A是坏的

假设:好芯片的报告一定是正确的,坏芯片的报告是不确定的(可能会出错)

如果A芯片本来就是好的,那么它说的话就是可靠可信的,而且它一定说真话,如果它说B芯片是好的,那B芯片就一定是好的,因为A不会说假话的;如果B芯片说A是坏的,那么它的话是不可靠的

二、测试结果分析

A报告B报告结论
B是好的A是好的A,B都好或A,B都坏
B是好的A是坏的至少一片是坏的
B是坏的A是好的至少一片是坏的
B是坏的A是坏的至少一片是坏的

三、芯片测试问题

1、输入:

n片芯片,其中好芯片至少比坏芯片多1片

2、问题:

设计一种测试方法,通过测试从n片芯片中挑出1片好芯片

3、要求:

使用最少的测试次数

判定芯片A的好坏
问题:给定芯片A,判定A的好坏
方法:用其他n-1片芯片对A测试

1、n是奇数:好芯片数≥(n+1)/2
A好,至少有(n-1)/2个报“好”
A坏,至少有(n+1)/2个报“坏”

结论:
至少一半报“好”,A是好芯片
超过一半报“坏”,A是坏芯片

n=7:好芯片≥4
A好,6个报告中至少3个报“好”
A坏,6个报告中至少4个报“坏”

2、n是偶数:好芯片数≥n/2+1
A好,至少有n-/2个报“好”
A坏,至少有n/2个报“坏”
结论:
至少一半报“好”,A是好芯片
超过一半报“坏”,A是坏芯片

n=8:好芯片数≥5
A好,7个报告中至少4个报“好”
A坏,7个报告中至少5个报“坏”

四、蛮力算法

测试方法:任取1片测试,如果是好芯片,测试结束;如果是坏芯片,抛弃,再从剩下芯片中任取1片测试,直到得到1片好芯片

时间估计:
第1片坏芯片,最多测试n-2次
第2片坏芯片,最多测试n-3次
……
总计O(n²)

五、分治算法

1、分治算法设计思想

(1)、假设n为偶数,将n片芯片两两一组做测试淘汰,剩下芯片构成子问题,进入下一轮分组淘汰
(2)、淘汰规则:

“好,好”→任留1片,进入下轮
其他情况→全部抛弃

(3)、递归截止条件:n≤3

3片芯片,1次测试可得到好芯片
1或2片芯片,不在需要测试

2、分支算法的正确性

命题1 当n时偶数时,在上述淘汰规则下,经过一轮淘汰,剩下的好芯片比坏芯片至少多1片

设A,B都好的芯片i组,A与B一好一坏j组,A与B都坏的k组。淘汰后好芯片至少i片,坏芯片至多k片。

2i+2j+2k=n 初始芯片总数
2i+j>2k+j 初始 好芯片多于坏芯片
→i >k

代码描述:

k<-n
while k>3 do
	将芯片分成└k/2┘组 //轮空处理
	for i=1 to └k/2do
		if 2片好 then 则任取1片留下
		else 2片同时丢掉
	k←剩下的芯片数
if k=3 then
	任取2片芯片测试
	if 11坏 then 取没测的芯片
	else 任取1片被测芯片
if k=2 or 1 then 任取1
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值