惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
O
OpenAI News
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
云风的 BLOG
云风的 BLOG
罗磊的独立博客
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
雷峰网
雷峰网
V
Visual Studio Blog
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
博客园 - 【当耐特】
G
Google Developers Blog
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
AI
AI
Google Online Security Blog
Google Online Security Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
Webroot Blog
Webroot Blog
PCI Perspectives
PCI Perspectives
爱范儿
爱范儿
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org

Y先生的火箭屋

Java常用代码工具类 - Y先生的火箭屋 软件的七大设计原则 - Y先生的火箭屋 JavaSE使用socket与线程实现控制台版的聊天室功能 - Y先生的火箭屋 天天基金中持仓收益率和持有收益率的区别 - Y先生的火箭屋 MySQL新增排名字段 - Y先生的火箭屋 Java中23种设计模式 - Y先生的火箭屋 金融上的做多做空和杠杆 - Y先生的火箭屋 JVM调优常用的调优参数 - Y先生的火箭屋 基于EasyExcel的配置型导入导出V1.0 - Y先生的火箭屋
在N个球中用天平称最少次数找出坏球 - Y先生的火箭屋
Y先生 · 2022-06-17 · via Y先生的火箭屋

以前在上学的时候,应该会常常听到这个问题,有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(次)12345
N(个)392781243

那上面说的是已知坏球是较轻或者较重的情况,那假如只知道有坏球,但是不知道坏球是重了还是轻了情况呢?

那这里还是举一个例子进行说明,假设有6个球,那么这个坏球就有12种可能性:

1轻(L)2轻3轻4轻5轻6轻
1重(H)2重3重4重5重6重

首先还是分成三堆12,34,56进行称重,先用12和34称重,那么这里会有三种情况:

  1. 天平是平的,那么就会有5L5H6L6H四种情况
  2. 左边重,那么就会有1H2H3L4L四种情况
  3. 右边重,那么就会有1L2L3H4H四种情况

下一步再分别对三种情况进行说明:

  1. 用5或者6去和1234中其中一个去比较称重,假如平了,那么就是6L6H,再用6去和其中一个正常的去比较即可得出是6L还是6H了;假如左重,那么就是5H;假如6重,那么就是5L。
  2. 用13和2和5或6其中一个一起比较称重,假如平了,那么就是4L;假如左重,那么就是1H;假如右重,那么就是2H3L,再用2或者3去和其中一个正常的去比较即可得出是2H还是3L了。
  3. 同样用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三堆,那么这里其实也是可以分为两种情况:

  1. aa称重时平衡,那么他实际所需要的k次的不等式为2b*(⅓)k-1≤1,化简解出得b≤3k-1/2,放缩后得b≤(3k-1-1)/2
  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(次)2345
N(个)31239120