2

動的プログラミングを使用した行列のネストされた積の最適化に関する記事を読み、boost::uBLAS での実装方法を知りたいと思いました。

ドキュメントを理解したかどうかはわかりませんが(ページの最後で説明されています)、この問題を処理しているようです。を記述すると、ライブラリは、 、およびのサイズに応じてまたはをR = prod(A, prod(B,C));計算します。A x (B x C)(A x B) x CABC

どうすれば達成できますか?ライブラリはどのように「ブラケットを移動」できますか? prodこのようなコード行を書くとき、引数が評価されてから関数が実行されると思っていました。

FAQでは、式テンプレートの概念について言及しています。リンクされていますか?

4

1 に答える 1

1

はい、式テンプレート (「式ツリー」という名前で見つかる場合があります) が関係しています。

基本的にprod、結果は返されませんが、演算 (行列乗算) と 2 つの入力へのポインターを保持するラッパー オブジェクトが返されます。このprodようなラッパーを入力として呼び出した場合、並べ替えの最適化を適用できます。

ただし、そのページを読んだところ、そのような最適化は適用されていません (ブラケット構造を尊重していると書かれています)。

于 2011-11-03T20:51:18.137 に答える