Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我读了一篇关于使用动态编程优化矩阵嵌套乘积的文章,我想看看它是如何在 boost::uBLAS 中实现的。
我不确定我是否理解文档(他们在页面的最后谈论它),但似乎他们处理了这个问题。当您编写时,R = prod(A, prod(B,C));库会根据和的大小计算A x (B x C)或。(A x B) x CABC
R = prod(A, prod(B,C));
A x (B x C)
(A x B) x C
A
B
C
如何实现?图书馆如何“移动括号”?在编写这样的代码行时,我认为prod将评估 的参数,然后运行该函数。
prod
FAQ提到了表达式模板的概念。有联系吗?
是的,涉及表达式模板(您可能会在名称“表达式树”下找到它)。
基本上,prod不返回结果,而是一个包含操作(矩阵乘法)和指向两个输入的指针的包装对象。如果prod使用这样的包装器作为输入调用,它可以应用重新排序优化。
但是,从我对该页面的阅读来看,没有应用这种优化(它说它尊重括号结构)。