算法设计与分析 第2版 第3章-分治法.ppt

算法设计与分析 第2版 第3章-分治法.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共103页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  传统计算机是串行结构,每一时刻只能按一条指令对一个数据进行操作,在传统计算机上设计的算法称为串行算法。   并行算法是用多台处理器联合求解问题的方法和步骤,其执行过程是将给定的问题首先分解成若干个尽量相互独立的子问题,然后使用多台计算机同时求解它,从而最终求得原问题的解。 3.6 并行计算简介   (1)将工作分离成离散部分,有助于同时解决。例如,对于分治法设计的串行算法,可以将各个独立的子问题并行求解,最后合并成整个问题的解,从而转化为并行算法。   (2)随时并及时地执行多个程序指令;   (3)多计算资源下解决问题的耗时要少于单个计算资源下的耗时。 为利用并行计算,通常计算问题表现为以下特征:   并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少某一类并行计算机)的基本特征抽象出来,形成一个抽象的计算模型。 1. PRAM模型   PRAM(Parallel Random Access Machine,随机存取并行机器)模型,也称为共享存储的SIMD(单指令流多数据流)模型,是一种抽象的并行计算模型,它是从串行的RAM模型直接发展起来的。   在这种模型中,假定有一个无限大容量的共享存储器,并且有多个功能相同的处理器,且它们都具有简单的算术运算和逻辑判断功能,在任意时刻各个处理器可以访问共享存储单元。 2. BSP模型   BSP(Bulk Synchronous Parallel,整体同步并行)模型是个分布存储的MIMD(多指令流多数据流)计算模型,由哈佛大学Viliant和牛津大学Bill McColl提出。   一台BSP计算机由n个处理器/存储器(节点)组成,通过通信网络进行互联。   一个BSP程序有n个进程,每个驻留在一个节点上,程序按严格的超步(可以理解为并行计算中子问题的求解)顺序执行。 全局 通信 本地 计算 同步   ① 计算:一个或多个处理器执行若干局部计算操作,操作的所有数据只能是局部存储器中的数据。一个进程的计算与其他进程无关。   ② 通信:处理器之间的相互交换数据,通信总是以点对点的方式进行。   ③ 同步:确保通信过程中交换的数据被传送到目的处理器上,并使一个超步中的计算和通信操作必须全部完成之后,才能开始下一个超步中的任何动作。   BSP模型总的执行时间等于各超步执行时间之和。   超步间采用路障同步,每个超步分成如下有序的三个部分:   基于BSP模型,快速排序算法并行化的一个简单思想是,对每次划分过后所得到的两个序列分别使用两个处理器完成递归排序。   例如对一个长为n的序列,首先划分得到两个长为n/2的序列,将其交给两个处理器分别处理;而后进一步划分得到4个长为n/4的序列,再分别交给4个处理器处理;如此递归下去最终得到排序好的序列。当然这里举的是理想的划分情况,如果划分步骤不能达到平均分配的目的,那么排序的效率会相对较差。 以下算法描述了使用2m个处理器完成对n个输入数据a排序的并行算法: void ParaQuickSort(int a[],int i,int j,int m,int id) {  if ((j-i=k) || (m=0)) //若排序数据个数足够少或m=0    Pid执行QuickSort(a,i,j); //在Pid处理器上直接执行传统快速排序算法   else   { Pid执行r=Partition(a,i,j); //在Pid处理器上执行一趟划分     Pid发送a[r+1,m-1]数据到 ;     ParaQuickSort(a,i,r-1,m-1,id);     ParaQuickSort(a,r+1,j,m-1,id+2m-1);      发送a[r+1,m-1]到Pid;   } }?   在最好的情况下该并行算法形成一个高度为?log2n?的排序树,其计算时间复杂度为O(n)。   同串行快速排序算法一样,并行快速排序算法在最坏情况下时间复杂度降为O(n2)。正常情况下该算法的平均时间复杂度为O(n)。 阿里巴巴面试题 str=“a1a2…aN” sstr=b1b2…bP” “a1a2…aP”,”b1b2…bP ” “a2…aP+1”,”b1b2…bP ” “aN…”,”b1b2…bP ” … D.存在最坏时间复杂度为O(N+P)的算法 子任务:时间复杂度为O(P) 分配:时间复杂度为O(N) N个并行任务 3.4 求解组合问题 【问题描述】给定一个有n(n≥1)个整数的序列,要求求出其中最大连续子序列的和。 例如: 序列(-2,11,-4,13,-5,-2)的最大子序列和为20 序列(-6,2,4,-7,5,3,2,-1,6,-9,10

文档评论(0)

dllkxy + 关注
实名认证
内容提供者

本文库主要涉及建筑、教育等资料,有问题可以联系解决哦

版权声明书
用户编号:5213302032000001

1亿VIP精品文档

相关文档