Допустим, я беру вычисление, которое включает только сложение и умножение:
(a+b)*(c+d)
, что можно сделать многими другими способами, например.
a*(c+d) + b*(c+d)
a*c + a*d + b*c + b*d
В терминах сложений и умножений число операций, необходимых для каждого из трех показанных примеров, составляет (2,1) (3,2) (3,4) соответственно. Понятно, что если цель состоит в том, чтобы сократить общее количество операций, то первая будет лучше. Есть ли способ, учитывая произвольное выражение, чтобы найти порядок вычисления, который требует наименьшего количества операций?
Примечание: Этот вопрос повторно задается в SE.math для понимания и перспективы толпы CS.