複数のプロセッサを搭載したマシンで大きな問題を解決しようとすると、どのアルゴリズムがこの問題を解決するのに最適でしょうか?どのアルゴリズムが並列プロセッサで動作するときに最適ですか?
ダイナミックプログラミング、貪欲または分裂と征服のアルゴリズムですか?
複数のプロセッサを搭載したマシンで大きな問題を解決しようとすると、どのアルゴリズムがこの問題を解決するのに最適でしょうか?どのアルゴリズムが並列プロセッサで動作するときに最適ですか?
ダイナミックプログラミング、貪欲または分裂と征服のアルゴリズムですか?
これは非常に幅広い質問であり、解決しようとしている特定の問題に依存しますが、アルゴリズムがそのステップを並行して実行できるかどうかについては、これは、1つのステップの結果が別のステップの結果に依存しない場合にのみ実行できます。
一般に、分裂と征服は、物事を並行して実行するための最善の策と思われます。
ダイナミックプログラミングでは、個々のソリューションを探しているスレッド間で同期させる必要がある配列を使用します。
グリーディは一種のシングルスレッドです。マルチスレッド化することはできますが、大きな利点はありません。とにかく、スレッドプールを使って最高5つのマッチでショットすることができます。これは実装が最も簡単です。
分割と征服は再帰的です。新しいスレッドを生成するにはまだ同期が必要ですが、複数のプロセッサの利点をはっきりと取ることができます。マルチスレッドを実装するのが2番目に簡単な方法だと思います。
解決する必要がある問題の性質によって、プロセッサコア番号ではなく、どのプログラミング方法を使用するかが決まります。
スレッド間のコンテキスト切り替えにかかる時間も考慮してください。
私はこれが問題に完全に依存していると思います。あなたはどちらかを使用できないかもしれません! – templatetypedef
これはアルゴリズムではありません。それらはアルゴリズムのタイプです。 –
実際の*大きな問題は何ですか?あなたは解決していますか? –