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不返回结果,而是一个包含操作(矩阵乘法)和指向两个输入的指针的包装对象。如果prod使用这样的包装器作为输入调用,它可以应用重新排序优化。

但是,从我对该页面的阅读来看,没有应用这种优化(它说它尊重括号结构)。

于 2011-11-03T20:51:18.137 回答