я написал ниже код наброски, в основном, чтобы подвести массив (а), где каждый элемент умножается на величину х^I:Улучшение эффективности этого кода с отслеживанием переменной?
y = a(0)
i = 0
{y = sum from i=0 to (n-1) a(i) * x^i AND 0 <= n <= a.length} //Invariant
while (i < (n-1))
{y = sum from i=0 to (n-1) a(i) * x^i AND 0 <= n <= a.length AND i < (n-1)}
y = y + a(i)*x^i
i = i + 1
end while
{y = sum from i=0 to (n-1) a(i) * x^i} //Postcondition
Следует заметить, что я не ожидаю код для компиляции - это просто разумный план того, как код должен работать. Мне нужно повысить эффективность кода, используя переменную отслеживания и, таким образом, связующий инвариант для связывания указанной переменной с остальной частью кода. Вот где я застрял. Что было бы полезно отслеживать в этом случае? Я думал о сохранении значений суммы на каждой итерации, но я не уверен, что это делает трюк. Если бы я мог понять, что отслеживать, я уверен, что было бы тривиально связать его с пространством. Может ли кто-нибудь увидеть, как мой алгоритм может быть улучшен с помощью переменной отслеживания?
Может быть, вы должны были отслеживать 'х^i', так что вычисление следующего значения становится умножением вместо силы. – Dialecticus