算法中的数学
Posted codeg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法中的数学相关的知识,希望对你有一定的参考价值。
A、数学:
1、高斯消元法:
概念:数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。但其算法十分复杂,不常用于加减消元法,求出矩阵的秩,以及求出可逆方阵的逆矩阵。不过,如果有过百万条等式时,这个算法会十分省时。一些极大的方程组通常会用迭代法以及花式消元来解决。当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。高斯消元法可以用在电脑中来解决数千条等式及未知数。亦有一些方法特地用来解决一些有特别排列的系数的方程组。
模板:
kunagbin:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html
2、概率问题:熟知原理,明确过程即可。
3、GCD问题(最大公约数):
主要使用辗转相除法,辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。
1 #include<stdio.h> 2 3 int GCD(int a,int b) 4 { 5 return a%b?GCD(b,a%b):b; 6 } 7 8 int main() 9 { 10 int x,y; 11 scanf("%d%d",&x,&y); 12 printf("%d",GCD(x,y)); 13 return 0; 14 }
B、组合数学:
1、加法原理:类类独立;乘法原理:步步相关。
2、排列组合:http://www.cnblogs.com/PegasusWang/archive/2013/01/22/2872312.html
3、递推关系:http://www.cnblogs.com/skyme/p/3541863.html
4、MoBius反演:百度百科
5、偏序关系:离散数学知识。
6、容斥原理:百度百科
7、抽屉原理(鸽巢原理):百度百科
8、置换群:百度百科
9、Polya定理:http://blog.csdn.net/xuzengqiang/article/details/7476671
当前对自己来说有些难,等把《组合数学》看了再来补充。
C、数论:
1、素数与整除问题:熟知概念即可。
2、进制位:掌握进制间的转换
3、同余模运算: 在这里我们介绍以下三个公式:
(a+b)mod n = ((a mod n)+ (b mod n))mod n;
(a-b) mod n = ((a mod n )- (b mod n)+n)mod n;
ab mod n = (a mod n) (b mod n) mod n
注意,在减法中,由于a mod n 可能小于b mod n,需要在结果上加上n,而在乘法中,需要注意a mod n 和 b mod n相乘是否会溢出,因此这里要注意用long 型保存中间结果。
D、博弈论:
1、极大极小过程:主要用在棋类的使用上,具体可参考以下博客:
极大极小值算法:http://blog.csdn.net/weirenren_027/article/details/10282719
极大极小搜索方法:http://blog.csdn.net/kingkong1024/article/details/7639401
2、Nim问题:
博弈论经典问题,Nim游戏是一个典型的组合游戏问题,很多游戏问题都可以规约到Nim游戏问题。Nim游戏问题是一个ICG(Impartial Combinatorial Games)问题;
ICG问题的特征是:
1.两个人参与,交替走棋;
2.可能的走法在一个有限的集合里选取;
3.游戏局面无后效性,未来与过去无关;
4.如果某选手无法走动,则判负;
Nim的理论
游戏状态只分两种:当前先手必胜,当前先手必败;前者称为N位置,后者称为P位置;
更为严谨的定义是:
终止状态是P位置;
能够移动到P位置的状态时N位置;
只能到N位置的状态时P位置;
Nim问题的解法:
所有堆的石子数目求异或;为0则是P位置;
证明:
1,终止状态所有位置都为0,是P位置;
2,对于一个异或为非0的N位置是能够移动到P位置的(这个还没有想明白……(~ o ~)~zZ);
3,异或为0的P位置只能移动到N位置,因为对其进行异或运算得到的只能是非0的;
E、随机化算法:
理解概念原理。。
以上是关于算法中的数学的主要内容,如果未能解决你的问题,请参考以下文章
Python代码中的数学之美:用牛顿逼近法计算2的算术平方根
Python代码中的数学之美:用牛顿逼近法计算2的算术平方根
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]