TD 6 Sous-tableau de somme maximale

publicité
TD 6 : diviser pour régner (suite)
Licence 3 Info et Math/Info
TD 6
Sous-tableau de somme maximale
Une compagnie minière veut exploiter un terrain divisé en blocs. On supposera pour
simplifier que le terrain est linéaire. Des analyses du sol ont permis de calculer exactement le
profit pouvant être réalisé par blocs. Le profit peut être positif ou négatif, un profit négatif
correspondant à une perte. Pour des raisons écologiques, la compagnie n’est autorisée qu’à
exploiter un ensemble de parcelles contiguës. Elle voudrait choisir un ensemble de blocs
contigus qui maximise son profit.
Cette situation se modélise par le problème du sous-tableau de somme maximale dans un
tableau d’entiers :
Recherche du sous-tableau de somme maximale
Entrée : Un tableau T de n entiers de Z.
P
Sortie : Deux indices 0 ≤ i ≤ j < n tels que k=j
k=i T [k] est maximale.
Par exemple, si T = [−2, 1, −3, 4, −1, 2, 1, −5, 4], alors le sous-tableau qui maximise la
somme est 4, −1, 2, 1 et la somme est 6.
Exercice 1 Donner un algorithme brute-force (qui teste toutes les possibilités) pour ce
P
3
2
problème, dont le temps d’exécution asymptotique est θ(n3 ) (rappel : ni=0 i2 = n3 + n2 + n6 ).
Exercice 2 Donner un algorithme de temps d’exécution asymptotique θ(n2 ), en vous basant
sur l’algorithme brute-force précédent : identifier les calculs redondants faits par l’algorithme
brute-force et trouver un moyen de ne pas les refaire.
Exercice 3 Donner une solution diviser-pour-régner en θ(n.log2 n) pour ce problème.
Exercice 4 Donner un algorithme dans le cas bi-dimensionnel.
1
Téléchargement