从零开始体验数据结构与算法之美(1)- 基础数学知识

2017给自己列了几项任务,其中之一就是重新学习数据结构,从本文开始的一系列文章,都是自己研读《数据结构与算法分析 第二版》的学习心得,其中一定会有偏颇甚至浅陋之处,随时欢迎提出指正,谢谢!

基础数学知识主要用到了指数、对数、级数以及证明方法,内容比较枯燥,我自己写的也很痛苦,但这些知识总归是有用的,在学习数据结构与算法时也是必要的,所以自己还是硬着头皮啃完了。这其中好多公式都是高中的知识(理科),曾经是信手拈来,现在好多公式和定理自己都在纸上推导了半天,有些唏嘘……好了,不废话了,下面上干货,确实很干,干的嘴皮都破了……

用到的网站:数学公式编辑器

一、指数

公式





  1. ![](http://latex.codecogs.com/svg.latex?{N}+X{N}=2X^{N}\neq X^{2N})

二、对数

1.定义

如果X的A次幂为B,则称A为以X为底B的对数
在计算机科学中,如果没有特别声明,则对数一般以2为底

2.定理


  1. ![](http://latex.codecogs.com/svg.latex?log_{A}B=\frac{log_{C}B}{log_{C}A}; A,B,C > 0, A\neq1,C\neq1)


  2. ![](http://latex.codecogs.com/svg.latex?logAB={logA}+{logB}; A,B > 0)

三、级数

公式




  1. ![](http://latex.codecogs.com/svg.latex?\sum_{i=1}^{N}i=\frac{N(N+1)}{2}\approx \frac{N^{2}}{2})


  2. ![](http://latex.codecogs.com/svg.latex?\sum_{i=0}{N}i2=\frac{N(N+1)(2N+1)}{6}\approx \frac{N^{3}}{3})


  3. ![](http://latex.codecogs.com/svg.latex?\sum_{i=0}{N}ik\approx \frac{N^{k+1}}{|k+1|}, k\neq-1)

当k=-1时,此公式不成立。此时我们需要下面的公式,数Hn叫做调和数,这个和叫做调和和。这个近似式中的误差趋向于0.57721566,被称为欧拉常数γ。
![](http://latex.codecogs.com/svg.latex?H_N=\sum_{i=1}^{N}\frac{1}{i}\approx log_eN)

四、模运算

定义

如果N整除A-B,那么就说A与B模N同余,记为
![](http://latex.codecogs.com/svg.latex?A\equiv B(mod N))
直观的看,就是说无论A还是B被N去除,所得余数都是相同的。

翻译一下:大家知道,在数学中,A/B被叫做:A被B除,或者B除A。那么N整除A-B就意味着A%N = B%N,例如

![](http://latex.codecogs.com/svg.latex?81\equiv 31\equiv 1(mod 10))

五、证明方法

  1. 归纳法

    由归纳法进行的证明有两个标准部分。第一步是证明基准情形,就是确定定理对于某个(某些)小的值的正确性;这一步几乎总是很简单。接着进行归纳假设。一般来说,它指的是假设定理对直到某个有限数k的所有的情况都是成立的。然后使用这个假设证明定理对下一个值(通常是k+1)也是成立的。至此定理得证(在k是有限的情形下)

    现在我们证明一下级数中的公式4
    ![](http://latex.codecogs.com/svg.latex?\sum_{i=0}{N}i2=\frac{N(N+1)(2N+1)}{6};N\geqslant 1)

    首先对于基准情形,我们容易看到,当N=1时是成立的。然后假设定理对1<= k<=N成立,然后我们来证明该假设成立的情况下,对于N+1也是成立的。我们有

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=\sum _{i=1}Ni2+(N+1)^2)

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=\frac{N(N+1)(2N+1)}{6}+(N+1)^2)

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=(N+1)[\frac{N(2N+1)}{6}+(N+1)])

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=(N+1)\frac{2N^2+7N+6}{6})

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=\frac{(N+1)(N+2)(2N+3)}{6})

![](http://latex.codecogs.com/svg.latex?\sum _{i=1}{N+1}i2=\frac{(N+1)[(N+1)+1][2(N+1)+1]}{6})

定理得证

  1. 反例法

    举出一个反例即可。

  2. 反证法

    反证法证明是通过假设定理不成立,然后证明该假设导致某个已知的性质不成立,从而原假设是错误的。

    一个经典的例子是证明存在无穷多个素数。为了证明这个结论,我们假设定理不成立。于是,存在某个最大的素数Pk。令P1,P2,…,Pk是依次排列的所有素数并考虑


显然,N是比Pk大的数,根据假设N不是素数,因为Pk是最大的素数。可是,P1,P2,…,Pk都不能整除N,因为除得的结果总有余数1。这就产生一个矛盾,因为每一个整数或者是素数,或者是素数的乘积。因此,Pk是最大素数的原假设是不成立的,所以定理成立。

你可能感兴趣的:(从零开始体验数据结构与算法之美(1)- 基础数学知识)