首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一组n个球中找出缺陷球

从一组n个球中找出缺陷球
EN

Stack Overflow用户
提问于 2015-10-14 19:43:29
回答 1查看 305关注 0票数 0

类似于缺陷球问题,给你n个球,但是有一个数目未知的缺陷球和好球。至少有一个好球和至少一个有缺陷的球。所有好球的重量都一样,所有有缺陷的球都是一样的,但是好球的重量比有缺陷的球轻,如果有平衡的话,把有缺陷的球和好的球分开。

我对解决方案的天真尝试就是将第一个球放在一个列表中,然后遍历整个列表,并相应地将它们放在各自的列表中。然而,这显然是一个O(n)解。我想知道是否还有更有效的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-14 20:11:49

在最坏的情况下,你找不到比O(n)加权更好的解。有2^n种可能的结果(2^n种给每个球分配“好”或“坏”的方法)。每种称量都有三种可能的结果,因此m加权可以区分3^m可能的结果。

因此,要区分所有2^n可能的结果,至少需要log3(2^n)加权,它等于n*log3 3(2)= O(n)。

因此,在最坏的情况下,最简单的解(取一个球并将其与另一个球进行权衡)是最好的解。

注意:这个证明是基于与比较排序不能比O(n*logn)更好的证明的相同的观点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33134222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档