4_划分和分治

Chapter 4 划分和分治

数列求和

使用scatter和reduce节约t_startup

主进程:
s=n/p
scatter( numbers,&s,Pgroup,root=master)
reduce_add(&sum,&s,Pgroup,root=master)
从进程:
scatter( numbers,&s,Pgroup,root=master)
……
reduce_add(&part_sum,&s,Pgroup,root=master)

若使用scatter+reduce,通信复杂度为

tcomm = 2* (tstartup + n * tdata)

否则为

tcomm = 2 * (p * tstartup + n * tdata)

桶排序

有效的前提是均匀分布

自适应积分

错误的情况下可能终止较快

n-天体运行

Barnes-Hut算法

每个物体受到的力只需要从根节点开始遍历树即可:

其计算复杂度也为O(nlogn) (每个物体为logn,n个物体)

也即总体复杂度为O(nlogn) , 优于o(N2)。