优化算术表达式计算的算法

标签 algorithm optimization expression

假设我有一个由整数变量和算术运算构成的表达式:加法、减法和乘法。我知道每次乘法需要 M 秒,每次加法/减法需要 A 秒。是否有一种算法可以以最有效的方式计算表达式以任意分配给变量? (假设我只能在内存中存储一​​个数字)。

例子:

M=10

A=1

表达式:a*a+a*b+b*b。

一开始,它有3次乘法和2次加法,所以总时间是3*M+2*A=32

但是,我们可以构建一个等价的表达式 (a+b)*(a+b)-a*b,它只有 2 次乘法和 3 次加法,因此总计算时间为 2*M+3*A= 23.

最佳答案

您想应用和积算法。

参见:

http://www.isiweb.ee.ethz.ch/papers/docu/aloe-2001-1.pdf

关于优化算术表达式计算的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603464/

相关文章:

arrays - 查找数组中长度为 k 的所有子集

performance - 如何向你的老板解释代码/资源优化很重要?

c# - 动态 Linq 属性转换为 SQL

c - 在 C 中,为什么在单独的语句中定义全局变量会引发警告,但对于局部变量却可以?

algorithm - 如何在 1 秒内找到数独游戏的所有解决方案(计数)?

c++ - 偶数和奇数位置元素之和的最大差值 : How to memoize the brute-force approach?

Javascript,数组成员的所有可能总和(最多 4 个)

c++ - 如果函数未在类声明中定义,则性能损失

C++ 优化器删除具有副作用的对象

c - 当 "k"的计算结果为真时,为什么 "m =++i &&++j ||++k"在语句 "++i&&++j"中不递增?