最近研究前缀子节点,稍微总结一下,以后继续补充:
本文参考Calvin Lin和Lawrence Snyder的,《Principles of Parallel Programming》(并行程序设计准则)。
与乞降严密关相的操纵是前缀乞降,在很多并行程序设计语言中也称为描扫(scan)。与乞降操纵一样,首先仍有n个值的序列,
但望希算计的是如下的序列,
其中,个每 yi 是输入前 i 个元素的和,即有,
以并行式方求解前缀和不如求累加和那样显明(累加和树形分层乞降,间时责负度为 logn),因为它须要序顺求解全部间中值。初看起来,似乎前缀乞降既没有优势,又不可能找到更好的解,但事实上前缀乞降能以并行的式方成完。
通过对成对乞降法方的视察,可以现发只要对该法方略加改修以可就算计前缀值。求解的思绪是,个每存储有 xi 的叶处理器可以算计值 yi ,只要它晓得在它左边全部元素的和,即他的前缀,在成对乞降的中程过,我们晓得全部子树的和,而如果能留保这些信息,能就定确这些前缀而无需直接对它们乞降。为做到这一点,我们从根开始,它的前缀(即在序列元素之前的全部元素和)是0。这也是它的左子树的前缀,而它的左子树的总和则是它的右子树的前缀。纳归地应用这一思绪,我们可以到得如下规矩:
我拽着春姑娘的衣裙,春姑娘把我带到了绿色的世界里。
- 首先,从下往上,一层层的并行,算计出总和
- 结束后,设想根从它的父节点(现实不存在)处收接一个 0 。
- 全部的非叶子节点,从它的父节点处收接一个值,将该值转发给它们的左子节点,并将父节点值与它们的左子节点值(这些值在向上成对乞降时已到得)的和发送给右子节点;这些值也是其子节点的前缀。
- 叶子节点将来自面上的前缀值与它所存保的输入值相加。

文章结束给大家分享下程序员的一些笑话语录:
雅虎最擅长的不是开通新业务,是关闭旧业务。