算法导论第三版新增27章中文版(7)

时间:2025-04-22

计算机科学与技术

虽然上面的 FIB 过程对计算 Fibonacci 数来说是一种糟糕的方法,但是在说明多线程算法分析中的关键概念方面,它却是一个好例子。在 FIB(n) 中,第 3 行、第 4 行对 FIB(n-1) 和 FIB(n-2) 的两个递归调用彼此之间相互独立:它们可以按照任意顺序被调用,相互之间也不会有任何影响。因此,这两个递归调用是可以并行运行的。

我们在伪代码中增加了并发关键字 spawn 和 sync 来指示并行属性。下面是采用动态多线程技术重写的 FIB 过程:

P-FIB(n)

1 if n ≤ 1

2 return n

3 else x = spawn P-FIB(n-1)

4 y = P-FIB(n-2)

5 sync

6 return x+y

请注意,如果我们从 P-FIB 中删除掉并发关键字 spawn 和 sync ,剩下的代码和 FIB 完全一样(除了开始和两处递归调用处的过程名字被更改之外)。我们把多线程算法的串行化 定义为:删除了多线程关键字 spawn 、 sync 以及 parallel (并行循环中会用到)后所得到的串行算法。事实上,我们的多线程伪代码具有一个不错的属性——其串行化版本就是解决相同问题的常用串行伪代码。

算法导论第三版新增27章中文版(7).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219