经典面试题之老鼠试药与汉明码

打印 上一主题 下一主题

主题 1058|帖子 1058|积分 3178

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  前几天看了介绍汉明码的视频,当即就想到了这道面试题,k只小白鼠检测n瓶药中的1瓶毒药,初学者很容易被唬住,解法也鲜有提及背后的原理,以至于我当时看完完全不理解。
  其实就是信息传输中的汉明码检验,一段长度为n的二进制信息,在2^n处(n=0,1,2,3,...)添加检验码,用于检验后续段落中的信息是否发生翻转,回看开头的面试题,n瓶药中的1瓶毒药,就是长度为n的二进制信息中有1处数据发生翻转,k只小白鼠就是对应最大检验位2^n,所以也有2^k≥n+1,表示检验码和信息之间的关系,1代表2^0,人为地在头部添加1位检验码表示整段信息的状态。
  顺着解题的路子,有些思路上来就把药次序转为二进制排下来,第1只小白鼠喝第1列所有数字为1的药,第2只小白鼠喝第2列所有数字为1的药,也就是第n只小白鼠喝第n列数字为1的药,其实就是对应汉明码中第n位校验码从第n位开始检测n位跳过n位再检测n位的原则。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表