学习总结之《具体数学》

  《具体数学》是高德纳经典著作《计算机程序艺术》的数学预备知识部分的深化和拓展。

  我们先看一道题,

  一个娱乐场里面,有一个轮盘赌局,轮盘上有编号为1到1000的1000个槽。如果一次旋转小球落在的槽里的数字$n$满足$lfloorsqrt[3]{n} floor|n$,则娱乐场付给我们5元,否则我们损失一元。如果我们玩这个游戏,会不会有希望赢钱。

     其中$lfloorsqrt[3]{n} floor|n$表示$sqrt[3]{n}$的下取整能整除$n$,即$n$可以表示成$lfloorsqrt[3]{n} floor|n$的整数倍。

  一般此类有关输赢的问题,都是要回答两个问题:

  1. 我们赢钱的概率是多少?如果一件事赢的概率不大,那我们一般是不会去做的,就像别人精心设计的赌局一样,我们只有挨宰的份。不同风险偏好的人会对不同的概率会有不同的反应。这里涉及投资内容暂且不提。
  2. 假设我们玩了好多好多次,我们平均会赢多少钱,数学上的分析就是我们赢钱的期望是多少。这两个问题本质是一样的,知道赢钱的概率,也知道输钱的概率,那么加上输赢时的收益损失,就知道期望了,这只是简单的计算问题。

  用这样的思路思考这道题,就是要计算赢钱的概率和期望。假设1000个数出现的几率相等,那么获胜的概率就是1000个数里满足条件$lfloorsqrt[3]{n} floor|n$的个数$W$除以1000,可以得到计算期望的公式如下

$$frac{5W-(1000-W)}{1000}$$ 现在问题转化成求解从1到1000能满足$lfloorsqrt[3]{n} floor|n$的数字有多少个?

我们怎么计算呢?

如果n是个小的数,我们可以通过枚举很快的计算得到。但1000不算小。这个问题包含了这本书的几个知识点,答案$W=172$,具体解答放在下一篇文章里。

本书一共有九章内容,分别为:

  1. 递归问题
  2.  和
  3.  整函数
  4.  数论
  5.  二项系数
  6.  特殊数
  7.  母函数(又名生成函数)
  8.  离散概率
  9.  渐进(Asymptotics)

新技能:

一、Iverson notation( Iverson 标记)

  "Kenneth E.Iverson introduced a wonderful idea in his programming language APL, and we'll see that it greatly simplifies many of the things we want to do in this book. The idea is simply to enclose a true-or-false statement in brackets, and to say that the result is 1 if the statement is true, 0 if the statement is false. "

  上面的意思就是用[statement]来表示1和0,举个例子如下,

$$[P是素数]=
egin{cases}
0& ext{p is not prime}\
1& ext{P is prime}
end{cases}$$

       Iverson 标记可以在把(sum)的上下标中的条件给去掉,表示成更容易理解的形式(对Iversion标记熟悉后很方便)求和(sum)都可以写成如下的形式

                         (sum_k{a_k}[P(k)])

       如果P(k)为假则(a_k[P(k)])这一项为0,所以,以上的求和把所有满足条件的项都包含进去了。使用这样的标记方法,可以让我们更简单方便的操纵求和的上下标。  

   例如,所有的偶数求和常规的表示形式是$sum_{k}{2k},使用Iverson记法可以表示成 $$sum_{j=1}{k[k=2j]}$$

   在某些时候经过这样变换的指标让我们更加清晰的看清关系,书上的一个变换例子如下

原文首发于博客园 Hall Of FAME

地址

原文地址:https://www.cnblogs.com/celthi/p/4425922.html