算法学习 10.概率分治机器学习.pdf
《算法学习 10.概率分治机器学习.pdf》由会员分享,可在线阅读,更多相关《算法学习 10.概率分治机器学习.pdf(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、概率、分治、机器学习七月算法邹博2015年5月7日4月算法在线班2/动态规划总结相对于前面使用存储结构来划分章节:“数组”、“字符串”、“树”、“图”(它们是世界观),动态规划是方法论,是解决一大类问题的通用思路。事实上,前面章节论述的很多内容都可以归结为动态规划的思想。如:KMP中求next数组的过程:已知next0i-1,求nexti;何时可以考虑使用动态规划:初始规模下能够方便的得出结论空串、长度为0的数组、自身等能够得到问题规模增大导致的变化递推式状态转移方程事实上,动态规划还有“无后效性”的要求一旦计算得到了A0i-1,那么,计算Ai时只可能读取A0i-1,而不会更改它们的值过去发生
2、的,只能承认,不能改变;一旦计算得到了A0i-1,那么,计算Ai时只需要读取A0i-1的值即可,不需要事先知道Ai+1n-1的值未来的事情,完全未知。在实践中往往忽略无后效性这一要求:要么问题本身决定了它是成立的:格子取数问题;要么通过更改计算次序,可以达到该要求:矩阵连乘I问题。4月算法在线班3/卡塔兰数 Catalan n个矩阵连乘,可以分解成i个矩阵连乘和(n-i)个矩阵连乘,最后,再将这两个矩阵相乘。故:1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790
3、,477638700,1767263190,6564120420,24466267020,91482563640,343059613650,1289904147324,4861946401452 CnnnnP1221)()(11)()(1)(2/3114nnnknPnnknPkPnP4月算法在线班4/卡塔兰数 Catalan 有N个节点的二叉树共有多少种情形?一个栈(无穷大)的进栈序列为1,2,3,.n,有多少个不同的出栈序列?凸多边形三角化:将一个凸多边形划分成三角形区域的方法有多少种?由左而右扫描由n个1和n个0组成的2n位二进制数,要求在任何时刻,1的累计数不小于0的累计数。求满足这样条
4、件的二进制数的个数。CnnnnH2114月算法在线班5/计算机中的概率计算 伪随机数 选择方便获取的“随机”事件 读取当前系统时间?读取某经常变化的系统文件长度?数学公式 Hash杂凑?可以获得几乎和均匀分布性质相当的实践结果。4月算法在线班6/Code4月算法在线班7/辅助结构4月算法在线班8/产生二维随机数 给定区间ax,bxay,by,使得二维随机点(x,y)落在等概率落在区间的某个点上。分析:因为两个维度是独立的,分别生成两个随机数即可。4月算法在线班9/代码与效果4月算法在线班10/圆内均匀取点 给定定点O(x0,y0)和半径r,使得二维随机点(x,y)等概率落在圆内。分析 因为均匀
5、分布的数据是具有平移不变性,生成半径为r,定点为圆心的随机数(x1,y1),然后平移得到(x1+x0,y1+y0)即可。直接使用x=r*cos,y=r*sin是否可以呢?具体试验一下。4月算法在线班11/代码与效果4月算法在线班12/代码与效果 显然上述做法是不对的。但可以使用二维随机点的做法,若落在圆外,则重新生成点。结果如下。4月算法在线班13/代码与效果4月算法在线班14/思考 不是每次生成随机数都能退出该算法 有一定的接受率。请问:以多大的概率1次退出:接受率是多少?得到随机数的需要的平均次数(期望)是多少?这个做法简洁、有效,值得推荐;许多相关问题,往往可以如此解决。4月算法在线班1
6、5/例题 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10()随机110。4月算法在线班16/分析 因为rand7仅能返回17的数字,少于rand10的数目。因此,多调用一次,从而得到49种组合。超过10的整数倍部分,直接丢弃。4月算法在线班17/Code4月算法在线班18/圆内均匀取点的1次成功算法 问题分析:把随机点看做面积很小的区域,圆内均匀取点意味着随机点P的面积与圆的面积成正比。Sp=kS S=r2,与半径的平方成正比 从而,Sp(r)=kr2 将均匀生成的随机数x取平方根赋值给r;则Sp(r)即为均匀分布。同时,是与角度无关的,即:取均匀
7、分布的随机数作为旋转角即可。4月算法在线班19/代码与效果4月算法在线班20/三角形内的均匀点4月算法在线班21/实践效果4月算法在线班22/多边形内均匀取点 使用圆内取点的思想:计算多边形的外包围盒,生成外包围盒(矩形)内的二维点,若点在多边形内,则退出;否则,继续探测。将多边形剖分成三角形集合,然后调用三角形内均匀取点算法。按照面积为权重,选择某个三角形;生成该三角形内的随机点。思考:如何将多边形快速剖分成三角形?Delaunay三角剖分4月算法在线班23/思考题 若某函数rand()以概率p(p0.5)返回数字0,以概率1-p返回数字1,如何利用该函数返回等概率的0和1?4月算法在线班2
8、4/古典概型 将n个不同的球放入N(Nn)个盒子中,假设盒子容量无限,求事件A=每个盒子至多有1个球的概率。4月算法在线班25/解 基本事件总数:第1个球,有N种放法;第2个球,有N种放法;共:Nn种放法。每个盒子至多放1个球的事件数:第1个球,有N种放法;第2个球,有N-1种放法;第3个球,有N-2种放法;共:nNP1n-N2-N1-NN nnNNPAP4月算法在线班26/实际问题 某班上有50位同学,至少有2人生日相同的概率是多少?0.970.940.890.810.710.570.410.250.12P504540353025201510n4月算法在线班27/装箱问题 将12件正品和3件
9、次品随机装在3个箱子中。每箱中恰有1件次品的概率是多少?4月算法在线班28/解 将15件产品装入3个箱子,每箱装5件,共有15!/(5!5!5!)种装法;先把3件次品放入3个箱子,有3!种装法。对于这样的每一种装法,把其余12件产品装入3个箱子,每箱装4件,共有12!/(4!4!4!)种装法;P(A)=(3!*12!/(4!4!4!)/(15!/(5!5!5!)=25/914月算法在线班29/与组合数的关系 把n个物品分成k组,使得每组物品的个数分别为n1,n2nk,(n=n1+n2+nk),则不同的分组方法有种。上述问题的简化版本,即n个物品分成2组,第一组m个,第二组n-m个,则分组方法有
10、,即:。!321knnnnn!mnmnmnC4月算法在线班30/走棋盘 给定m*n的矩阵,从左上角开始行走,每次只能朝右和下走,走到右下角,求一共有多少种走法?4月算法在线班31/分析 数学公式:一共要走m+n2步,其中(m1)步向右,(n-1)步向下。即:在m+n2个步数中,选择m1个作为“右行”,即:题目的解为:令dp(x,y)为当前位于(x,y)时有多少种可行路径,则:dp(x,y)=dp(x-1,y)+dp(x,y-1)1212nnmmnmCCN4月算法在线班32/通过动态规划递推式,可以得到什么?mnmnmnxmtnxtxtxtyxtCCCCCCxtdpxtdpxtdpxyxdpxy
11、xdpxyxdpyxyxdpyxyxdpyxyxdpyxdpyxdpyxdp111,111,11,1,11,1,1,1,1,1,1,1,令换个表达方式令删除最后一维”增加“两个坐标值加和4月算法在线班33/分治法 给定实数x和整数n,求xn。分析:令pow(x,n)=xn,如果能够求出y=pow(x,n/2),只需要返回y*y即可,节省一半的时间。因此,可以递归下去。时间复杂度O(NlogN)需要考虑的:如果n是奇数呢?如果n是负数呢?4月算法在线班34/Code4月算法在线班35/矩阵的乘法 A为ms阶的矩阵,B为sn阶的矩阵,那么,C=AB是mn阶的矩阵,其中,根据定义来计算 C=AB,需
12、要m*n*s次乘法。即:若A、B都是n阶方阵,C的计算时间复杂度为O(n3)问:可否设计更快的算法?skkjikijbac14月算法在线班36/分治 矩阵分块 按照定义:计算n/2阶矩阵的乘积:O(n3/8)这里需要计算8个:总时间复杂度:O(n3)没有任何效果。222112112221121122211211CCCCBBBBAAAA2222122122212211212122121211122112111111BABACBABACBABACBABAC4月算法在线班37/Strassen矩阵乘法:由8到7 目标2222122122212211212122121211122112111111BA
13、BACBABACBABACBABAC222122121211112122121111212222121111222122112211BBAAVBBAAUBAATBBASBBARBAAQBBAAPUQSPCSQCTRCVTSPC222112114月算法在线班38/说明 时间复杂度降为O(nlog7)=O(n2.81)理论意义:由定义出发直接得出的算法未必是最好的。Hopcroft与Kerr已经证明,两个22矩阵相乘必须要用7次乘法,如果需要进一步改进,应考虑33、44或者更高阶数的分块子矩阵或者采用其他设计策略。当n很大时,实际效果比直接定义求解的O(n3)好。根据矩阵乘法的定义可知,Cij只与
14、A的第i行、B的第j列相关,在实践中若遇到大矩阵,应考虑并行计算。skkjikijbac14月算法在线班39/思考 将矩阵分治乘法的思想,用于两个大整数的乘法呢?根据定义,两个大整数A、B相乘,应该遍历B从低到高的数字,依次与大整数A相乘,最后将这些值相加。时间复杂度O(n2)。可否将A、B写成两个规模小一半的整数A1,A2,B1,B2,然后计算它们的积呢?4月算法在线班40/大整数乘法 取大整数x和y的长度较大者的一般,记为k,则有:计算长度为n/2的两个数的积,需要乘法次数为O(n2/4),而上面的式子需要4次乘法,总时间复杂度为O(n2),没有效果。因此,需要考虑改进。001001211
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法学习 10.概率分治机器学习 算法 学习 10. 概率 分治 机器
限制150内