4

我正在编写多进程斐波那契数计算器,我有一个跟踪斐波那契数的文件,首先进程打开文件并写入第一个斐波那契数(0 和 1),然后执行 fork 及其子进程读取最后两个数字相加他们起来并将下一个写入文件并关闭文件并再次分叉这个过程继续这样,分叉和孩子将数字相加并将计算出的数字写入文件,在内部使用 fork 不是一个好的解决方案,也不是递归调用,有没有问题建议??

这是我们正在讨论的问题的多进程部分问题的链接,它是第 2 部分

http://cse.yeditepe.edu.tr/~sbaydere/fall2010/cse331/files/assignments/F10A1.pdf

4

4 回答 4

2

斐波那契数计算对于多进程来说是一个非常奇怪的想法。实际上,要计算一个数字,您确实需要知道前两个。多个进程不能计算其他数字,只能计算下一个,并且只能计算下一个。多个进程都会计算下一个斐波那契数。无论如何,你会仔细检查。

于 2010-10-18T11:29:34.653 回答
2

假设您以“简单”的方式计算它们(即不使用狡猾的公式),我认为它根本不适合并行处理。

很容易想出一个 O(n) 的解决方案,但每个结果都取决于前一个结果,因此并行化本身就很棘手。我看不出您当前的并行方法有什么好处,因为在每个进程完成自己的工作并分叉一个孩子以获得下一个数字之后,它基本上已经完成了......所以你不妨做分叉孩子的工作在现有的过程中。

于 2010-10-18T11:28:15.367 回答
1

你可能想看看这篇文章:

http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29

这里有更多的想法:

http://www.haskell.org/haskellwiki/The_Fibonacci_sequence

于 2010-10-18T11:47:52.560 回答
0

可能这不能解决您的问题,但这是计算给定范围的斐波那契数的一种简单方法

int fibo(int n) { return (n<=2)?n:(fibo(n-1))+(fibo(n-2)); }

于 2010-10-18T12:06:49.413 回答