问题叙述:

4-6  VLSI芯片测试

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

    A芯片报告         B芯片报告     结论


    B是好的          A是好的      都是好的,或都是坏的

    B是好的          A是坏的      至少一片是坏的

    B是坏的          A是好的      至少一片是坏的

    B是坏的          A是坏的      至少一片是坏的

a)证明若多于n/2的芯片是坏的,在这种成对测试方法下,使用任何策略都不能确定哪个芯片是好的。假设坏的芯片可以联合起来欺骗教授。

b)假设有多于n/2的芯片是好的,考虑从n片中找出一片好芯片的问题。证明n/2对测试就足以使问题的规模降至近原来的一半。

c)假设多于n/2片芯片是好的,证明好的芯片可用Θ(n)对测试找出。给出并解答表达式测试次数的递归式。

注:VLSI——Very Large Scale Integrated.

算法分析:

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

b)假设:设有a个好的芯片数,b个坏的芯片数,z对测试结果为全好的测试对,其中芯片全为好的测试对为x,芯片全为坏的测试对为y,x+y=z。

二分测试思想:

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

2.根据问题描述:如果测试结果为一好一坏,或者两坏,那么把这对丢弃;如果测试结果为两好,那么随意丢弃其中一个,留下一个(若n为奇数,则剩余一个芯片没有配对。若z为奇数,丢弃这个芯片;若z为偶数(0也看做偶数),留下这个芯片)。这样操作后,留下的好芯片数一定还是大于坏的芯片数的,且经过⌊n/2⌋对测试后,原问题的规模降低了近一半。

3.重复第2步,当n<=2时,就只剩下了好的芯片。

证明:

测试结果为一好一坏或者两坏的芯片对中至少一片是坏的,把这对丢弃能保证剩下的芯片中好芯片的数量仍大于坏芯片的数量。

测试结果为全好的,这对芯片有可能全为好,有可能全为坏,随意丢弃其中一个,留下 一个。设好芯片的对数为x,坏芯片的对数为y。考虑n的情况:

若n为偶数,则x>y,所以留下的好芯片数还是大于坏的芯片数;

若n为奇数,则剩余一个没有配对的芯片。考虑z的情况:

若z是奇数,则x>y,丢弃这个芯片,这样留下的好芯片数还是大于坏的芯片数;

若z是偶数,考虑这个芯片的情况:

若芯片是好的,则x>=y,留下这个好的芯片,这样留下的好芯片数还是大于坏的芯片数;

若芯片是坏的,则x-y>=2,留下这个坏的芯片,这样留下的好芯片数还是大于坏的芯片数。

综上所述,留下的好芯片数一定还是大于坏的芯片数的。

c)采用b中的操作方法,递归式为:f(n) = f(n/2) + n/2。这个递归式符合主定理中的第三种情况,所以好的芯片可用Θ(n)对测试找出。

转载于:https://www.cnblogs.com/newhand-liu/archive/2012/03/30/2793298.html

算法导论-VLSI芯片测试问题相关推荐

  1. Java实现算法导论中Miller-Rabin随机性素数测试

    Miller-Rabin测试: 费马小定理:对于素数p和任意整数a,有ap ≡ a(mod p)(同余).反过来,满足ap ≡ a(mod p),p也几乎一定是素数. 伪素数:如果n是一个正整数,如果 ...

  2. 算法设计与分析:芯片测试问题、选择问题详解

    芯片测试问题 有n片芯片,已知其中好芯片比坏芯片至少多1片.现在需要通过测试从中找出1片好芯片.测试的方法是:将2片芯片放到测试台上,2片芯片互相测试并报告测试结果:"好"或者&q ...

  3. 【算法设计与分析】15 分治策略:芯片测试

    上一篇文章学习了[算法设计与分析]14 分治算法的一般描述和分析方法 文章目录 1. 芯片测试 1.1 一次测试的过程 1.2 如何测试一块芯片的好坏 1.3 蛮力算法 1.4 分治算法设计思想 1. ...

  4. 【算法】分治策略:芯片测试

    目录 算法背景分析 一次测试结果分析: 重要的假设 方法一:蛮力测试 方法二:分治策略          证明假设以及特殊处理 算法代码 测试结果 算法背景分析 一次测试结果分析: 代码:一次芯片的测 ...

  5. 芯片测试算法及时间复杂度分析

    一.蛮力算法与分治算法 #include <stdio.h> #include <math.h> #define OVERFLOW -2 #define OK 1 #defin ...

  6. VLSI芯片电路测试分类testMode、模式、时钟复位输入输出

    目录 1.测试分类 1.1 参数测试和功能测试. 参数测试: 功能测试: 1.2 根据测量输出电流还是电压 电压测试: 电流测试: 1.3 根据测试激励的快慢 DC (static)testing A ...

  7. 分治策略——快速排序、幂乘算法、芯片测试、改进分治算法的途径

    思想:用首元素作为划分标准,设定两个指针,分别从第二个元素和最后一个元素分别往前往后遍历. 当前指针找到大于标准.后指针找到小于标准的时候,互换两个指针处的元素.从而将问题划分为两个子问题. 在递归调 ...

  8. 3.分治算法的设计思想与分析方法: 芯片测试, 快速排序, 幂乘算法, 减少子问题数, 增加预处理

    本文内容为北大慕课课程的算法分析与设计的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CS ...

  9. 分治算法——芯片测试

    A:B是好的 B:A是好的 (1) A是好芯片,B是好芯片 A的报告结果是对的 B的报告结果是对的 A.B都是好芯片 (2) A是好芯片,B是坏芯片 A的报告结果是对的 B的报告结果是不确定的 因为A ...

最新文章

  1. 苹果12 Pro Max和mini测评来了,看完我选择了iPhone 12
  2. HTTPS 也不安全?被发现新漏洞会暴露你的数据
  3. linux ubi 分区,Linux最新UBI文件系统介绍
  4. java const string_深入研究Java String
  5. iterm2 保存阿里云登陆并防止断开连接
  6. c语言linux TCP长连接 socket收发范例 断开自动重连
  7. GIT文件的三种状态
  8. 转债---Pregel: A System for Large-Scale Graph Processing(译)
  9. 早上起床后喝一杯白开水是非常有好处的
  10. 机器学习文本特征提取
  11. 开源设计和原型制作平台Penpot
  12. windows自带截图键(ctrl + win + s)失灵如何恢复,无需重启电脑方法!
  13. Windows 文件夹或文件名 太长无法删除怎么办? 一招教你怎样解决.
  14. 微信公众号发送红包(源码)
  15. java实现Stripe信用卡支付
  16. 解锁商业新模式,神奇AR为IP内容“添把火”
  17. DES的加密解密在ECB上的使用(C语言实现)——大三密码学实验
  18. 《十》浏览器基础及渲染引擎解析一个网页的过程、JavaScript 引擎解析 JavaScript 代码的过程
  19. 「C++ MFC」 “多媒体定时器实例”讲解
  20. 快手签名算法php,2019 快手API签名算法

热门文章

  1. 【Top 50】中美人工智能高被引学者榜单:孙剑、何恺明、李飞飞进前5
  2. bat循环导oracle,Oracle备份恢复与批处理文件实操
  3. AI算法工程师手册!
  4. DEKR 解构式人体关键点回归(三):损失函数
  5. 卷积神经网络看见了什么
  6. 神经网络思想建立LR模型(DL公开课第二周答案)
  7. 机器学习实战 | 数据探索
  8. oracle数据库报错1033,Oracle联机日志出现错误ORA-16038 ORA-19809 ORA-00312 解决
  9. java indexof 通配符,字符串与含有通配符‘*’的字符串匹配(非正则表达式)
  10. python社招面试_百度大牛总结十条Python面试题陷阱,看看你是否会中招