数据结构与算法 必备的离散数学与递归知识

一.指数

X A X B = X A + B X A X B = X A − B ( X A ) B = X A B X A + X A = 2 X A ≠ X 2 A 2 A + 2 A = 2 A + 1 X^AX^B=X^{A+B}\\\frac{X^A}{X^B}=X^{A-B}\\(X^A)^B=X^{AB}\\X^A+X^A=2X^A≠X^{2A}\\2^A+2^A=2^{A+1} XAXB=XA+BXBXA=XAB(XA)B=XABXA+XA=2XA=X2A2A+2A=2A+1

二.对数

在计算机科学中,除非有特别说明,所有对数都是以2为底数

1.定义:

当且仅当 l o g X B = A , X A = B log_XB=A,X^A=B logXB=A,XA=B

2.性质:

l o g A B = log ⁡ C B l o g C A   ( c > 0 ) log_AB=\frac{\log_CB}{log_CA}\,(c>0) logAB=logCAlogCB(c>0)
在这里插入图片描述
l o g A B = l o g A + l o g B logAB=logA+logB logAB=logA+logB
在这里插入图片描述
在这里插入图片描述
l o g A B = l o g A − l o g B l o g ( A B ) = B   l o g A l o g X < X   ( X > 0 ) l o g 1 = 0 , l o g 2 = 1 , l o g 1024 = 10 , l o g 1048576 = 20 log\frac{A}{B}=logA-logB\\log(A^B)=B\,logA\\logX<X\,(X>0)\\log1=0,log2=1,log1024=10,log1048576=20 logBA=logAlogBlog(AB)=BlogAlogX<X(X>0)log1=0,log2=1,log1024=10,log1048576=20

三.级数

1.等比级数(几何级数):
∑ i = 0 N A i = A N + 1 − 1 A − 1 \displaystyle\sum_{i=0}^NA^i=\frac{A^{N+1}-1}{A-1} i=0NAi=A1AN+11
如果 0 < A < 1 0<A<1 0<A<1,则 ∑ i = 0 N A i < 1 1 − A \displaystyle\sum_{i=0}^NA^i<\frac{1}{1-A} i=0NAi<1A1 lim ⁡ N → ∞ ∑ i = 0 N A i = 1 1 − A \displaystyle\lim_{N\to\infty}\displaystyle\sum_{i=0}^NA^i=\frac{1}{1-A} Nlimi=0NAi=1A1
特别地, ∑ i = 0 N 2 i = 2 N + 1 − 1 \displaystyle\sum_{i=0}^N2^i=2^{N+1}-1 i=0N2i=2N+11
在这里插入图片描述

2. ∑ i = 1 ∞ i 2 i = 2 \displaystyle\sum_{i=1}^\infty\frac{i}{2^i}=2 i=12ii=2
在这里插入图片描述
在这里插入图片描述

3.算术级数:

∑ i = 1 N i = N ( N + 1 ) 2 ≈ N 2 2 \displaystyle\sum_{i=1}^Ni=\frac{N(N+1)}{2}≈\frac{N^2}{2} i=1Ni=2N(N+1)2N2

3. ∑ i = 1 N i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 ≈ N 2 3 \displaystyle\sum_{i=1}^Ni^2=\frac{N(N+1)(2N+1)}{6}≈\frac{N^2}{3} i=1Ni2=6N(N+1)(2N+1)3N2

4. ∑ i = 1 N i k ≈ N k + 1 ∣ k + 1 ∣   ( k ≠ − 1 ) \displaystyle\sum_{i=1}^Ni^k≈\frac{N^{k+1}}{|k+1|}\,(k≠-1) i=1Nikk+1Nk+1(k=1)

5.调和级数:

H N = ∑ i = 1 N ≈ l n   N H_N=\displaystyle\sum_{i=1}^N≈ln\,N HN=i=1NlnN, H N H_N HN称为调和数
上述近似的误差趋近于 γ ≈ 0.57721566 γ≈0.57721566 γ0.57721566,称为"欧拉常数"(Euler’s Constant)

6. ∑ i = 1 N f ( N ) = N f ( N ) \displaystyle\sum_{i=1}^Nf(N)=Nf(N) i=1Nf(N)=Nf(N)

7. ∑ i = n 0 N f ( i ) = ∑ i = 1 N f ( i ) − ∑ i = 1 n 0 − 1 f ( i ) \displaystyle\sum_{i=n_0}^Nf(i)=\displaystyle\sum_{i=1}^Nf(i)-\displaystyle\sum_{i=1}^{n_0-1}f(i) i=n0Nf(i)=i=1Nf(i)i=1n01f(i)

四.模运算
1.定义:

如果 N N N可以整除 A − B A-B AB,则称 A A A B B B N N N同余(Congruent),记为 A ≡ B ( m o d   N ) A\equiv B(mod\,N) AB(modN)
直观地看,这意味着 A A A N N N B B B N N N的余数相同

2.性质:

A ≡ B ( m o d   N ) A\equiv B(mod\,N) AB(modN),则 A + C ≡ B + C ( m o d   N ) A+C\equiv B+C(mod\,N) A+CB+C(modN) A D ≡ B D ( m o d   N ) AD\equiv BD(mod\,N) ADBD(modN)

五.常用的证明方法
1.数学归纳法

2.构造反例

3.反证法

六.递归
1.递归的基本法则:

①基准情形(Base Case):必须存在某些基准情形不需要递归就能求解(通常是在某个较小的值下的解)
②不断推进(Making Progress):递归调用必须能朝着产生基准情形的方向推进
③设计法则(Design Rule):假设所有递归调用都能运行(不要试图追踪递归调用)
④合成效益法则(Compound Interest Rule):在求解同1个问题的同1个实例时,不要在不同的递归调用中做重复性的工作

2.示例: F ( 0 ) = 0 , F ( X ) = 2 F ( X − 1 ) + X 2 F(0)=0,F(X)=2F(X-1)+X^2 F(0)=0,F(X)=2F(X1)+X2

#include <stdio.h>

int F(int x) {
	if (x==0) {
		return 0;
	} else {
		return 2*F(x-1)+x*x;
	}
}

int main(void) {
	int x=5;
	printf("%d\n",F(x));//结果:141
	return 0;
}

法则4的1个反例: F ( 0 ) = F ( 1 ) = 1 , F ( N ) = F ( N − 1 ) + F ( N − 2 ) F(0)=F(1)=1,F(N)=F(N-1)+F(N-2) F(0)=F(1)=1,F(N)=F(N1)+F(N2)

Fib(int N) {
    if (N<=1) {
        return 1;
    } else {
        return Fib(N-1)+Fib(N-2);
        //Fib(N-2)在Fib(N-1)中已经被计算过,但又被重复计算了1次;F(N-i)类似(i>2)
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值