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