algorithmique (école d'ingénieur) · Chapitre 9 · Exercice de TD
Sommes préfixes
Arbres binaires de recherche de coût minimum · niveau 2
Énoncé
Dans calculerM, la somme est recalculée pour chaque intervalle.
- On pose pour . Montrer que et calculer en .
- Modifier
calculerMpour que chaque soit obtenue en temps constant. - La complexité de
calculerMchange-t-elle ?
Corrigé
- . On calcule puis : additions.
nom : P
valeurs : 0 2 3 6 10
colorier : 1 3
fleches : 0->1:+2 1->2:+1 2->3:+3 3->4:+4
legende : F = [2, 1, 3, 4] : S(1,3) = P[3] - P[1] = 6 - 2 = 4
- Seule la ligne qui ajoute la somme change :
int[] P = new int[n + 1]; // P[x] = f_0 + ... + f_{x-1}
for (int x = 0; x < n; x++) P[x + 1] = P[x] + F[x];
// ... boucles sur t, i, k inchangées, puis :
M[i][j] += P[j] - P[i]; // S(i,j) en temps constant
- Non : la boucle sur coûte déjà pour chaque intervalle de taille , autant que le calcul naïf de . On gagne un facteur constant (environ ), la complexité reste .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.