精华内容
下载资源
问答
  • 之前弄明白了信息熵是什么,由于信息熵来源于信息论,要怎么才能跟编码联系起来呢?这个问题当时没有想明白,今天查了一下资料,理解了一下,做笔记整理一下,如有错误欢迎指正。如果信息熵不明白的请看这里:...

           之前弄明白了信息熵是什么,由于信息熵来源于信息论,要怎么才能跟编码联系起来呢?这个问题当时没有想明白,今天查了一下资料,理解了一下,做笔记整理一下,如有错误欢迎指正。

    如果信息熵不明白的请看这里:http://blog.csdn.net/hearthougan/article/details/76192381

    首先给出结果:

    最短的平均编码长度 = 信源的不确定程度 / 传输的表达能力。

    其中信源的不确定程度,用信源的熵来表示,又称之为被表达者,传输的表达能力,称之为表达者表达能力,如果传输时有两种可能,那表达能力就是,如果是传输时有三种可能,那表达能力就是。以例子来描述,尽量做到通俗易懂。


    例1:昨天小明错过一场有8匹赛马的比赛,编号为1~8号,每匹马赢的概率都一样,那么作为朋友的你要把获胜马的编号发送给他,那么你该怎么做?

    方法一:直接发送马的编号,这样描述一匹马需要3比特(000,001,010,011,100,101,110,111)。

    方法二:利用数据结构中的Huffman编码,如下:


    建立Huffman树:


    由上图可知,当等概率的时候,发送信息仍至少需要3比特。

    被表达者:直接根据概率求熵即可,1/8×log8 * 8 = 3比特。

    表达者:由图可以看出来Huffman树是一颗二叉树,要么是0,要么是1,所以表达能力就是log2.

    平均编码长度 = 3/log2 = 3比特,注意其中的log 都是以2为底的。


    例2:昨天小明错过一场有8匹赛马的比赛,编号为1~8号,1~8号获胜的概率分别为{1/2、1/4、 1/8、 1/16、 1/64、 1/64、 1/64、 1/64},那么作为朋友的你要把获胜马的编号发送给他,那么你该怎么做?

    方法一:仍然直接发送马的编号,这样描述一匹马需要3比特(000,001,010,011,100,101,110,111)。

    方法二:利用数据结构中的Huffman编码,如下:


    建立Huffman树:


    由于概率不相等,则根据Huffman树可知平均编码为:(1 × 1/2 + 2 × 1/4 + 3 × 1/8 + 4 × 1/16 + 6 × 1/64 + 6 × 1/64 + 6 × 1/64 + 6 × 1/64) = 2比特,当概率不相等的时候,发送的平均长度为2比特。

    由上图可知:

    被表达者(不确定程度):


    表达者:由图可以看出来Huffman树是一颗二叉树,要么是0,要么是1,所以表达能力就是log2.

    平均编码长度:2/log2 = 2比特。


    例3:假设有5个硬币:1,2,3,4,5,其中一个是假的,比其他的硬币轻。有一个天平,天平每次能比较两堆硬币,得出的结果可能是以下三种之一:
    左边比右边轻
    右边比左边轻
    两边同样重
    问:至少要使用天平多少次才能保证找到假硬币?

    答案:是2次,

    方法一:可作出如下图的抉择:


    所以至少称重2次,才可以确保找出。

    方法二:

    设X表示硬币,Y表示天平,则,X的取值可以是5枚硬币中的任意一枚,每个硬币的概率都是1/5,那么随机变量X的不确定程度就是:

    H(X) = 1/5×log5 + 1/5×log5 + 1/5×log5 + 1/5×log5 +1/5×log5 = log5

    Y表示天平,A、B两个硬币放在天平,有三种情况:A < B, A > B, A = B。也就是说Y的表达能力就是log3.因此:

    平均编码长度: log5 / log3 = 1.46;换算成次数,也就是至少2次可以确保找到假硬币!


    例4、假设有5个硬币:1,2,3,…5,其中一个是假的,比其他的硬币轻。已知第一个硬币是假硬币的概率是三分之一;第二个硬币是假硬币的概率也是三分之一,其他硬币是假硬币的概率都是九分之一。
    有一个天平,天平每次能比较两堆硬币,得出的结果可能是以下三种之一:
    左边比右边轻
    右边比左边轻
    两边同样重
    假设使用天平n次找到假硬币。问n的期望值至少是多少?

    方法一:同样利用Huffman编码的思想,得出下图:


           由上图可以知道,至少称重2次才可以找到假硬币,这一题与上一题的差别就是,是每一枚硬币的可能性都不一样,所以先比较概率最大的两枚1,2,找到假币的概率占了2/3,如果不在1 、2中,那么从3~5中随便取出两枚硬币,(上图选取的是3 、4两枚硬币)再称一次,就可以找打假硬币!


    方法二:

    设X表示硬币,Y表示天平,则,X的取值可以是5枚硬币中的任意一枚,每个硬币的概率分别是{1/3,1/3,1/9,1/9,1/9},那么随机变量X的不确定程度就是:

    H(X) = 1/3 * log3 + 1/3 * log3 + 1/9 *log9 + 1/9 *log9 + 1/9 *log9 = 4/3 *log3;

    天平的表达能力同样还是log3;

    则平均编码长度:4/3×log 3 / log 3 = 4/3,所以还是需要称重两次。

    总结:

    由上面4个例子,可以知道很清楚的知道,最短的平均编码长度(也就是我们猜的次数,称重的次数),是由随机变量的熵,除以,表达能力的,得到!

    展开全文
  • 光为什么可以复数表示

    千次阅读 2014-10-12 16:28:28
    光波可以表示成: y=Acos[2π(vt-x/λ)]-----(1) 也可以表示成: y=Aexp[2πi(vt-x/λ)]-------(2) ...1.对于干涉衍射理论是在足够长时间平均下的相长相消理论,因而虚部(表示位相)就显得多么地重要,
    光波可以表示成: y=Acos[2π(vt-x/λ)]-----(1)
    也可以表示成: y=Aexp[2πi(vt-x/λ)]-------(2)

    “在线性光学中,虚部没有意义。在非线性光学中,要写成两个共轭E指数复数的和。”

    其实在线性光学中 虚部并非没有意义,主要还是看研究对象的状况
    1.对于干涉衍射理论是在足够长时间平均下的相长相消理论,因而虚部(表示位相)就显得多么地重要,我们就很难仅仅用实部来描述
    傅立叶光学中衍射角谱理论部分,将衍射看成是固有的低通滤波过程,即尺寸小于传输光波波长的细节将不能被光波携带到输出平面,能得出这一结论正好是利用虚部的运算而得出衰减项的
    还有就是,光波入射金属表面或以全反射状态入射一般介质时,倏逝波的产生也和虚部密切相关

    2.在非线性光学中,主要研究的对象是光强足够引起介质的非线性,因而突出光强是必须的,所以非线性极化矢量用(1)表示,但是为了计算方便,就用两个共轭复指数之和表示


    其实两种情况可以用不同的光波的表达式,主要是由于它们都是 麦克斯韦方程组的本征函数,都满足麦氏方程,这才是根本的 。形式虽然不同,而且不同形式对处理不同问题会有很打差别,但对于特定的光波,它的物理特性只有一种,只要两种描述中,确定光波的性质的参量相同即可。
    展开全文
  • 什么不用数组表示一切? 仅使用数组似乎就可以完成所有工作,为什么不用它们来进行所有的数据存储呢?我们已经见到了许多关于数组的缺点。在一个无序数组中可以很快进行插入(o(1)时间),但是查找却要花费较慢的o(N)...
    为什么不用数组表示一切?
        仅使用数组似乎就可以完成所有工作,为什么不用它们来进行所有的数据存储呢?我们已经见
    到了许多关于数组的缺点。在一个无序数组中可以很快进行插入(o(1)时间),但是查找却要花费较慢的o(N)时间。在一个有序数组中可以查找得很快,用o(logN)的时间,但插入却花费了o(N)时间。对于这两种数组而言,由于平均半数的数据项为了填补“空洞”必须移动,所以删除操作平均需要o(N)时间。
        如果有一种数据结构进行任何如插入、删除和查找的操作都很快(理想的o(1)或是o(logN)时
    间)那就好了。以后可以见到我们离这种理想是多么近,但是这是以程序的复杂度做为代价的。
        数组的另一个问题便是它们被new创建后,大小尺寸就被固定住了。但通常在开始设计程序时
    并不知道会有多少数据项将被放入数组中,所以需要猜它的大小。如果猜的数过大,会使数组中
    的某些单元永远不会被填充而浪费空间。如果猜得过小,会发生数组的溢出,最好的情况下会向程
    序的用户发出警告消息,最坏的情况则会导致程序崩溃, 有些更加灵活的数据结构可以随插入数据项而扩展大小。链表就足这样的结构。
        Java命有一个被称作vector的类使用起来很像数组,但是它可以扩展。这些附加的功能是以
    效率作为代价的。有人可能想尝试创建自己的向量(vector)类。当类用户使用类中的内部数组将要溢出时.插入算法创建一个大—点的数组,把旧数组中的内容复制到新数组,然后再插入新数据项,整个过程对于类用户来说是不可见的。
    展开全文
  • 假设有2000w个点击,每个点击平均1元,我们小学数学计算就...如果我们float存储数据,float可以表示的数据范围−2128-2^{128}−2128到 21282^{128}2128,看起来绝对够啊!那让我们写个程序测试下。 public st...

    现在假设你负责一个广告公司的结算系统,你需要统计下月度点击收入,生成一个月度报告。假设有2000w个点击,每个点击平均1元,我们用小学数学计算就知道总收入是2000w。但是我们用计算机累加就会出问题了。如果我们用float存储数据,float可以表示的数据范围2128-2^{128}21282^{128},看起来绝对够啊!那让我们写个程序测试下。

        public static void main(String[] args) {
            int N = 20000000;
            float sum = 0.0;
            float price = 1.0f;
            for (int i = 0; i < N; i++) {
                sum += price;
            }
            System.out.println("sum is " + sum);
        }
    
    1.6777216E7
    

    在这里插入图片描述
    What?输出应该是2000w的,但为什么少了3222784.0,如果在生成环境中,这意味着我们的钱凭空消失了3222784.0!why?

    这其实是float累加过程中精度丢失导致的,要理解这点我们首先要理解什么是浮点数。首先我们了解数在计算机中是如何表示的,因为计算机只能理解0和1两个数,所以一切信息都是用二进制表示的。如何保存更多的信息就是计算机设计者面临的挑战。

    在各个编程语言中的int都有4个字节32位,32位二进制最多有2322^{32}种状态,也就是意味着最多能表示2322^{32}个数,但这里还需要流出1位做为符号位来标识正负。所以能标识的最大数是2147483647(01111111111111111111111111111111),最小数是-2147483647(11111111111111111111111111111111),这个时候其实0有两个,一个+0,一个-0,两个表示的意义其实是一样的,我们干脆用-0代表最小数-2147483648。所以最终int的表示范围就是-2147483648~2147483647了,这就是定点数,它只能用来表示整数。
      
    如何表示小数?小数的特点是小数点前后的位数是不固定的,这个小数点是浮动的,这就是浮点数这个名词的由来。为了表示浮点数,我们可以把一个数拆分成两个部分,数值部分和指数部分,比如11.16可以表示为1116乘以10210^{-2} ,0.1表示为1乘以10110^{-1}。没错,在计算机中也是这么做的,只不过用的是2进制而已。
      
    float使用了4个字节来存储数据,总共32位,最高位作为符号位,最高2-9位作为指数位,最后的23位才作为有效数位。注意,23位之前有个1被省略掉了,所以他的有效位其实是24位,float所能表示的有效数值只有2242^{24},大概8位数,因此它不能标识超过8位的有效数字,否则会丢失精度,这就是浮点数美丽的表象。https://www.h-schmidt.net/FloatConverter/IEEE754.html 这里可以可视化float数值的二进制表示,方便你理解float。
      
    让我们继续来看为什么上面的代码会少数据。这就得先理解浮点数的加法是怎么做的。当两个float数相加时,计算机首先会对齐两个数的指数位,向指数位比较大的一个靠拢,这时候比较小的float数的有效数位就要右移。如果其中一个的数的指数位太大,就有可能让指数位比较小的数的有效数一直右移,甚至变成0。
      
    上面的代码一直+1,当sum大于16777216之后,1.0为了和sum的指数位对其,它的有效数会右移动24次,上面说到float的有效数只有24位,所以它会完全变成0。所以上面sum大于16777216之后它再加1也相当于+0。
    在这里插入图片描述
    如果我们换做double类型呢?这次没有出现精度损失。但并不意外这就不会出现精度损失,double比float有更多的精确位,但也不是无限的,在数据非常大时也会丢失精度。在金融行业,即便是非常非常小的精度损失,也会让客户对你失去信任,所以要保证100%的精度。

    如何保证? 有个叫Kahan Summation算法,可以保证不会出现精度损失,代码如下,测试确实不会损失精度。

    public class KahanSummation {
      public static void main(String[] args) {
        int N = 20000000;
        float sum = 0.0f;
        float c = 0.0f;
        for (int i = 0; i < N; i++) {
        	float x = 1.0f;
        	float y = x - c;
        	float t = sum + y;
        	c = (t-sum)-y;
        	sum = t;    	
        }
        System.out.println("sum is " + sum);   
      }	
    }
    

    这个算法虽然好用,但看起来很复杂,所以在实际使用中很少使用。因为有更简单的方法。当然,从古至今解决问题最好最彻底的方式就是避免问题的发生。我们直接不使用浮点型,而是转而用long。用最小的货币单位分来计量,long的取值范围是-9223372036854775808~9223372036854775807,绝对够用了。

    本文参考了大量极客时间《深入理解计算机组成原理》的内容,所以贴个广告,有兴趣可以一起学习。
    在这里插入图片描述

    展开全文
  • Linux系统平均负载3个数字的含义

    千次阅读 2013-02-26 10:27:52
    但是它并不像我们习惯中Windows、Mac操作系统提供百分比显示CPU、内存占用率,而是以几个空格隔开的浮点数来表示系统平均负载,那么它们到底是什么意思呢?又如何衡量系统负载及系统
  • 它们分别表示,系统当前时间,系统当前状态,系统运行时间,正在登录用户数,过去1分钟的平均负载,过去5分钟的平均负载,过去16分钟的平均负载 什么平均负载 我们可以man uptime来查看uptime的相关文档,但是当...
  • 但是它并不像我们习惯中Windows、Mac操作系统提供百分比显示CPU、内存占用率,而是以几个空格隔开的浮点数来表示系统平均负载,那么它们到底是什么意思呢?又...
  • 基于平均背景法的背景提取。 首先我们得明白,一幅图像中什么属于背景什么属于前景。我们简单的可以这么理解,前景一般是会动的物体,而背景一般是不会动的物体。我们可以以此为依据,从而...可以以下公式来表示...
  • 在变分推断中,样本点XXX被称为观测变量(observed data),未知参数和潜变量被称为不可观测变量,都ZZZ来表示。 我们的模型一般都是根据观测数据来求ZZZ的后验分布,也就是求P(Z∣X)P(Z|X)P(Z∣X),但是有的时候...
  • 今天的题,要求只能我规定的四个变量来做,n表示n个学生,a表示每个学生的成绩,i用来控制循环,s表示总分,这样平均分就是s/n (保留一位小数)。这道题每一部分大家都知道是什么意思,组合起来看能不能做出来。...
  • 表示围起区域内每块地包含的牛的数量的平均值可能的最大值乘以1000得到的数值。 数据范围 1≤N≤100000 1≤F≤N  样例 <p><br /> 10 6 6  4 2 10 3 8 5...
  • 或者说图像是客观对象的一种表示,它包含 了被描述对象的有关信息。它是人们最主要的信息源。 (2)按图像空间坐标和亮度(或色彩)的连续性可分为模拟图像和数字图像。模拟图像指空间坐标和亮度(或色彩)都是连续变化的...
  • 什么是交叉熵

    2018-03-16 22:17:54
    如果使用错误分布q来表示来自真实分布p的平均编码长度,则应该是:H(p,q)=。因为q来编码的样本来自分布p,所以期望H(p,q)中概率是p(i)。H(p,q)我们称之为“交叉熵”。比如含有4个字母(A,B,...
  • 一个差分信号是一个数值来表示两个物理量之间的差异。从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里,系统'地'被用作电压基准点。当'地'当作电压测量基准时...
  • 每一个客户要办理的款额也是随机确定的,负值和正值分别表示第一类和第二类业务。变量total,closetime以及上述两个随机量的上下界均交互地从终端读入,作为模拟参数。 两个队列和一个事件表均要动态存储结构...
  • 我们一个方法对差分信号做一下比喻,差分信号就好比是跷跷板上的两个人,当一个人被跷上去的时候,另一个人被跷下来了 - 但是他们的平均位置是不变的。继续跷跷板的类推,正值可以表示左边的人比右边的人高,而...
  • 条码是由一组按一定编码规则排列的条、空符号,表示一定的字符、数字及符号组成的信息。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。 条码是迄今为止最经济、实用的一种自动识别技术。条码...
  • 第2章 C语言的基本数据类型本章要点了解C语言的数据类型,掌握基本数据类型的应用及其相互转换规则,理解变量和常量的概念,并掌握其定义及引用...班级学生的平均成绩要小数表示;学生的姓名、性别要字符来表...
  • LoadRunner中的90%响应时间是什么

    千次阅读 2011-07-02 23:13:39
    LoadRunner中的90%响应时间是什么意思?这个值在进行性能分析时有什么作用?本文争取最简洁的文字来...你可以试着想想,是否平均事务响应时间满足了性能需求就表示系统的性能已经满足了绝大多数用户的要求?假如有
  • 一个差分信号是一个数值来表示两个物理量之间的差异。从严格意义上来讲,所有电压信号都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里,系统'地'被用作电压基准点。当'地'当作电压测量基准时...
  • <div><p>比如,句子的向量表示为每个词的vector取平均,然后cos 或者softcos、WMD之类?</p><p>该提问来源于开源项目:chatopera/Synonyms</p></div>
  • 什么是最小二乘法?

    千次阅读 2018-12-18 13:49:47
    答:(最小二乘法的一个最简单的例子便是...函数表示为: 使误差平方和达到最小以寻求估计值的方法,就叫做最小二乘法,最小二乘法得到的估计,叫做最小二乘估计。当然,取平方和作为目标函数只是众多可取的方...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 326
精华内容 130
关键字:

平均用什么表示