13 Balls Problem
今天讨论的是称球问题.
No.3 13 balls problem
You are given 13 balls. The odd ball may be either heavier or lighter. Find out the odd ball in 3 weightings.
分析与解答:
看到这道题,就想起来高中时候数学老师的一句话;“真正难的题不是那些很长的题,而是那些就几句话的题!!!”现在想想真是良训啊。又想到很多老师的话,感觉到失去方显弥足珍贵的名言,不禁唏嘘啊……
有人认为这道题是“One of the Hardest Interview Questions”,我认为是有道理的。学过信息论的人应该知道,这也是信息论中谈及信息量(熵)时的命题。它同时也反映了数据挖掘和充分利用信息量的重要性。对同样的数据,别人就是能挖掘出你得不到的信息。这就是信息时代“信息不对称”的深层表现。在获取同样数据量的情况下,怎样才能做到获得的信息量比别人多?沉思中……
算了算了,还是先给出方案吧:
Step 1. 将这13个球分为3组,分别标号为:A1,A2,A3,A4;B1,B2,B3,B4;C1,C2,C3,C4,C5。
Step 2.(第一次称量) 比较A组和B组的重量。如果A、B组的重量相等,则确认异常球在C组。如果A、B组的重量不一样,则确认异常球在A组或B组。下面开始分两种情况讨论:
情况1. 异常球在C组
Step 3. (第二次称量)从C组中取出三个球(定为C1、C2、C3),并从A、B组中任取一个球,一共四个球一边两个放在天平上。(第三次称量)如果天平平衡,则异常球在C组剩下的两个球(C4、C5)中,这时只需将其中任意一个球与A、B组中的任一个球相比就能确定那个球是异常球,这个异常球是轻了还是重了。如果天平不平衡,那么我们知道异常球在C1、C2、C3中。进一步我们假设,天平的称重情况为:C1,N > C2,C2(小于的情况同理讨论),这样的话,我们可以进一步确认C1、C2、C3的情况为C1偏重或者C2偏轻或者C3偏轻。这样,我们后面就把C1、C2与两个正常球N、N相比较。如果C1、C2 > N、N ,则C1是异常球,且偏重;如果C1、C2 < N、N,则C2是异常球,且偏轻;如果C1、C2 = N、N,则C3是异常球,且偏轻。
情况2. 异常球在A、B组
Step 3. 不妨假设A1、A2、A3、A4 > B1、B2、B3、B4(小于的情况同样讨论)。那么我们首先得到信息:要么A组中有个球偏重、要么B组中有个球偏轻。(第二次称量)下面我们从A组中取出三个球,从B组中取出三个球。然后,我们分别在天平两边这样放:一边是A1、A2、B1,一边是A3、A4、B2。我们称称看。(第三次称量)如果 A1、A2、B1 > A3、A4、B2那么我们可以判定或是A1偏重或是A2偏重或是B2偏轻;如果A1、A2、B1 < A3、A4、B2那么我们可以判定或是A3偏重或是A4偏重或是B1偏轻;如果天平平衡,则判定B3偏轻或是B4偏轻。下一步的做法,就不用我多说了吧,方法与情况1中的最后一步一样。
至此,我们给出了本题的方案。12(or 13) balls problem是信息论的名题。在Thomas M Cover的经典著作《信息论基础》(Element of information )中就作为习题出现。其实,我们进行方案设计的基本理念用信息论的行话来讲就是:怎样使每次称量获得的信息量最大。具体是怎样把信息论和本题联系起来的呢,看到网上有一篇文章Robert H.Thouless 的The 12-Balls Problem as an Illustration of the Application of Information Theory。不过我没有查到电子版,有的同学记得给一份我啊,也学习学习,呵呵。
13 Balls Problem的更多相关文章
- BZOJ 1770: [Usaco2009 Nov]lights 燈
Description 一个图,对一个点进行操作会改变这个点及其相邻的点的状态,问全部变成黑色至少需要几次.数据保证有解. Sol Meet in middle. 我一开始写个高斯消元,发现有两个点过 ...
- [GodLove]Wine93 Tarining Round #4
比赛链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=44903#overview 题目来源: 2011 Asia ChengDu R ...
- [SharePoint] SharePoint 错误集 2
1 Run command “New-SPConfigurationDatabase" Feature Description: error message popup after run ...
- SharePoint 2013 – Workflow Manager 1.0 offline download
[http://sharepointdeal.wordpress.com/2013/03/13/sharepoint-2013-workflow-manager-1-0-offline-downloa ...
- 三部曲二(基本算法、动态规划、搜索)-1006-The Same Game
The Same Game Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4585 Accepted: 1699 Des ...
- URAL 1076 Trash Trash(最大权匹配)
Trash Time limit: 1.0 secondMemory limit: 64 MB You were just hired as CEO of the local junkyard.One ...
- URAL 2030 Awesome Backup System
Awesome Backup System Time limit: 2.0 secondMemory limit: 64 MB It is known that all people can be d ...
- [kuangbin带你飞]专题二十 斜率DP
ID Origin Title 20 / 60 Problem A HDU 3507 Print Article 13 / 19 Problem B HDU 2829 Lawr ...
- [kuangbin带你飞]专题十四 数论基础
ID Origin Title 111 / 423 Problem A LightOJ 1370 Bi-shoe and Phi-shoe 21 / 74 Problem B ...
随机推荐
- DHTMLX-Grid
DHTMLX - Grid 介绍 dhtmlxGrid是一个灵活的.易于使用的JavaScript网格组件,可以创建DHTML表与丰富的编辑- sensing,固定的多行页眉和页脚,可调整大小的.可拖 ...
- Visual Studio远程调试
Visual Studio支持调试远程机器上的程序,经过简单设置后,就像调试本地代码一样方便. 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Pro ...
- VS中的活动debug和活动cpu
“活动”的含义就是当前项目所用的模式和平台.项目中的”活动“继承于解决方案中的配置.
- mybatis的动态sql及模糊查询
1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity; public class ...
- windows平台eclipse for C++开发环境搭建
参考: 1 blog.sina.com.cn/s/blog_75f3c1f201014l5c.html 2 MinGW官方的安装说明 一.安装并配置MinGW 1 MinGW官网(www.mingw. ...
- Jsp与servlet本质上的区别
1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长 ...
- Dictionary的几种遍历方法
Dictionary<string, int> list = new Dictionary<string, int>(); list.Add("d", 1) ...
- Django 浏览页面点击计数(通用视图)
通常情况下在Views.py中直接写一个视图函数就可以了,由于每次点出详情时都会经视图函数处理, 所以可以在此视图函数中对浏览次数进行"+1" 操作. 对应的url:url(r'^ ...
- excel导出字符串
"style", "vnd.ms-excel.numberformat: @;"
- Asprise-OCR的使用
Asprise-OCR下载地址: http://asprise.com/product/ocr/download.php?lang=csharp 其中需要使用的3个dll是AspriseOCR.dll ...