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

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

ID:62051298

大小:61.50 KB

页数:4页

时间:2021-04-16

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

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

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

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

3、个顶点间的距离不为无穷大,则将b加入到U中,从V中移除b,当前权值加上a-b的权值3)如果V不为空,转到1),如果V为空,而且权值比h小,将权值赋值给h3.时间复杂度分析A.Prim时间复杂度分析1n次2n次21)n次22)1次23)n次个人收集整理勿做商业用途T(n)=n+n*(n+1+n)=n+2n^2+n=2O(n^2)B.穷举复杂度分析1 n次2(n-1)*1+(n-2)*2+…+1*(n-1) 次2 1) n次22) n次23)n次T(n)=n+((n-1)*1+(n-2)*2+…+1*(n-1))*(n+n+n)<=n+(n*n+n*n

4、+…+n*n)*3n =n+3n^3  =3O(n^3)个人收集整理勿做商业用途矩阵连乘动态规划算法1、问题描述给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵的连乘积A1A2…An。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为:(1)单个矩阵是完全加括号的;(2)矩阵

5、连乘积A是完全加括号的,则A可表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,即A=(BC)。例如,矩阵连乘积ABCD有5种不同的完全加括号的方式:A((BC)D),A(B(CD)),(AB)(CB),((AB)C)D,(A(BC))D。每一种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A为50*10,B为10*40,C为40*30,D为30*5,则五种算法需要的计算次数分别为16000,10500,36000,87500,35000次。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大的影

6、响。于是,自然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n个矩阵{A1,A2,…,An}(其中矩阵Ai的维数为Pi-1 *Pi,i=1,2,…,n),如何确定计算矩阵连乘积{A1,A2,…,An}的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。穷举搜索法的计算量太大,它不是一个有效的算法,本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。二、算法思路动态规划算法的基本思想是将待求解问题分成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,动态规划法经分解得到的子问题往往不是相互

7、独立的,前一子问题的解为后一子问题的解提供有用的信息,可以用一个表来记录所有已解决的子问题的答案,不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。本实验的算法思路是:1一个矩阵,运算0次2两组矩阵,运算次数为两组矩阵自身的运算次数之和再加上第一个矩阵的行数*最后一个矩阵的列数3矩阵连乘次数最少的算法,其中一部分的运算也是最少的(或者叫最优的)由以上可以推出矩阵连乘最少算法的递归公式:Min=Mik +Mi+1 n+ P(i-1)*P(k)*P(j)使用递归公式,可以很快地找到最少计算次数的计算方法主要的递归函数:int calcu(

8、inti,int j,intp[],charst[]){intnmin=2147483647;个人收集整理勿做商业用途ﻩi

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

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

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