Sto studiando sull'ottimizzazione degli alogritmi. (Albo degli algoritmi del Prof. Skiena)
Uno degli esercizi ci chiede di ottimizzare un algoritmo:
Suppose the following algorithm is used to evaluate the polynomial
p(x) = a^(xn) + a^n−1(xn−1) + . . . + a(x) + a
p := a0;
xpower := 1;
for i := 1 to n do
xpower := x ∗ xpower;
p := p + ai ∗ xpower
end
(Qui xn, xn-1 ... sono i nomi dati a costanti distinte.)
Dopo aver dato un po 'di riflessione, l'unico modo in cui ho trovato di migliorare l'algoritmo è il seguente
p := a0;
xpower := 1;
for i := 1 to n do
xpower := x ∗ xpower;
for j := 1 to ai
p := p + xpower
next j
next i
end
Con questa soluzione ho convertito la seconda moltiplicazione in aggiunta in un ciclo for.
Le mie domande:
- Trovi un altro modo per ottimizzare questo algoritmo?
- L'alternativa che ho suggerito è migliore dell'originale? (Modifica: come suggerito nei commenti, questa domanda, sebbene legata al problema, merita un'altra domanda a parte. Ignora.)