programmation dynamique -...

33
Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne

Upload: others

Post on 10-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Programmation dynamique

François SchwarzentruberENS Cachan - Bretagne

Page 2: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Plus court chemin

Page 3: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Sac à dos

2.5L max1L, 3€

0.5L 600€ 2L 700€

1L 200€

Page 4: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Trouver la sous-séquence d'ADN commune la plus longue

Page 5: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Rendre la monnaie

Page 6: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Justification de paragraphe

Le titre du roman est révélateur : Hugo a choisi de nous présenter la Révolution au travers de la terrible année 1793. Pour nous décrire la guerre civile qui ensanglanta alors la France, Victor Hugo a beaucoup lu, sans doute plus de quarante volumes dont la fameuse Histoire de la Révolution française de Michelet. On ne peut donc suspecter la vérité historique de cette fresque romanesque.

Page 7: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Etymologie1950

● Optimisation de problème qui évolue dans le temps

2011● Résoudre des sous-

problèmes pour résoudre un problème d'optimisation

Page 8: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Plan

● Principe de mémorisation● Top-down, bottom-up

● Concept de sous-structures optimales● Exemple du découpage de barres

● Trouver les sous-structures● Trouver l'ordre de calcul● Exhiber des sous-problèmes plus précis

● Réduire l'espace mémoire utilisé

Page 9: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Principe de mémorisation

Page 10: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Calcul récursif de la suite de Fibonacci

Fib(6)

Fib(5) + Fib(4)

=

Fib(5)

Fib(4) + Fib(3)

= Fib(4)

Fib(3) + Fib(2)

=

Fib(4)

Fib(3) + Fib(2)

= Fib(3)

Fib(2) + Fib(1)= Fib(3)

Fib(2) + Fib(1)

= Fib(2)

1

=

Chevauchementde problèmes...

!

Page 11: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Mémoïsation

Fonction f(n)Si f(n) est déjà calculé

retourner la valeur déjà calculéeSinon

retourner ....

Fonction f(n)retourner ....

Page 12: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Fonction ascendante

Fib[5] := Fib[4] + Fib[3]

Fib[1] := 1Fib[2] := 1Fib[3] := Fib[2] + Fib[1]Fib[4] := Fib[3] + Fib[2]

Fib[6] := Fib[5] + Fib[4]

Page 13: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Tri fusion ?

Page 14: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Conclusion● Top down / Bottom up● Compromis temps / espace

Page 15: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Principe des sous-structures optimales

Page 16: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Découpage de barresLongueur Prix1 1€2 5€3 8€4 9€5 10€6 17€7 17€8 20€9 24€10 30€

17€7

?

Page 17: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Découpage de barresLongueur Prix1 1€2 5€ X 23 8€4 9€5 10€6 17€7 17€8 20€9 24€10 30€

18€2 2 3

Page 18: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Sous-structures optimales

Page 19: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Trouver des sous-structures optimales

● Plus court chemins dans un graphe avec poids négatifs autorisés

Page 20: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Un ennemi : un cycle de poids négatifs

A

B

C

D

E

F

G

1

2,5

-2

-7

3

-3

5-10

D

D

D1

5 -10

3

Page 21: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Cas des DAG

A

B

C

D

E

F

G

1

2,5

-2

-7

3

-3

5-10

Page 22: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Cas des DAG

A B C D E F G

A

B

C

D

E

F

G

1

2,5

-2

-7

3

-3

5-10

Page 23: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Cas général sans cycle négatif

s

t

u poids

Page 24: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

s

t

u poids

de longueur k-1

de longueur k

Le problème d'optimisation exhibe une sous-structure optimale.

Page 25: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Le problème d'optimisation exhibe une sous-structure optimale.

d fi i ≤ k...

d fi i ≤ k-1

d fi k i i ≤ k-1

1)

2)

Page 26: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Problème des plus courts chemins à partir d'une origine

Plus courts chemins

à partir d'une origine

(points positifs)

s

t

u

100

200

50de s à s, 0de s à t, 100de s à u, 150

(algorithme de Dijkstra)

Page 27: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Problème des plus courts chemins à partir d'une origine

Plus courts chemins

à partir d'une origine

(points qq)

s

t

u

50

2

-100de s à s, 0de s à t, 50de s à u, -50

Page 28: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Algorithme de Bellman-Ford

s

t

u poids

de longueur k-1

de longueur k

Page 29: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Algorithme de Floyd-Warshall

d fi i ≤ k...

d fi i ≤ k-1

d fi k i i ≤ k-1

1)

2)

Page 30: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Problème de tous les plus courts chemins

Tous les plus courts chemins (points qq)

s

t

u

50

2

-100de s à s, 0de s à t, 50de s à u, -50de t à t, 0de t à u, -100de t à s,de ….

Page 31: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Résumé des algorithmes de plus courts chemins

Temps EspaceAvec origineSans cycle

Tri topologique puis calcul

O(S+A) O(S+A)

Avec originePoids positifs

Dijkstra O((S+A) log S)O(S log S + A) en amorti

O(S+A)

Avec origineTous les poids

Bellman-Ford O(SA) O(S²)

Tous les points comme origineTous les poids

Floyd-Warshall O(S3) O(S3)

Page 32: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Résumé des algorithmes de plus courts chemins

Temps EspaceAvec origineSans cycle

Tri topologique puis calcul

O(S+A) O(S+A)

Avec originePoids positifs

Dijkstra O((S+A) log S)O(S log S + A) en amorti

O(S+A)

Avec origineTous les poids

Bellman-Ford O(SA) O(S²)

Tous les points comme origineTous les poids

Floyd-Warshall O(S3) O(S3)

Page 33: Programmation dynamique - IRISApeople.irisa.fr/Francois.Schwarzentruber/mit1_algo1_2011/8/dynamic... · Programmation dynamique François Schwarzentruber ENS Cachan - Bretagne. Plus

Résumé des algorithmes de plus courts chemins

Temps EspaceAvec origineSans cycle

Tri topologique puis calcul

O(S+A) O(S+A)

Avec originePoids positifs

Dijkstra O((S+A) log S)O(S log S + A) en amorti

O(S+A)

Avec origineTous les poids

Bellman-Ford O(SA) O(S)

Tous les points comme origineTous les poids

Floyd-Warshall O(S3) O(S²)