算法设计与分析基础考点.doc

上传人:美****子 文档编号:77538988 上传时间:2023-03-15 格式:DOC 页数:11 大小:39.50KB
返回 下载 相关 举报
算法设计与分析基础考点.doc_第1页
第1页 / 共11页
算法设计与分析基础考点.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《算法设计与分析基础考点.doc》由会员分享,可在线阅读,更多相关《算法设计与分析基础考点.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章 算法效率分析根底2.5 计算斐波那契数列的O(log n)算法:利用矩阵, 当 n = 1时, F(n-1), F(n); F(n), F(n+1) = 0,1; 1,1n其中的乘方运算使用霍纳法那么第三章 蛮力法凸包问题:链接任意两点,检查剩余的点是否都在连线的同侧。效率O(n3)分配问题:n个任务分配给n个人,其中将第j个任务分配给第i个人的本钱为Ci,j,找出本钱最小的分配方案。蛮力法:穷举n!种可能的方案。高效方法:匈牙利方法。第四章 分治法主定理:对于 T(n) = a T(n/b) + f(n), f(n)为 (nd)如果 a bd, T(n) = (n (log a/lo

2、g b)大整数乘法:a=a1a0, b=b1b0, 其中a与b都是n位整数,低n/2位为a0,b0, 高位为a1,b1需要三次n/2位的乘法即可完成 c = a*b = c2*102n + c1*10n + c0其中 c2=a1*b1, c0=a0*b0, c1=(a1+a0)*(b1+b0) - (c2+c0)T(n) = n(log3/log2)最近点对问题:找到平面上n个点中的最近距离。先画一条竖线,将所有的点分成左右两半,找到两局部的最近距离d1,d2, 然后考察竖线附近的点。凸包问题的快包算法类似于快速排序:首先过最左边的点P1与最右边的点Pn,将平面分成上下两局部。然后考察上半个平

3、面:找到距离直线P1Pn距离最远的点Pmax, 那么Pmax一定是凸包的顶点; 三角形P1PmaxPn内部的点一定不是凸包的顶点。然后只需分别考虑两侧的顶点即可。平均效率 O(n * log n)。由于三角形内部的点无须考虑,甚至可以到达线性效率。最差情况O(n2):剩下的点全都在同一侧。三角形面积的计算:三角形(x1,y1),(x2,y2),(x3,y3)的面积等于下面这个行列式的值的1/2x1,y1,1; x2,y2,1; x3,y3,1 = x1y2 + x2y3 + x3y1 - x3y2 - x2y1 - x1y3第五章 减治法插入排序:最差情况需要做(n-1)*n/2次比拟,但是平

4、均只需n2/2次比拟,因此胜过选择排序与冒泡排序。插入排序有一种扩展算法,叫做Shell排序。拓扑排序:算法1,通过深度优先搜索,将出栈顺序反过来即得到一个解。算法2,先找到一个只有出度没有入度的点,将这个点以及相关的边删除,重复此过程。生成排列:依次生成从1到n的所有排列。假设已经得到了n-1的所有排列,那么依次取出n-1的每一个排列,将n插入每一个位置。按这样的顺序插入更好:对于取出的第一个(n-1)排列,从右到左插入;第二个排列从左到右插入;第三个再从右到左.例子:依次生成1到3的所有排列开场: 1从右到左将2插入1:12, 21从右到左将3插入12:123, 132, 312从左到右将

5、3插入21:321,231,213依这种次序生成的排列满足最小变化要求:得到的两个相邻的排列的差异仅在于交换两个相邻的位置。生成排列:生成n的所有排列。可不可以不通过n-1排列,而直接生成n的排列,并满足最小变化要求呢? 通过Jhonson-Trotter算法:对每个元素赋予一个向左或向右的箭头。如果元素k指向一个相邻的较小的元素,那么称k为移动的#JhonsonTrotter(n)#初始序列1.n, 所有箭头均向左#while 存在一个移动元素 k do# 求最大的移动元素k# 把k与它指向的元素互换# 调转所有大于k的元素的方向# 输出新的排列此算法与上面的算法生成的顺序是一样的,且都不是

6、按字典序。生成子集:利用二进制。可否按这个顺序生成二进制串:使得两个相邻的二进制串只相差一个比特位。也就是在子集里面要么增加了一个元素,要么删除了一个元素。答案为“是,通过二进制反射格雷码。俄式乘法:原理如下,如果n是偶数,那么 n * m = (n/2) * (2m), 否那么 n*m = (n-1)/2 * 2m + m代码#对整数a与b相乘#result = 0#while(a 0) # if(a % 2 = 1) result += b; # a /= 2;# b *= 2;#特点:只涉及折半、加倍与相加操作,效率非常高。约瑟夫问题:n个人围成一圈,并且从1到n编上号码,从1号开场,每

7、隔一个杀掉一个,问最后剩下几号?记幸存者的号码为J(n),那么当n为偶数时,也就是n=2k,J(2k)=2J(k)-1当n=2k+1时 J(2k+1) = 2J(k)+1把n表示为二进制形式,并且做一次向左的循环移位,得到结果就是幸存者编号。比方n=6时,二进制为110,移位后得到101,也就是5号为幸存者。具体推导过程见?具体数学?插值查找:对有序数组进展查找。把数组看成是线性递增的,那么便可以直接定位到目标值附近。一般情况下,比折半查找要快。拈游戏:两人轮流取走桌面上的棋子,每次取1到m颗,取到最后一颗的获胜。升级版:桌面上有I堆棋子,棋子数分别为n1,n2,.ni。玩家每次可以从任意一堆

8、棋子中取走任意数量的棋子。取走最后一颗棋子的人获胜。对于I2的情况非常简单。略解法:将n1,n2,.ni表示为二进制的形式,b1,b2.bi,计算它们的二进制数位与,也就是对每一位分别求与并忽略进位。当且仅当二进制数位与中包含至少一个1时,先手获胜。先走的玩家只需保证剩下的棋子二进制数位与只包含0即可。 ?Winning Ways for your Mathematical Plays?这本书包含了各种数学游戏的解法。第6章 变治法预排序:用于以下场景,检验数组中元素的唯一性,查找数组中出现次数最多的元素,等等高斯消去法:将矩阵变成一个上三角阵,然后从最后一个方程开场,反向替换得到原方程的解。

9、为了减少舍入误差,每次选取第i列系数绝对值最大的行,并且与当前行交换。LU分解:高斯消去法得到的上三角阵为U,在消去过程中行的乘数构成了下三角阵L假设不存在行交换的情况下。比方,在消去第i列的时候,把第i行乘以a加到第j行上,那么Uji = -a。如果存在行交换的话,那么L也要做相应的交换。可以证明 A=LU那么方程组Ax=b就等价于 LUx=b。假设y=Ux,那么Ly=b,因为L是下三角阵,所以容易求出y。Ux=y,所以也容易求出x。优点:只需做一次LU分解,然后对所有的b都可以求解。计算矩阵的逆:AX=I假设逆矩阵的第j列为Xj, I的第j列为ej。那么原方程便等价于求n的方程组 A *

10、Xj = ej可通过LU分解来求。计算行列式:高斯消去法的每一步,要么改变行列式的符号,要么将行列式乘上一个常量,要么不变。最终得到一个上三角阵,三角阵的行列式等于对角元之积。所以容易推得原行列式的值。AVL树:是一棵二叉查找树,其中每个节点的平衡因子定义为该节点左右子树的高度差,这个因子要么为0要么为1或-1。 注意:并不只是根节点满足这个特性,所有节点要都满足将一个节点插入AVL树,可能导致失去平衡,某些节点的平衡因子变成了2或2。通过旋转操作来回复平衡。旋转分为四种R右旋,L左旋,LR先对节点r的左子树左旋,然后将以r为根的树右旋,RL。在插入节点后,先找到最靠近插入节点的不平衡节点,然

11、后旋转以该节点为根的树。2-3树:节点分为两种,2节点包含1个元素与2个儿子,3节点包含2个元素与3个儿子,儿子可以为空。所有的叶子都必须在同一层。总是将新的键插入到叶子里,如果叶子中的键变成了3,那么将中间的键移至父节点,并且该叶子分裂成了两个节点。分裂过程可能一直向上进展。堆与堆排序:略霍纳法那么:对多项式 p(x) = an*xn + a_(n-1)*x(n-1) + . + a0进展求值。也可用来进展求幂运算。#Horner(p0 . n, x# r = pn /pn为x的n次项的系数# for(i=n-1; i=0; i-)# r = x*r + pi# return r计算图中的路

12、径数量:假设图的邻接矩阵为A,那么Ak中的元素Aki,j表示了从顶点i到顶点j存在多少条长度为k的路径。第八章 动态规划计算二项式系数: C(n,k) = C(n-1, k-1) + C(n-1, k)。边界C(n,0) = C(n,n) = 1Warshall算法:计算有向图的传递闭包,也就是任意两个顶点之间是否可达。R(i,j,k)表示i与j之间是否连通,其中中间节点在集合1,2,.k里面那么R(i,j,k) = R(i,j,k-1) | (R(i,k,k-1) & R(k,j,k-1)Floyd算法:计算每对顶点之间的最短路径。思路同上,只不过把布尔值换成最短距离而已。最优二叉查找树:给

13、定每个key出现的概率,构造一棵二叉查找树,使得平均比拟次数最少。假设键值从小到大为a1,a2,.an, 对应的概率分别为p1,p1,.pn。令Ci,j表示由节点i到j构成的子树中的最少查找次数,那么树根k一定在i,i+1,.j中,并且两棵子树都是最优的。可以推知 Ci,j = min Ci, k-1 + Ck+1, j + pi,.j背包问题:物品重w1,w2,.wn, 价值v1,v2,.vn, 背包承重W。令Vi,w为前i个物品中,总重量不超过w的物品集的最大价值。这个物品集要么不包括i,要么包括i。那么Vi,w = max Vi-1, w, vi+Vi-1, w-wi 如果 w - wi 0,那么就只有Vi, w = Vi-1, w时间与空间效率都是O(nW),求最优解的具体组成的效率为O(n+W)第 11 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁