• Aucun résultat trouvé

Programmation dynamique

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation dynamique"

Copied!
2
0
0

Texte intégral

(1)

Algorithmique et programmation L2 MIASHS-Math

TD 5 2020-2021

Programmation dynamique

Exercice 1 Pyramide de nombres

9 5 9 3 2 4 6

7 4 3 Dans une pyramide de nombres, on cherche, en partant du sommet de la

pyramide, et en se dirigeant vers le bas `a chaque ´etape (vers la case en-dessous juste

`

a gauche ou la case en-dessous juste `a droite), `a maximiser le total des nombres travers´es. Dans l’exemple ci-contre, le maximum est obtenu pour le chemin en gras (3 + 7 + 4 + 9 = 23). On appellera ce nombre la valeur de la pyramide.

On appelle n le nombre de cases `a l’´etage inf´erieur de la pyramide (sur l’exemple n = 4) et on encode la pyramide dans un tableau T : T[i, j] est la

valeur du nombre situ´e `a l’´etage ien partant du bas et en position j en partant de la gauche.

Toujours sur l’exemple, T[1,1] = 9, T[1,2] = 5, T[2,1] = 2, T[3,1] = 7.

Pour r´esoudre ce probl`eme on va calculer un tableau L tel que pour tout i∈ {1, . . . , n} et tout j ∈ {1, . . . , n−i+ 1},L[i, j] est la valeur de la sous pyramide dont le sommet est la case en position (i, j).

1. Que vautL[1, j] ?

2. Montrer que pour i >1,L[i, j] =T[i, j] + max{L[i−1, j], L[i−1, j+ 1]}.

3. ´Ecrire un algorithme qui retourne la valeur d’une pyramide donn´ee en entr´ee.

4. Donner la complexit´e de votre algorithme.

Exercice 2 Carr´es monochromatiques

On consid`ere un tableau `a 2 dimensions T[1. . . n,1. . . n] avec T[i, j] ∈ {0,1} pour tout i, j∈ {1, . . . , n}. Un carr´e de ce tableau est d´efini par son coin (a, b)∈ {1, . . . , n} × {1, . . . , n}et sa largeur`∈ {1, . . . , n}: c’est l’ensemble des cases (i, j) deT avec (i, j)∈ {a, a+ 1, . . . , a+`− 1} × {b, b+ 1, . . . , b+`−1}. On noteC(a, b, `) ce carr´e (il est d´efini seulement si a+`−16n et b+`−1 6 n). Le carr´e C(a, b, `) est dit monochromatique si T[i, j] = T[a, b] pour tout (i, j)∈ {a, a+ 1, . . . , a+`−1} × {b, b+ 1, . . . , b+`−1}.

Le but de cet exercice est de calculer `maximum tel qu’il existe un carr´e monochromatique de largeur` dans le tableauT : on notera`max cette valeur maximale.

1. On d´efinit D le tableau de taille n×n tel que D[i, j] = 0 si i+j est pair, et D[i, j] = 1 sinon. Quelle est la valeur `max de ce tableau ?

On va d´evelopper un algorithme permettant de calculer `max pour un tableau T par une technique de programmation dynamique. D´efinissons ui,j la largeur maximum d’un carr´e mo- nochromatique dont le coin est (i, j) : c’est la valeur maximale de ` telle que C(i, j, `) est monochromatique. On va pour cela remplir un tableauL[1. . . n,1. . . n] et on veut qu’`a la fin de l’algorithme, pour tout 16i, j6n,L[i, j] =ui,j.

2. Exprimer `max en fonction desui,j.

1

(2)

3. Montrer que pour touti∈ {1, . . . , n},un,i=ui,n= 1.

4. Montrer qu’on a la propri´et´e suivante : pouri < n etj < n :

— Si T[i, j] =T[i, j+ 1] =T[i+ 1, j] =T[i+ 1, j+ 1], alors ui,j = 1 + min{ui,j+1, ui+1,j, ui+1,j+1}.

— Sinon, ui,j = 1.

5. ´Ecrire un algorithme bas´e sur le principe d´ecrit ci-dessus qui prend en entr´ee le tableauT et retourne le tableauL.

6. Montrer que l’algorithme de calcul du tableauL est correct.

7. Donner la complexit´e de l’algorithme d´ecrit ci-dessus calculant L.

8. ´Ecrire un algorithme qui prend en entr´ee un tableauT et retourne la largeur du plus grand carr´e monochromatique de T.

Exercice 3 Intervalles disjoints dont la somme des longueurs est maximale

On s’int´eresse `a un probl`eme algorithmique prenant en entr´ee une liste d’intervalles I = ([a1, b1],[a2, b2], . . . ,[an, bn])

avec 06ai < bi pour tout i∈ {1, . . . , n}. On suppose de plus queb1 < b2 < . . . < bn. On veut construire L ⊆ {1, . . . , n} v´erifiant

sii, j∈ L eti6=j alors [ai, bi]∩[aj, bj] =∅ et maximisantc(L) =P

i∈L(bi−ai), c’est-`a-dire la somme des longueurs des intervalles dont les indices sont dansL.

Pour i ∈ {1, . . . , n}, on note C[i] la longueur maximale des r´eunions d’intervalles deux `a deux disjoints form´ees exclusivement d’intervalles [aj, bj] qui se terminent au plus tard en bi :

C[i] = maxn

c(L) :L ⊆ {1, . . . , i} et (∀k, `∈ L, k6=`⇒[ak, bk]∩[a`, b`] =∅)o . On a bien sˆurC[0] = 0. En vue de l’´ecriture d’algorithmes, on repr´esentera les listes d’intervalles comme des listes de listes `a 2 ´el´ements.

1. Montrer queC[1] =b1−a1.

2. SoitI= [[1,3],[2,4],[1,5],[4,7],[6,8],[6,9]]. Donner la liste des valeurs deC[0] `aC[6] puis un exemple de sous-ensemble L de{1, . . . ,6} r´ealisant la valeur C[6].

3. La m´ethode na¨ıve pour calculer un sous-ensembleL ⊆ {1, . . . , n}maximisantc(L) consiste

`

a tester tous les sous-ensembles possibles. Quelle serait la complexit´e de cet algorithme ? 4. On d´efinitb0=−∞. Soiti∈ {0, . . . , n−1}. Soitj tel quebj < ai+16bj+1 (un teljexiste

et est unique car ]b0, b1],]b1, b2], . . . ,]bn−1, bn] forment une partition de ]b0, bn]). Montrer que

C[i+ 1] = max (C[i], C[j] +bi+1−ai+1) .

5. En admettant si besoin la propri´et´e pr´ec´edente, ´ecrire un algorithme qui prend en entr´eeI et d´etermine la longueur maximale d’une sous-suiteL d’intervalles deux `a deux disjoints.

6. Quelle est la complexit´e de votre algorithme ?

2

Références

Documents relatifs

[r]

[r]

Consid´erez le probl`eme des plus courts chemins (p.c.c.) d’un sommet s vers tous les autres dans un graphe orient´e ayant des arcs de longueur n´egative, mais aucun circuit

Le programme devra dire si l’utilisateur a trouv´ e ou pas le nombre, si l’utilisateur ne le trouve pas, le programme devra indiquer si le nombre saisi est trop grand ou trop

Les deux op´ erations de base utilis´ ee utilis´ ees pour inverser une matrice sont l’´ echange de deux lignes et l’ajout une ligne ` a une autre.. Ecrivons

BCPST R´ esolution de syst` emes et inversions de matrice 2016-2017 Le but de ce TP est de finir le dernier TP en ´ ecrivant l’ensemble des algorithmes sur les matrices vus dans

D'après le théorème : si deux triangles ont un angle égal compris entre deux côtés égaux deux à deux, alors ces deux triangles sont isométriques.. Donc les triangles ABC

Montrer que la suite des d´ eriv´ ees converge uniform´ ement vers une fonction