数据结构与算法分析笔记-前置知识
背景
这部分内容是我学习 数据结构与算法分析 java语言描述的学习笔记,希望对大家有帮助。
数学知识复习
指数相关
-
XAXB=XA+B
-
$ \frac{XA}{XB} $=XA-B
-
(XA)B = XAB
-
XN + XN= 2XN
-
2N + 2N = 2N+1
对数相关
- logA B = $ \frac{logc B}{logc A} $
- log AB = log A + log B
- log A/B = log A - log B
- log AB =B(log A)
级数相关
几何级数
- $ \sum_{i=0}{N}{2i} $ = 2N+1 -1
- $ \sum_{i=0}{N}{Ai} $ = AN+1-1/(A-1)
- 若 0$ \leq$ A $\leq$ 1, $ \sum_{i=0}{N}{Ai} $ $\leq$ $ \frac{1}{1-A} $
算数级数
- $ \sum_{i=0}^{N}{i} $ = $ \frac{N(N+1)}{2} $
- $ \sum_{i=0}{N}{i2} $ = $ \frac{N(N+1)(2N+1)}{6} $
模运算
- 如果A模N和B模N可以得到相同的余数,这样表示:A $ \equiv $ B (mod N)
- 如果有 A $ \equiv $ B (mod N)
- A + C $\equiv$ B + C (mod N)
- AD $\equiv$ BD (mod N)
证明方法
归纳法证明
归纳法证明可以分下面几步:
- 基准证明:确定定理对于小的值的正确性
- 归纳假设:假设定理对于某个有限数k是成立的
- 使用归纳假设的定理,证明对k+1也是成立的
由此定理得证
例子:证明斐波那契数列,对于i $\geq$ 1,都有Fi < (5/3)i 成立
下面按照上面学习的步骤来证明
基准假设:对于i=1,i=2,都有F1 = 1 < (5/3)1 和 都有F2 = 2 < (5/3)2 成立
归纳假设:假设对于有限数k,都有Fk < (5/3) K成立
最后证明:
已知Fk+1 = Fk + Fk-1 ,代入第二步的假设定理
最后化简 Fk+1 < (24/25)(5/3) k+1 < (5/3) k+1
反证法
反证法的证明过程:
- 先假设要证明的定理不成立
- 证明该假设导致某个已知的性质不成立
- 推断原假设是错误的。
例子:证明存在无穷多个素数。
下面按照上面的步骤证明
假设定理不成立,那么有最大的素数Pk,以构造一个自然数M,另M=P1P2P3...Pk+1
显然M不能够被P1P2...Pk整除,总会余1,由此可以推断
- 要么M是一个素数
- 要么M是一个合数,任意一个整数要么是素数,要么是素数的乘积,那么肯定有不在P1P2...Pk这个集合外的素数存在,使得M可以被那个素数整除
和已知假设矛盾,所以可以得证,存在无穷多个素数。