Prim算法与穷举算法的时间复杂度分析

Prim算法与穷举算法的时间复杂度分析

ID:41777671

大小:47.54 KB

页数:4页

时间:2019-09-02

Prim算法与穷举算法的时间复杂度分析_第1页
Prim算法与穷举算法的时间复杂度分析_第2页
Prim算法与穷举算法的时间复杂度分析_第3页
Prim算法与穷举算法的时间复杂度分析_第4页
资源描述:

《Prim算法与穷举算法的时间复杂度分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Prim算法与穷举算法的时间复杂度分析1、基本概念在一个连通网的所冇生成树中,各边的代价Z和授小的那棵生成树称为该连通网的最小生成树。最小生成树的性质:设N二(V,{E})是一个连通网,U是顶点集V的一个非空子集,若(u,v)是一条具有最小权值的边,其屮u属于U,v属于V,则存在一颗包含边(u,v)的最小生成树。Prim算法就是利用这一性质来求最小生成树的,与穷举算法相比,Prim算法拥有更好的时间复杂度。2、两种算法的思想A.Prim算法思想:1首先将初始顶点u加入到U中,对其余每一个顶点i,将closedg

2、e[i]初始化为到点u的信息°2循环n-1次1)从各组最小边closedge[v]中选出最小的最小边closedge[kO](v,kO属于V-U);2)将k加入到U中;3)更新剩余的每组最小边信息closedge[v](v属于V-U).对于以v为中心的那组边,新增加了一条从k()到v的边,如果新边的权值比closedge[v].lowcost小,则将closedge[v].lowcost更新为新边的权值.B.穷举算法思想:1首先将初始顶点u加入到UP,其余顶点加入到V中,h赋值为无穷大2穷举下列步骤1)从U屮选

3、择一个顶点a,从V屮选择另外一个顶点b2)如果两个顶点间的距离不为无穷大,则将b加入到U中,从V中移除b,当前权值in.ha-b的权值3)如果V不为空,转到1),如果V为空,而且权值比h小,将权值赋值给h3、时间复杂度分析A.Prim时间复杂度分析1n次2n次2l)n次22)1次23)n次T(n)=n+n*(n+l+n)=n+2nA2+n=2O(nA2)B・穷举复杂度分析1n次2(n-l)*l+(n-2)*2+...+l*(n-l)次21)n次22)n次23)n次T(n)=n+((n-l)*1+(n・2)*2+

4、...+1*(n-l))*(n+n+n)<=n+(n*n+n*n+...+n*n)*3n=n+3nA3=3O(nA3)矩阵连乘动态规划算法1、问题描述给定n个矩阵{A「2,…,AJ,其中Ai与Ai+I是可乘的,i=l,2,-,n-lo要算出这n个矩阵的连乘积AiAr-Ano由于矩阵乘法满足结合律,故计算矩阵的连乘积町以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括

5、号的矩阵连乘积可递归地定义为:(1)单个矩阵是完全加括号的;(2)矩阵连乘积A是完全加扌舌号的,则A可表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,即A=(BC)。例如,矩阵连乘积ABCD有5种不同的完全加括号的方式:A((BC)D),A(B(CD)),(AB)(CB),((AB)C)D,(A(BO)Do每一•种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A为50*10,B为10*40,C为40*30,D为30*5,则五种算法需要的计算次数分别为16000,10500

6、,36000,87500,35000次。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对让算量有很大的影响。于是,白然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n个矩阵{A】,A2,…,An}(其中矩阵Ai的维数为Pi-i*Pi,i=l,2,…,n),如何确定计算矩阵连乘积{Ai,A2,…,An}的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。穷举搜索法的计算量A大,它不是一个有效的算法,本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。二、算法思路动态规划算法的基

7、本思想是将待求解问题分成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,动态规划法经分解得到的了问题往往不是相互独立的,前-子问题的解为后一子问题的解提供有用的信息,可以用一•个表來记录所冇已解决的子问题的答案,不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。本实验的算法思路是:1一个矩阵,运算o次2两组矩阵,运算次数为两组矩阵H身的运算次数Z和再加上第一个矩阵的行数*最后一个矩阵的列数3矩阵连乘次数最少的算法,其中一部分的运算也是最少的(或者叫最优的)由以上可

8、以推出矩阵连乘最少算法的递归公式:Min=Mik+Mi+1n+P(i-1)*P(k)*P(j)使用递归公式,可以很快地找到最少计算次数的计算方法主要的递归函数:intcalcu(inti,intj,intp[],charst[]){intnmin=2147483647;if(i==j){charm[2501;gcvt(ij(),m);〃拼接“a”和istrcat(st/aM);strc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。