给你出道题---N个数字的静态决策区分问题
决策,是世界上最重要的事情。
走路分两步:看准方向,大步前进。看准方向的过程就是决策。
任何一个问题,都对应两个空间:解空间和决策空间。我们所要做的就是使用决策空间去划分解空间。
决策可以分成两类:单步决策和多步决策。单步决策只需要做一次决策即可,多步决策需要做多次决策,需要考虑决策之间的连贯性。
对于一些有步骤的连续决策问题,决策可以用树形结构来描述。每次执行决策之后,不同的分支会采取不同的后继决策,这称之为动态决策。特殊地,有一类决策是链状结构,不需要根据实际情况做出调整,这称之为静态决策。动态决策形成决策树,静态决策形成决策链,链表是特殊的树,静态决策是特殊地动态决策。因为静态决策形成的是决策链,所以静态决策满足无序性,先执行哪步决策都可以。
编程有三种结构:顺序、循环、条件。动态决策就是有条件语句,静态决策就是没有条件语句。
言归正传,请看问题。
给定N个100bit的二进制数字,至少需要多少位才能判别它们?(静态决策)
这个问题直观看上去像贪心。在100个bit中,每次选择区分度最大的bit添加到决策链中。
首先选择b1,N个数字分成了两叉;然后选择b2,分成四叉。那么如何选择b1、b2呢?
N个100bit的二进制数字,构成了N行100列的矩阵。
假设第一次我选择b1之后,把全部数字分成两组,每组的个数分别为c1、c2。那么c1和c2越均衡越好。怎么算是均衡?$\frac{c_1}{N}\times c_1+\frac{c_2}{N}\times c_2$越小越好。这个式子表示随机选择一个数字x,与x相同的数字的个数。与x相同的个数当然是越少越好,这表示我们的程序已经能够把数字区分开了。
假设第二次我选择b2之后,把全部数字分成四组,每组的个数分别为c1、c2、c3、c4,这四个数字平方之和越小越好。
上述解法只是一种贪心,不知道贪心的结果是否正确。不知道是否有完美的方法。
给你出道题---N个数字的静态决策区分问题的更多相关文章
- 剑指Offer38 数组所有数字出现两次,只有两个出现了一次,找出这两个数字
/************************************************************************* > File Name: 38_Number ...
- 50.TO_NUMBER 将给出的字符转换为数字
.SYSDATE 用来得到系统的当前日期 SQL> select to_char(sysdate,dd-mm-yyyy day) from dual; TO_CHAR(SYSDATE, ---- ...
- 求出数组中所有数字的和&&弹出层效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...
- 15. 3Sum_左右开工,遍历找出符合目标的数字
题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find al ...
- [小米 Online Judge]找出单独出现的数字
描述: 给出N个数字.其中仅有一个数字出现过一次,其他数字均出现过两次,找出这个出现且只出现过一次的数字.要求时间和空间复杂度最小. 输入: 输入多个数字,每个数字以空格分开,回车结束 输出: 输出内 ...
- 给你出道题:依次去掉离中心最远的M个点
给定一个数组a[N],里面包含N个向量.现在要求进行删点操作,删点原则如下: 1.求出N个向量的中心O1,删除离O1最远的那个点 2.求出N-1个向量的中心O2,删除O2最远的那个点 ...... 重 ...
- SQL Server 2008 R2——创建函数 筛选出字符串中的数字 筛选出字符串中的非数字
=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ...
- 关于Edittext默认弹出软键盘为数字键
如果说我们只是输入数字的话,我们可以直接在xml文件中: android:inputType="number" 如果是身份证类型的话,我们可以这样: android:inputTy ...
随机推荐
- css之图片羽化处理
需求: 对图片做css羽化处理 实现: <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 让App中增加LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...
- Java复习1-基本数据类型
数据类型 整形 type 存储 取值范围 int 4字节 -2 147 483 648 ~ 2 147 483 647 (超过20亿) short 2字节 -32 768 ~ 32 7677 long ...
- Spark简介及其在ubuntu下的安装使用
转:http://blog.csdn.net/pelick/article/details/9888311 Spark概述 Spark是一种与 Hadoop 相似的开源集群计算环境,在性能和迭代计算上 ...
- LeetCode 292 Nim Game(Nim游戏)
翻译 你正在和你的朋友们玩以下这个Nim游戏:桌子上有一堆石头.每次你从中去掉1-3个.谁消除掉最后一个石头即为赢家.你在取出石头的第一轮. 你们中的每个人都有着聪明的头脑和绝佳的策略.写一个函数来确 ...
- CMake can't find GLEW
Q: I'm on Windows and there is a FindGLEW.cmake file in my CMake modules folder, presumably put th ...
- dubbo 提示No such extension Filter for filter/com.alibaba.dubbo.rpc.Filter
配置时 <dubbo:provider filter="DubboExceptionFilter"></dubbo:provider> DubboExcep ...
- ckeditor 4.2.1_演示 ckeditor 上传&插入图片
本文内容 FineUI ckeditor fckeditor/ckeditor 演示 ckeditor 4.2.1 上传&插入图片 最近看了一下 FineUI_v3.3.1 控件,对里边的 c ...
- 带你走进EJB--将EJB发布为Webservice(3)
在上面文章中我们讲到,通过使用用JBoss5作为EJB容器的时候,调用Web服务出现了异常. 异常信息如下: *********************** CreateWeb Service Cli ...
- Spark GraphX实例(1)
Spark GraphX是一个分布式的图处理框架.社交网络中,用户与用户之间会存在错综复杂的联系,如微信.QQ.微博的用户之间的好友.关注等关系,构成了一张巨大的图,单机无法处理,只能使用分布式图处理 ...