以前在上学的时候,应该会常常听到这个问题,有N个球,比如9个,其中有一个是坏球,且质量较轻或者较重(已知,这里假设较轻),现在只有一个天平,则最少需要几次才能找出那个坏球?
以这里例子为例,应该需要两次就可以找出那个坏球了,那么具体怎么做呢?首先先把球分为三堆A、B、C,每堆三个球,先用天平称A和B,那么假如A堆或者B堆中有较轻的,那么就取出那堆分成三堆每堆一个球再进行一次称重,假如他们一样重,那就取出C堆进行称重,那么再进行一次上述的操作,就可以找出那个坏球了。
从这里例子可以看出,假如我们需要在N个球找出那个坏球,那么我们的原则就是尽可能的将N个球分成相等的三份去进行称重即可,假如N个球不是3的倍数,假设是8,那么我们分成332即可。由此我们可以得出一个方程,N个球最少需要k次找出坏球,则为N*(⅓)k≤1化简解出得N≤3k,那么可得到下面这张表,k次最多可以找出N个球中的那个坏球:
K(次) | 1 | 2 | 3 | 4 | 5 | … |
N(个) | 3 | 9 | 27 | 81 | 243 | … |
那上面说的是已知坏球是较轻或者较重的情况,那假如只知道有坏球,但是不知道坏球是重了还是轻了情况呢?
那这里还是举一个例子进行说明,假设有6个球,那么这个坏球就有12种可能性:
1轻(L) | 2轻 | 3轻 | 4轻 | 5轻 | 6轻 |
1重(H) | 2重 | 3重 | 4重 | 5重 | 6重 |
首先还是分成三堆12,34,56进行称重,先用12和34称重,那么这里会有三种情况:
- 天平是平的,那么就会有5L5H6L6H四种情况
- 左边重,那么就会有1H2H3L4L四种情况
- 右边重,那么就会有1L2L3H4H四种情况
下一步再分别对三种情况进行说明:
- 用5或者6去和1234中其中一个去比较称重,假如平了,那么就是6L6H,再用6去和其中一个正常的去比较即可得出是6L还是6H了;假如左重,那么就是5H;假如6重,那么就是5L。
- 用13和2和5或6其中一个一起比较称重,假如平了,那么就是4L;假如左重,那么就是1H;假如右重,那么就是2H3L,再用2或者3去和其中一个正常的去比较即可得出是2H还是3L了。
- 同样用13和2和5或6其中一个一起比较称重,假如平了,那么就是4H;假如左重,那么就是2L3H,再用2或者3去和其中一个正常的去比较即可得出是2H还是3L了;假如右重,那么就是1L。
由上述情况说明,同样可以得出一个方程,N个球最少需要k次找出坏球,则为2N*(⅓)k≤1化简解出得N≤3k/2,由于这个不等式解出来是小数,所以对这个不等式进行放缩一下则为N≤(3k-1)/2
这里说的N个球是比较粗略情况,那么实际上在第一次分球称重的时候,分成三堆的时候可以分为aab三堆,那么这里其实也是可以分为两种情况:
- aa称重时平衡,那么他实际所需要的k次的不等式为2b*(⅓)k-1≤1,化简解出得b≤3k-1/2,放缩后得b≤(3k-1-1)/2
- aa称重时不平衡,那么他实际所需要的k次的不等式2a*(⅓)k-1≤1,化简解出得a≤3k-1/2,放缩后得a≤(3k-1-1)/2
两种情况加起来则为N=2a+b≤(3k-3)/2,那么可得到下面这张表,k次最多可以找出N个球中的那个坏球:
k(次) | 2 | 3 | 4 | 5 | … |
N(个) | 3 | 12 | 39 | 120 | … |