4

私はマルチプロセスフィボナッチ数計算機を書いています、私はフィボナッチ数を追跡するファイルを持っています、最初のプロセスはファイルを開いて最初のフィボナッチ数(0と1)を書き、次にフォークを行い、その子プロセスは最後の2つの数を読み取りますそれらをアップして次をファイルに書き込み、ファイルを閉じて再度フォークするこのプロセスは、フォークと子が数値を加算し、計算された数値をファイルに書き込むことで続行されます。問題の提案??

これが私たちが話している問題のリンクです。問題のマルチプロセス部分であるパー​​ト2です。

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

4

4 に答える 4

2

それらを「単純な」方法で(つまり、狡猾な式を使用せずに)計算していると仮定すると、並列処理の候補としてはまったく適切ではないと思います。

O(n)ソリューションを思い付くのは簡単ですが、それぞれの結果は前のソリューションに依存するため、並列化するのは本質的に注意が必要です。各プロセスが独自の仕事を終えて次の番号を取得するために子供をフォークした後、それは基本的に完了しているので、現在の並列アプローチには何のメリットもありません...したがって、フォークされた子供の仕事をしたほうがよいでしょう既存のプロセスで。

于 2010-10-18T11:28:15.367 に答える
2

フィボナッチ数の計算は、マルチプロセスを実行するための非常に奇妙なアイデアです。実際、数値を計算するには、前の2つを知っている必要があります。複数のプロセスは他の数値を計算できませんが、次の数値、そして次の数値のみを計算できます。複数のプロセスはすべて、次のフィボナッチ数を計算します。とにかく、あなたは再確認します。

于 2010-10-18T11:29:34.653 に答える
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

probably this isn't solving your problem, but here is a trivial way to calculate the fibonacci numbers of a given range

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

于 2010-10-18T12:06:49.413 に答える