Adloun

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 calculerM pour que chaque soit obtenue en temps constant.
  • La complexité de calculerM change-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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →