·1,依然是“压缩问题空间”: ·N压缩到n-1=》n压缩到n/2 ·三人或者四人或者…都是一种可能的选择,只要一次统计能够被“简单”完成 ·2,如果每次分组(两人组)后,组内的统计、累计都可以在组内完成, 那么:我就只需要完成分组、同步和最后数据的收集工作 ·每个小组,可以并行完成组内工作 ·每个小组都是一个小型计算机系统 ·N个人,如果小组规模是m,那么我只需要进行约logmn次的分组、同步工作 ·我是一个管理了多个可并行运行的计算机系统的“并行计算机系统” ·多核系统是一个典型案例 ·分治法+并行处理:极大提高了问题求解的效率
• 1,依然是“压缩问题空间”: • N压缩到n-1 ==》n压缩到n/2 • 三人或者四人或者……都是一种可能的选择,只要一次统计能够被“简单”完成 • 2,如果每次分组(两人组)后,组内的统计、累计都可以在组内完成, 那么:我就只需要完成分组、同步和最后数据的收集工作 • 每个小组,可以并行完成组内工作 • 每个小组都是一个小型计算机系统 • N个人,如果小组规模是m,那么我只需要进行约logmn次的分组、同步工作 • 我是一个管理了多个可并行运行的计算机系统的“并行计算机系统” • 多核系统是一个典型案例 • 分治法+并行处理:极大提高了问题求解的效率
如何表达我们的解题过程呢? ·假设我们有p+1个处理器(0,,p),其中第 0号是naster,其它是slave }elset //slaves Parallel Procedure count(n){ 接收master给予的数据; if(I'm the master){ for (i=1 to n/p step 1) 将n个数据分为p份:nn2,np value=GetValue(i); for (i=1 to p step 1){ sumsum+value; count(n); } send sum to master; for (i=1 to p step 1){ receive value from p; sum sum+value; } } }elsef
如何表达我们的解题过程呢? • 假设我们有p+1个处理器(0,…,p),其中第 0号是master,其它是slave • Parallel Procedure count(n) { if (I’m the master){ 将n个数据分为p份:n1 ,n2 ,…,np for (i=1 to p step 1){ count(ni ); } for (i=1 to p step 1){ receive value from pi ; sum = sum+value; } }else{ }else{ //slaves 接收master给予的数据; for (i=1 to n/p step 1){ value= GetValue(i); sum = sum+value; } send sum to master; } }