Уменьшаем количество операций над простым выражением

Допустим, я беру вычисление, которое включает только сложение и умножение:

(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.

15
задан Community 13 April 2017 в 12:19
поделиться