看板Programming
标 题Re: [问题] 有关演算法的问题
发信站=?big5?B?SElTRFQgrbes6qzsp97F58PSprOtraS9pX (Wed Apr 16 23:04:26 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!feeder.seed.net.tw!netnews!
假设所有传回值大部分都是坏的呢?
起始解传回两个 F ,你要踢哪个?两个 F 表示至少一个坏的。
你原文抽出一个跟一对混淆在一起,搞不清楚你是写哪种。
(注: TF FT 仅为反序,只论 TF)
1)传回 T T 可能是全好或全坏。
2)传回 T F 可以保证 F 一定是坏的,可以踢掉,但 T 则不一定是好坏。
3)传回 F F 可以保证必有一个坏的。
你之前的说法看不出 2 要怎样处理,因为你写
: 只要有其中一个报告 bad, 则这对拿起来放在一边.
: 然後在晶片堆拿下一个, 继续做.
拿起一对,则下一步应该是在晶片堆拿下一对。
可以确认:
1 是一堆,3 是一堆
2 不知道要全部塞到 3 还是一半到 3 。
那怎麽看最後剩下来的堆 1 跟堆 3 都是混杂着好坏。
假设只把标记为 F 得丢到 堆 3 ,每次只丢一个,相同丢 B,则
F F
T T
两种情况都会把不确定到底谁是 F 谁是 T 的状况乱分堆。
由於只有 2 可以有效减少晶片数,所以第一次分组完会得到:
1) T T (i 组)
2) T (j 个)
3) F F (k 组)
後面该怎样组合能最快不一定,但是
2 跟 3 组合踢掉 F ,把剩下来的分配回 1, 2, 3 各组。
若 2 有剩,则 2 两两互组分回 1, 2, 3 。
若 3 有剩,则用 1 的 T T 依序去配,踢掉 F 。
循环最後可能得到除了 1 外,剩下单独的 T , F 或 F F ,最後再处理。
1 由於两两为一组,必为 TT 或 FF ,所以开始抽选序号为 2 的次方倍来比对。
12 34 56 78 ...
抽 24 68 ... 比对,
1)传回 TT 表示 12 34 必为 TT TT 或 FF FF
2)传回 TF 表示 12 可能为 TT 或 FF ,但 34 必为 FF ,踢掉 34
3)传回 FF 表示 12 34 可能为 TT FF 或 FF TT 或 FF FF
(注意,逻辑又回到上面的单个的情形)
最後 1 是绑定的,变成 4 个一组:
1234 5678 ....
抽 48 ... 比对,
1)传回 TT 表示 1234 5678 必为 TTTT TTTT 或 FFFF FFFF
2)传回 TF 表示 1234 可能为 TTTT 或 FFFF ,但 5678 必为 FFFF ,踢掉 5678
3)传回 FF 表示 1234 5678 可能为 TTTT FFFF 或 FFFF TTTT 或 FFFF FFFF
可以看出逻辑一直在循环,只是每次循环的逻辑下,1 每组的个数会成 2 的次方倍增加。
1, 2, 4, 8, 16, 32, 64, ...
由於有一个条件为好的比坏的多,组 1 绑定的个数接近 1/2 的总个数时,才可以停止。
而剩下零散的组数因为已经确认了有好的了,要踢掉也很容易。
原先题目中最难决定是必为好的的那个或那组是哪个。
==> 本文由 "Alien <[email protected]>"
> 於 news:4ZThVX%248ne%40ptt.cc 发表
> ※ 引述《琏琏 <[email protected]>, 看板: Programming》之铭言:
> : 这个能用的前提是你第一个拿出来的要是好的。
> : 结果不可信表示可能回传是好的或坏的,并非是坏的就会传回好的。
> 并不是
> 你细心想一下, 就算我第一个拿出来的是坏的, 我逐一的去
> 比对, 总会遇到好的(基於好晶片会比坏晶片多的事实). 这
> 样的组合之下, 好的晶片会回报我手上的晶是坏的.
> : 所以会造成你分的两堆根本就不可信,因为每一堆都是混杂了好的或坏的。
> 你也错了.
> 到最後, 剩下的一堆一定是好晶片.
> 之前逐一比对之後放在一边的那堆才是好坏混杂
> 你再细心想一想吧.
> : 此外,实务上不会这样做,要这样做只要开始之前准备一个好的就行了。
> : 会有这种命题就是为了解决实务上降低测试成本用的,所以才需要工程师思考。
> 我不知他的命题的本意是什麽, 我只是根据他给的
> 资料来找出可行的答案. 我才不管他实务上怎样做.
> btw, 实务上真的有那麽多这种用一种东西来检查与
> 自己同类的东西的情况吗?
> : ==> 本文由 "Alien <[email protected]>"
> : > 於 news:4ZTPeM%246nc%40ptt.cc 发表
> : > 随便从晶片里抽一个出来, 和剩下的逐一比对.
> : > 只要有其中一个报告 bad, 则这对拿起来放在一边.
> : > 然後在晶片堆拿下一个, 继续做.
> : > 直到有一颗晶片, 和其他剩下的所有晶片检查结果都是
> : > good. 这时, 剩下的所有晶片都是都是好的.
> : > 再用这些好的晶片来检查之前放在一边的那堆就好了.
> : > 这方法一定要肯定好的比坏的多才能成立
> : > alien
>
--
风禹科技验证有限公司 ASP.NET Web News Reader 0.2.7 UTF-8 Beta
网站地图
http://tlcheng.twbbs.org/wwwmap.htm
流域防洪/区域水资源/徐昇网/玫瑰图/语音通讯 文章与程式
Basic/Fortran/Windows API/.Net/辅助说明档 原始码、文章与讨论
微软程式设计、系统管理使用新技术论坛讨论区,网友回覆後即时简讯、电子邮件通知:
MSDN:
http://forums.microsoft.com/msdn-cht/default.aspx?siteid=14
TechNet:
http://forums.microsoft.com/technet-cht/default.aspx?siteid=23
--
ASPNET News Reader
http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0
http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=tw.bbs.comp.language