称球问题-找出球中的坏球

原作者参考:http://blog.csdn.net/pongba/article/details/2544933

问题

问题模型描述:n个小球,其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。有的题目给出了坏球是轻还是重。

这个问题是一道流传已久的智力题。网络上也有很多讲解,还有泛化到N个球的情况下的严格证明。也有零星的一些地方提到从信息论的角度来看待最优解法。本来我一直认为这道题目除了试错之外没有其它高妙的思路了,只能一个个方法试,并尽量从结果中寻找信息,然后看看哪种方案最少。

思路原则

数学之美中提到了一种数学分析的等概率模型。
现在我们用天平来称球,就等同于对所有情况可能性发问,由于天平的输出结果有三种“平衡、左倾、右倾”,
这就相当于我们的问题有三个答案,即可以将所有的可能性切成三份,
记住一个原则,我们应当尽量让这三个分支概率均等,即平均切分所有的可能性为三等份。
如此一来的话一次称量就可以将答案的可能性缩减为原来的1/3,三次就能缩减为1/27。
比如12个球不知道轻重,才有24种可能性,所以理论上是完全可以3次称出来的。
接下来我们用简单的实例来实际分析问题。

已知轻重找球问题

问题:现在9个小球,其中8个质量相同,有一个坏球较轻一点,如果用天平称,至少称多少次保证能找出这个较轻一个。
这里较轻较重的分析是一致的。

可能性:现在有9个小球,并且我们知道坏球是轻的。所有一种有9中可能性。
1-,2-,3-,4-,5-,6-,7-,8-,9- (这种用-号来表示 轻)
决策选择:按照等概率模型的原则,我们应该找出一种比较方法,能够使天平的三种情况缩减的问题可能性等量缩减。
这里我们使用三分的办法,9个小球分成三份称。希望每种最后缩减可能性都为3种。

可能性分析:这里我采用图表方式分析。

这里我们至少需要两次称重可以确保找出坏球。当然碰运气,第一次就出现的不算。
原谅我没有找到一个合适的画图工具,如果有人看文章的话希望可以推荐一个。

未知轻重找球问题

问题:现在9个小球,其中8个质量相同,有一个坏球,不知道轻重,如果用天平称,至少称多少次保证能找出这个坏球。

可能性:现在有9个小球,并且我们不知道知道坏球是轻重。所有一种有18种可能性。
1-,2-,3-,4-,5-,6-,7-,8-,9- ,1+,2+,3+,4+,5+,6+,7+,8+,9+ (这种用-号来表示 轻 +来表示 重)
决策选择:按照等概率模型的原则,我们应该找出一种比较方法,能够使天平的三种情况缩减的问题可能性等量缩减。
这里我们使用三分的办法,9个小球分成三份称。希望每种最后缩减可能性都为6种。

可能性分析:这里我采用图表方式分析。

这里比较难想的问题是 中间第二次进行称重的时候该如何选择。
这里我建议先用 球多用划分轻重组合法 后用球少逆向思维借助法

划分轻重组合法: 第二次 称重先划分组数 三组 >情况 1+ 4- 2+5- <情况 1- 4+ 2-5+

逆向思维借助法:第二次=的情况 划分三组 每组一个球 不能推出结论
借助其他标准小球
感觉这里的解释 有些牵强 因为具体的情况总是不同的分析方式 不好统一描述
有读者有更好的分析方式,请联系我。

下面再看一题
问题:现在12个小球,有一个坏球,不知道轻重,如果用天平称,至少称多少次保证能找出这个坏球。

可能性:现在有12个小球,并且我们不值知道坏球是轻重。所有一种有24种可能性。
1-,2-,3-,4-,5-,6-,7-,8-,9- ,10-,11-,12- ,1+,2+,3+,4+,5+,6+,7+,8+,9+ ,10+,11+,12+ (这种用-号来表示 轻 +来表示 重)
可能性分析:这里我采用图表方式分析。
图片来源:http://www.inference.org.uk/mackay/itprnn/ps/65.86.pdf

称球问题-找出球中的坏球相关推荐

  1. 称球问题|信息量|拓展|C++代码实现|12大小一样的球,找出其中质量不一样的球解析和代码实现

    直接求解法 条件:天平.12个一样的球,其中一个不一样,用天平找出那个不一样的球并确定轻还是重,最少的次数是:3 将12个球分为三组 A:1 2 3 4 B:5 6 7 8 C:9 10 11 12 ...

  2. C语言 12个球称3次 找出其中一个坏球

    #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> ...

  3. 7个相同小球4个不同盒子_如何用天平称三次找出12个外观相同小球中仅有的一个次品?次品质量与正品不同。...

    刷知乎看到这个问题: 12个相同的小球其中有一个质量不同,一个天平,称三次找出这个小球,请问怎么称?​www.zhihu.com 为了给出通俗易理解的答案,写了这个文章,祝题主有情人终成眷属! 先祭出 ...

  4. 三个球A,B,C大小形状相同,且其中有一个球与其他球的重量不同,要求找出这个不一样的球

    import java.util.Arrays; import java.util.Scanner;/*** @author silence丶黎明* 三个球A,B,C大小形状相同,且其中有一个球与其他 ...

  5. 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。

    [例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...

  6. 找出1-1000中的所有完美数

    再次练习查找完美数,找出 1-1000 中的所有完美数. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ Free:大咖免费"圣经" ...

  7. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  8. 找出数组中重复的数字---多思路

    问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

  9. 如何找出R中加载的软件包版本?

    本文翻译自:How to find out which package version is loaded in R? I am in a process of figuring out how to ...

最新文章

  1. 如何搞30等角视图.斜45度说法不合理
  2. boot spring 怎么执行hql_彻底透析SpringBoot jar可执行原理
  3. 【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:\php5\pear 终级解决方案...
  4. 单击GridView进入编辑模式
  5. FFMpeg框架代码阅读
  6. WinForm中使用WPF的控件
  7. OpenXLSX 字段读取问题
  8. 什么是云原生,跟云计算有什么关系?终于有人讲明白了
  9. 计算机视觉之YOLO算法
  10. 关于AE(AfterEffect)安装QuickTime后无法渲染H.264,出现报错问题的解决!!错误代码(-1610153459)
  11. 初中英语语法(011)-形容词
  12. dma读nand_使用DMA方式读取spi flash问题求助
  13. 解决Python无法找到入口——无法定位到程序输入点
  14. 华为云服务器怎么更改系统版本,华为云服务器怎么更改系统版本
  15. 3DMark2003 破 9000 !
  16. Unable to build Hibernate SessionFactory和Caused by: org.hibernate.tool.schema.spi.SchemaManagementEx
  17. mailgun php版本,php – Mailgun发送带附件的邮件
  18. Java_B_Province测试次数
  19. [CVPR2022-oral]I M Avatar: Implicit Morphable Head Avatars from Videos
  20. plsql解锁oracle用户

热门文章

  1. 【今日头条】【实习】放出一大波职位
  2. 读懂algebraic distances on graphs
  3. 论文阅读-工作流搭建尝试try1:Readcube+Obsidian
  4. 通知之 Pending播放多媒体调用相册摄像头
  5. atx860和java_捷安特XTC800和ATX860有什么区别
  6. linux-install
  7. 狼人杀游戏法官主持软件和会员管理积分系统开发
  8. html5会员管理,如何搭建会员管理体系?
  9. x86、x64、x32和64位、32位的区别与联系
  10. 砌砖机器人公司获200万美元投资,这年头连搬砖工也要失业!