algorithmique et complexit e cours 6/8 : programmation

174
Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de s´ equences Algorithmique et Complexit´ e Cours 6/8 : Programmation Dynamique CentraleSup´ elec – Gif ST2 – Gif ST2 – Gif Algorithmique et Complexit´ e 1/51

Upload: others

Post on 16-Jun-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithmique et Complexite

Cours 6/8 : Programmation Dynamique

CentraleSupelec – Gif

ST2 – Gif

ST2 – Gif Algorithmique et Complexite 1/51

Page 2: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Plan

1 Rendu de monnaieProblemeAlgorithmesProgrammation dynamique

2 Programmation dynamique

3 Plus court chemin

4 Conclusion

5 Alignement de sequences

ST2 – Gif Algorithmique et Complexite 2/51

Page 3: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

3 2€ + 1€ + 50¢ + 5¢ + 2¢3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢3 357×1¢Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 4: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

Ü 2€ + 1€ + 50¢ + 5¢ + 2¢

3 2€ + 1€ + 50¢ + 5¢ + 2¢3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢3 357×1¢Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 5: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

3 2€ + 1€ + 50¢ + 5¢ + 2¢Ü 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢

3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢3 357×1¢Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 6: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

3 2€ + 1€ + 50¢ + 5¢ + 2¢3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢

3 357×1¢Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 7: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

3 2€ + 1€ + 50¢ + 5¢ + 2¢3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢3 357×1¢

Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 8: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Rendu de monnaie

Rendu de monnaie

Rendre 3,57 EUR a l’aide de pieces de 1 et 2 euros et de 1, 2, 5,10, 20 et 50 centimes.

Solutions

Un ensemble de pieces :

3 2€ + 1€ + 50¢ + 5¢ + 2¢3 1€ + 1€ + 50¢ + 4×20¢ + 2×10¢ + 3×2¢ + 1¢3 357×1¢Ü Avec combien de pieces au minimum peut on rendre 3,57€ ?

ST2 – Gif Algorithmique et Complexite 3/51

Page 9: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Probleme d’optimisation

Donnees en entree

S ∈ N+n un n-uplet de pieces : S = (200, 100, 50, 20, 10, 5, 2, 1)

total ∈ N la somme a rendre : total = 357

Donnees en sortiec le nombre de pieces utilisees pour obtenir la valeur total,tel qu’il existe L ∈ Nn un n-uplet verifiant :

total =∑n−1

i=0 Li × Si L indique le nombre de chaque piece

c =∑n−1

i=0 Li c est le cout de la solution L

et c est minimal !

Exemple

L = (0, 2, 1, 4, 2, 0, 3, 1) → c = 13 Ü pas minimal !

ST2 – Gif Algorithmique et Complexite 4/51

Page 10: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Probleme d’optimisation

Donnees en entree

S ∈ N+n un n-uplet de pieces : S = (200, 100, 50, 20, 10, 5, 2, 1)

total ∈ N la somme a rendre : total = 357

Donnees en sortiec le nombre de pieces utilisees pour obtenir la valeur total,tel qu’il existe L ∈ Nn un n-uplet verifiant :

total =∑n−1

i=0 Li × Si L indique le nombre de chaque piece

c =∑n−1

i=0 Li c est le cout de la solution L

et c est minimal !

Exemple

L = (0, 2, 1, 4, 2, 0, 3, 1) → c = 13 Ü pas minimal !

ST2 – Gif Algorithmique et Complexite 4/51

Page 11: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Probleme d’optimisation

Donnees en entree

S ∈ N+n un n-uplet de pieces : S = (200, 100, 50, 20, 10, 5, 2, 1)

total ∈ N la somme a rendre : total = 357

Donnees en sortiec le nombre de pieces utilisees pour obtenir la valeur total,tel qu’il existe L ∈ Nn un n-uplet verifiant :

total =∑n−1

i=0 Li × Si L indique le nombre de chaque piece

c =∑n−1

i=0 Li c est le cout de la solution L

et c est minimal !

Exemple

L = (0, 2, 1, 4, 2, 0, 3, 1) → c = 13 Ü pas minimal !

ST2 – Gif Algorithmique et Complexite 4/51

Page 12: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Quelques observations. . .

Solution

Pieces de valeur unitaire → au moins une solution ∀total ∈ NOn suppose une infinite de pieces pour chacune des valeurs. . .

Taille du probleme ?

n (le nombre des valeurs de pieces differentes)

Ü La somme a rendre est un parametre du probleme

Objectif

3 Rendre la somme due → une solution

3 Avec un nombre minimum de pieces → la solution optimale !

Solution optimale

On cherche le cout de la solution optimale !

ST2 – Gif Algorithmique et Complexite 5/51

Page 13: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Quelques observations. . .

Solution

Pieces de valeur unitaire → au moins une solution ∀total ∈ NOn suppose une infinite de pieces pour chacune des valeurs. . .

Taille du probleme

?

n (le nombre des valeurs de pieces differentes)

Ü La somme a rendre est un parametre du probleme

Objectif

3 Rendre la somme due → une solution

3 Avec un nombre minimum de pieces → la solution optimale !

Solution optimale

On cherche le cout de la solution optimale !

ST2 – Gif Algorithmique et Complexite 5/51

Page 14: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Quelques observations. . .

Solution

Pieces de valeur unitaire → au moins une solution ∀total ∈ NOn suppose une infinite de pieces pour chacune des valeurs. . .

Taille du probleme

?

n (le nombre des valeurs de pieces differentes)

Ü La somme a rendre est un parametre du probleme

Objectif

3 Rendre la somme due → une solution

3 Avec un nombre minimum de pieces → la solution optimale !

Solution optimale

On cherche le cout de la solution optimale !

ST2 – Gif Algorithmique et Complexite 5/51

Page 15: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Quelques observations. . .

Solution

Pieces de valeur unitaire → au moins une solution ∀total ∈ NOn suppose une infinite de pieces pour chacune des valeurs. . .

Taille du probleme

?

n (le nombre des valeurs de pieces differentes)

Ü La somme a rendre est un parametre du probleme

Objectif

3 Rendre la somme due → une solution

3 Avec un nombre minimum de pieces → la solution optimale !

Solution optimale

On cherche le cout de la solution optimale !

ST2 – Gif Algorithmique et Complexite 5/51

Page 16: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Algorithme recursif

Pour rendre 3,57€, je peux rendre :

1 piece de 2 € puis 1,57 ;

1 piece de 1 € puis 2,57 ;

1 piece de 50 ¢ puis 3,07 ;

etc. pour chaque valeur de piece possible

Ü La meilleure solution est alors :

1 + min(rendu(2, 57), rendu(1, 57), . . .)

Calcul recursif du cout de la solution optimale

Notons C (s) le nombre minimum de pieces pour obtenir s.

Cas de base : C (0) = 0

Cas general : C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

ST2 – Gif Algorithmique et Complexite 6/51

Page 17: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Algorithme recursif

Pour rendre 3,57€, je peux rendre :

1 piece de 2 € puis 1,57 ;

1 piece de 1 € puis 2,57 ;

1 piece de 50 ¢ puis 3,07 ;

etc. pour chaque valeur de piece possible

Ü La meilleure solution est alors :

1 + min(rendu(2, 57), rendu(1, 57), . . .)

Calcul recursif du cout de la solution optimale

Notons C (s) le nombre minimum de pieces pour obtenir s.

Cas de base : C (0) = 0

Cas general : C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

ST2 – Gif Algorithmique et Complexite 6/51

Page 18: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Algorithme recursif

Pour rendre 3,57€, je peux rendre :

1 piece de 2 € puis 1,57 ;

1 piece de 1 € puis 2,57 ;

1 piece de 50 ¢ puis 3,07 ;

etc. pour chaque valeur de piece possible

Ü La meilleure solution est alors :

1 + min(rendu(2, 57), rendu(1, 57), . . .)

Calcul recursif du cout de la solution optimale

Notons C (s) le nombre minimum de pieces pour obtenir s.

Cas de base : C (0) = 0

Cas general : C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

ST2 – Gif Algorithmique et Complexite 6/51

Page 19: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Algorithme recursif

Pour rendre 3,57€, je peux rendre :

1 piece de 2 € puis 1,57 ;

1 piece de 1 € puis 2,57 ;

1 piece de 50 ¢ puis 3,07 ;

etc. pour chaque valeur de piece possible

Ü La meilleure solution est alors :

1 + min(rendu(2, 57), rendu(1, 57), . . .)

Calcul recursif du cout de la solution optimale

Notons C (s) le nombre minimum de pieces pour obtenir s.

Cas de base : C (0) = 0

Cas general : C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

ST2 – Gif Algorithmique et Complexite 6/51

Page 20: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Algorithme recursif

Pour rendre 3,57€, je peux rendre :

1 piece de 2 € puis 1,57 ;

1 piece de 1 € puis 2,57 ;

1 piece de 50 ¢ puis 3,07 ;

etc. pour chaque valeur de piece possible

Ü La meilleure solution est alors :

1 + min(rendu(2, 57), rendu(1, 57), . . .)

Calcul recursif du cout de la solution optimale

Notons C (s) le nombre minimum de pieces pour obtenir s.

Cas de base : C (0) = 0

Cas general : C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

ST2 – Gif Algorithmique et Complexite 6/51

Page 21: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 22: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 23: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0)

257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 24: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0)

. . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 25: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 26: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

ST2 – Gif Algorithmique et Complexite 7/51

Page 27: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

mais. . .

ST2 – Gif Algorithmique et Complexite 7/51

Page 28: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Approche recursive

C(0) = 0

C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

357 : (0, 0, 0, 0, 0, 0, 0, 0)

157 : (1, 0, 0, 0, 0, 0, 0, 0) 257 : (0, 1, 0, 0, 0, 0, 0, 0) . . . 356 : (0, 0, 0, 0, 0, 0, 0, 1)

⊥ : (2, 0, 0, 0, 0, 0, 0, 0)X

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

156 : (1, 0, 0, 0, 0, 0, 0, 1)

. . .

Complexite exponentielle !

Arbre d’exploration n-aire, non-equilibre, de profondeur entre[ totalS0

, totalSn−1]

Complexite superieure a nk avec k = totalS0

.

Calculs redondants !

ST2 – Gif Algorithmique et Complexite 7/51

Page 29: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Programmation dynamique

Idee

3 Resoudre des problemes d’optimisation

3 Dans lesquels il y a une construction recursive de la solution

Ü Programmation Dynamique

Principe

Stocker les solutions intermediaires pour ne pas les recalculer

Inventee par Bellman dans les annees 50

S’applique quand la solution optimale du probleme estcomposee des solutions optimales de ses sous-problemes

ST2 – Gif Algorithmique et Complexite 8/51

Page 30: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Algorithmes Programmation dynamique

Programmation dynamique

Idee

3 Resoudre des problemes d’optimisation

3 Dans lesquels il y a une construction recursive de la solution

Ü Programmation Dynamique

Principe

Stocker les solutions intermediaires pour ne pas les recalculer

Inventee par Bellman dans les annees 50

S’applique quand la solution optimale du probleme estcomposee des solutions optimales de ses sous-problemes

ST2 – Gif Algorithmique et Complexite 8/51

Page 31: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Plan

1 Rendu de monnaie

2 Programmation dynamiquePrincipeComparaison avec l’approche recursiveRendu de monnaie

3 Plus court chemin

4 Conclusion

5 Alignement de sequences

ST2 – Gif Algorithmique et Complexite 9/51

Page 32: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Principe

Par recurrence : resoudre les plus petits sous-problemes,continuer avec des problemes de plus en plus grands, jusqu’aobtenir la solution du probleme global.

Conserver les solutions des sous-problemes dans une tablepour eviter les calculs redondants qui rendent la solution recursive inefficace

Exemple : rendu de monnaie

On itere de s = 0 a s = total

Comme on sait rendre la monnaie pour tout s ′ < s :→ on calcule le cout min de s :C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

On memorise le resultat dans le tableau→ ulterieurement necessaire au calcul du cout min des s + Si

ST2 – Gif Algorithmique et Complexite 10/51

Page 33: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Principe

Par recurrence : resoudre les plus petits sous-problemes,continuer avec des problemes de plus en plus grands, jusqu’aobtenir la solution du probleme global.

Conserver les solutions des sous-problemes dans une tablepour eviter les calculs redondants qui rendent la solution recursive inefficace

Exemple : rendu de monnaie

On itere de s = 0 a s = total

Comme on sait rendre la monnaie pour tout s ′ < s :→ on calcule le cout min de s :C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

On memorise le resultat dans le tableau→ ulterieurement necessaire au calcul du cout min des s + Si

ST2 – Gif Algorithmique et Complexite 10/51

Page 34: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Principe

Par recurrence : resoudre les plus petits sous-problemes,continuer avec des problemes de plus en plus grands, jusqu’aobtenir la solution du probleme global.

Conserver les solutions des sous-problemes dans une tablepour eviter les calculs redondants qui rendent la solution recursive inefficace

Exemple : rendu de monnaie

On itere de s = 0 a s = total

Comme on sait rendre la monnaie pour tout s ′ < s :→ on calcule le cout min de s :C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

On memorise le resultat dans le tableau→ ulterieurement necessaire au calcul du cout min des s + Si

ST2 – Gif Algorithmique et Complexite 10/51

Page 35: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Principe

Par recurrence : resoudre les plus petits sous-problemes,continuer avec des problemes de plus en plus grands, jusqu’aobtenir la solution du probleme global.

Conserver les solutions des sous-problemes dans une tablepour eviter les calculs redondants qui rendent la solution recursive inefficace

Exemple : rendu de monnaie

On itere de s = 0 a s = total

Comme on sait rendre la monnaie pour tout s ′ < s :→ on calcule le cout min de s :C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

On memorise le resultat dans le tableau→ ulterieurement necessaire au calcul du cout min des s + Si

ST2 – Gif Algorithmique et Complexite 10/51

Page 36: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Principe

Par recurrence : resoudre les plus petits sous-problemes,continuer avec des problemes de plus en plus grands, jusqu’aobtenir la solution du probleme global.

Conserver les solutions des sous-problemes dans une tablepour eviter les calculs redondants qui rendent la solution recursive inefficace

Exemple : rendu de monnaie

On itere de s = 0 a s = total

Comme on sait rendre la monnaie pour tout s ′ < s :→ on calcule le cout min de s :C(s) = 1 + mini∈[0,n−1],Si≤s C(s − Si )

On memorise le resultat dans le tableau→ ulterieurement necessaire au calcul du cout min des s + Si

ST2 – Gif Algorithmique et Complexite 10/51

Page 37: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Sous-structure optimale

1 Diviser le probleme en sous-problemes.

2 Construire la solution optimale a partir des solutions optimalesdes sous-problemes.

3 Deduire une formule de recurrence.

Exemples d’applications

Alignement de sequences

Rendu de monnaie

Plus court chemin

Sac a dos

ST2 – Gif Algorithmique et Complexite 11/51

Page 38: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique

Sous-structure optimale

1 Diviser le probleme en sous-problemes.

2 Construire la solution optimale a partir des solutions optimalesdes sous-problemes.

3 Deduire une formule de recurrence.

Exemples d’applications

Alignement de sequences

Rendu de monnaie

Plus court chemin

Sac a dos

ST2 – Gif Algorithmique et Complexite 11/51

Page 39: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique vs Diviser pour regner

En commun

Les deux methodes necessitent une sous-structure optimale (uneformule de recurrence)

Si les sous-problemes sont independants (tous lessous-problemes sont differents)

Programmation dynamique inutileexemple classique : fact(n + 1) = (n + 1)× fact(n)

sinon

Programmation dynamique plus performante en temps(en contrepartie, on paie en espace car rien n’est gratuit !)

exemple classique : fib(n + 2) = fib(n + 1) + fib(n)

ST2 – Gif Algorithmique et Complexite 12/51

Page 40: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique vs Diviser pour regner

En commun

Les deux methodes necessitent une sous-structure optimale (uneformule de recurrence)

Si les sous-problemes sont independants (tous lessous-problemes sont differents)

Programmation dynamique inutileexemple classique : fact(n + 1) = (n + 1)× fact(n)

sinon

Programmation dynamique plus performante en temps(en contrepartie, on paie en espace car rien n’est gratuit !)

exemple classique : fib(n + 2) = fib(n + 1) + fib(n)

ST2 – Gif Algorithmique et Complexite 12/51

Page 41: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique vs Diviser pour regner

En commun

Les deux methodes necessitent une sous-structure optimale (uneformule de recurrence)

Si les sous-problemes sont independants (tous lessous-problemes sont differents)

Programmation dynamique inutileexemple classique : fact(n + 1) = (n + 1)× fact(n)

sinon

Programmation dynamique plus performante en temps(en contrepartie, on paie en espace car rien n’est gratuit !)

exemple classique : fib(n + 2) = fib(n + 1) + fib(n)

ST2 – Gif Algorithmique et Complexite 12/51

Page 42: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique vs Diviser pour regner

Diviser pour regner (approche recursive)

def fib(n):

i f n==1 or n==2:

r e t u r n 1

r e t u r n fib(n-1)+ fib(n-2)

complexite exponentielle O(φn) (φ le nombre d’or)

Programmation dynamique

table = {0:0, 1:1}

def fib(n):

i f not n i n table:

table[n] = fib(n-1) + fib(n-2)

r e t u r n table[n]

complexite lineaire O(n)

ST2 – Gif Algorithmique et Complexite 13/51

Page 43: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Programmation dynamique vs Diviser pour regner

Diviser pour regner (approche recursive)

def fib(n):

i f n==1 or n==2:

r e t u r n 1

r e t u r n fib(n-1)+ fib(n-2)

complexite exponentielle O(φn) (φ le nombre d’or)

Programmation dynamique

table = {0:0, 1:1}

def fib(n):

i f not n i n table:

table[n] = fib(n-1) + fib(n-2)

r e t u r n table[n]

complexite lineaire O(n)

ST2 – Gif Algorithmique et Complexite 13/51

Page 44: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 1 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125 125 125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 45: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 1 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip12

12 125 125 125 125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 46: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12

12

125 125 125 125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 47: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12

125

125 125 125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 48: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125

125

125 125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 49: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125

125

125 12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 50: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 3 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125 125

125

12510 12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 51: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 3 1 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125 125 125

12510

12510 12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 52: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 3 1 2 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125 125 125 12510

12510

12510 12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 53: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 3 1 2 2 3

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip

12 12 125 125 125 125 12510 12510

12510

12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 54: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Resolution par programmation dynamique (Algorithme 1)

On reutilise la formule de recurrence precedente tout enmemorisant les resultats intermediaires :{

C (0) = 0C (s) = 1 + mini∈[0,n−1],Si≤s C (s − Si )

Soit S = (10, 5, 2, 1) et total = 14

1 1 2 2 1 2 2 3 3 1 2 2 3 3

1 2 3 4 5 6 7 8 9 10 11 12 13 14

skip12 12 125 125 125 125 12510 12510 12510

12510

Ü temps de calcul n × total

ST2 – Gif Algorithmique et Complexite 14/51

Page 55: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Algorithme 1, version recursive

import math

S = (200, 100, 50, 20, 10, 5, 2, 1); n= l e n (S)

total = 357

C = [math.inf f o r i i n range (total +1)]

def rendu(somme):

i f C[somme ]== math.inf:

i f somme i n S:

C[somme ]=1

e l s e :

best = math.inf

f o r i i n range (n):i f S[i]<somme:

best = min(best ,rendu(somme -S[i]))C[somme] = best+1

r e t u r n C[somme]

p r i n t ("Nombre_de_pieces:", rendu(total))

ST2 – Gif Algorithmique et Complexite 15/51

Page 56: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Algorithme 1, version iterative

import math

S = (200, 100, 50, 20, 10, 5, 2, 1); n= l e n (S)

total = 357;

C = [0]

f o r i i n range (1,total +1):C.append(math.inf)

f o r j i n range (n):i f i>=S[j] and 1+C[i-S[j]]<C[i]:

C[i] = 1+C[i-S[j]]

p r i n t ("Nombre_de_pieces:", C[total])

Ü Dans les deux cas, nous n’avons pas la solution, juste son cout C(total)

ST2 – Gif Algorithmique et Complexite 16/51

Page 57: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Principe Comparaison avec l’approche recursive Rendu de monnaie

Algorithme 1, version iterative

import math

S = (200, 100, 50, 20, 10, 5, 2, 1); n= l e n (S)

total = 357;

C = [0]

f o r i i n range (1,total +1):C.append(math.inf)

f o r j i n range (n):i f i>=S[j] and 1+C[i-S[j]]<C[i]:

C[i] = 1+C[i-S[j]]

p r i n t ("Nombre_de_pieces:", C[total])

Ü Dans les deux cas, nous n’avons pas la solution, juste son cout C(total)

ST2 – Gif Algorithmique et Complexite 16/51

Page 58: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Plan

1 Rendu de monnaie

2 Programmation dynamique

3 Plus court cheminAlgorithme des Plus Courts CheminsBellman-FordAlgorithmeDetection des circuits absorbantApplication : routage

4 Conclusion

5 Alignement de sequences

ST2 – Gif Algorithmique et Complexite 17/51

Page 59: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3

Nœud Distance Parent

s0 0 •s1 ∞ •s2 ∞ •s3 ∞ •

Frontiere = {s0}x =

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 60: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

Nœud Distance Parent

s0 0 •s1 5 s0

s2 3 s0

s3 3 s0

Frontiere = {s1, s2, s3}x = s0

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 61: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

s2

s0

Nœud Distance Parent

s0 0 •s1 5 s0

s2 3 s0

s3 3 s0

Frontiere = {s1, s3}x = s2

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 62: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

s2

s0 s3

s2

Nœud Distance Parent

s0 0 •s1 5 s0

s2 3 s0

s3 3 s0

Frontiere = {s1}x = s3

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 63: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

s2

s0 s3

s2s1

s3

Nœud Distance Parent

s0 0 •s1 5 s0

s2 1 s1

s3 3 s0

Frontiere =x = s1

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 64: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

s2

s0 s3

s2s1

s3

Nœud Distance Parent

s0 0 •s1 5 s0

s2 1 s1

s3 3 s0

Frontiere =x =

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 65: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

L’algorithme des PCC n’est pas adapte aux poids negatifs

s0

s1 s2

s3

+5

+3

-4

+1

+3s0

s1 s2

s3

s2

s0 s3

s2s1

s3

Nœud Distance Parent

s0 0 •s1 5 s0

s2 1 s1

s3 3 s0

Frontiere =x =

l’algorithme des PCC donne une reponse erronee concernant s3 !

Pourquoi voudrait-on calculer un plus court chemin sur un graphe avecdes poids negatifs ?

Ü reponse au TD5, exercice 1 (probleme des placements)

ST2 – Gif Algorithmique et Complexite 18/51

Page 66: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford (1956, 1958)

Principe

Base sur le principe de la programmation dynamique

Calcule le cout du plus court cheminmais on peut retrouver le chemin a partir de la table de memoısation. . .

Rappel : donnees du probleme

Un graphe oriente pondere G quelconque, deux sommets s et ty compris des poids negatifs. . .

Ü Quelle est la longueur du plus court chemin reliant s a t ?

ST2 – Gif Algorithmique et Complexite 19/51

Page 67: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford (1956, 1958)

Principe

Base sur le principe de la programmation dynamique

Calcule le cout du plus court cheminmais on peut retrouver le chemin a partir de la table de memoısation. . .

Rappel : donnees du probleme

Un graphe oriente pondere G quelconque, deux sommets s et ty compris des poids negatifs. . .

Ü Quelle est la longueur du plus court chemin reliant s a t ?

ST2 – Gif Algorithmique et Complexite 19/51

Page 68: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Attention aux circuits absorbants !

Definition : circuit absorbant

s0 s1 s2 s3

s4s5

s6 s7+2 +1 +1

−1

+1

+1

−2

+1

c

Le circuit c dans cet exemple est un circuit absorbant, parce que∑e=(v ,u)∈c

ω(e) < 0.

Plus court chemin avec poids negatifs

Besoin d’une formulation plus precise :

Ü On cherche le plus court chemin sans circuit !

ST2 – Gif Algorithmique et Complexite 20/51

Page 69: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Attention aux circuits absorbants !

Definition : circuit absorbant

s0 s1 s2 s3

s4s5

s6 s7+2 +1 +1

−1

+1

+1

−2

+1

c

Le circuit c dans cet exemple est un circuit absorbant, parce que∑e=(v ,u)∈c

ω(e) < 0.

Plus court chemin avec poids negatifs

Besoin d’une formulation plus precise :

Ü On cherche le plus court chemin sans circuit !

ST2 – Gif Algorithmique et Complexite 20/51

Page 70: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford (1956, 1958)

Principe

Base sur le principe de la programmation dynamique

Calcule le cout du plus court cheminmais on peut retrouver le chemin a partir de la table de memoısation. . .

Proprietes

3 Supporte les poids negatifs (contrairement a Dijkstra)

3 Detecte s’il y a un circuit absorbant

ST2 – Gif Algorithmique et Complexite 21/51

Page 71: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

Construction recursive d’une solution

ST2 – Gif Algorithmique et Complexite 22/51

Page 72: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

OPT(2,s1)= ?

la longueur du plus court chemin en 2 arcs de s1 jusqu’a t (s5)(en l’occurrence, c’est 0 en passant par s4)

Construction recursive d’une solution

ST2 – Gif Algorithmique et Complexite 22/51

Page 73: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

OPT(2,s1)= ?

la longueur du plus court chemin en 2 arcs de s1 jusqu’a t (s5)(en l’occurrence, c’est 0 en passant par s4)

Construction recursive d’une solution

ST2 – Gif Algorithmique et Complexite 22/51

Page 74: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

OPT(|V | − 1,s1)= ?

la longueur du plus court chemin de s1 jusqu’a t (s5)(en l’occurrence, c’est -2)

Construction recursive d’une solution

ST2 – Gif Algorithmique et Complexite 22/51

Page 75: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

OPT(|V | − 1,s1)= ?

la longueur du plus court chemin de s1 jusqu’a t (s5)(en l’occurrence, c’est -2)

Construction recursive d’une solution

ST2 – Gif Algorithmique et Complexite 22/51

Page 76: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

Construction recursive d’une solution

OPT(i , v) = min(v ,u)∈E (OPT(i − 1, u) + ω((v , u))))

→ Pour rejoindre t, aller d’abord a u en prenant le plus court chemin en

i − 1 etapes.

Sauf s’il y a deja un chemin en i − 1 etapes depuis v qui estplus court que tout le reste !→ Auquel cas OPT(i , v) = OPT(i − 1, v)

ST2 – Gif Algorithmique et Complexite 22/51

Page 77: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

Construction recursive d’une solution

OPT(i , v) = min(v ,u)∈E (OPT(i − 1, u) + ω((v , u))))

→ Pour rejoindre t, aller d’abord a u en prenant le plus court chemin en

i − 1 etapes.

Sauf s’il y a deja un chemin en i − 1 etapes depuis v qui estplus court que tout le reste !→ Auquel cas OPT(i , v) = OPT(i − 1, v)

ST2 – Gif Algorithmique et Complexite 22/51

Page 78: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Principes de l’algorithme Bellman-Ford

Decomposer en sous-problemes

Soit OPT(i , v) la longueur du chemin le plus court vers le nœudcible t depuis un nœud v , v 6= t qui contient au plus i arcs.

Construction recursive d’une solution

OPT(i , v) = min(

OPT(i − 1, v),minu∈V

(OPT(i − 1, u) + ω((v , u))))

Stocker les OPT(i , v) → tableau a 2 dimensions.

ST2 – Gif Algorithmique et Complexite 22/51

Page 79: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

ST2 – Gif Algorithmique et Complexite 23/51

Page 80: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

ST2 – Gif Algorithmique et Complexite 23/51

Page 81: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3

s0 = min(∞,min(−4 +∞(by s1),−3 + 0(by s5)))

ST2 – Gif Algorithmique et Complexite 23/51

Page 82: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞

s1 = min(∞,min(−1 +∞,−2 +∞))

ST2 – Gif Algorithmique et Complexite 23/51

Page 83: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3

s2 = min(∞,min(8 +∞, 3 + 0))

ST2 – Gif Algorithmique et Complexite 23/51

Page 84: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

on finit la ligne sur le meme principe

ST2 – Gif Algorithmique et Complexite 23/51

Page 85: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

2 −3 0 3 3 0 0

puis on fait la ligne suivante

ST2 – Gif Algorithmique et Complexite 23/51

Page 86: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

2 −3 0 3 3 0 0

3 −4 −2 3 3 0 0

et ainsi de suite. . .

ST2 – Gif Algorithmique et Complexite 23/51

Page 87: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

2 −3 0 3 3 0 0

3 −4 −2 3 3 0 0

4 −6 −2 3 2 0 0

5 −6 −2 3 0 0 0

ST2 – Gif Algorithmique et Complexite 23/51

Page 88: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Quand s’arreter ?

Propriete

Dans un graphe sans circuit, le plus court chemin contient auplus |V | − 1 arcs.

Ü C’est vrai aussi dans un graphe quelconque mais sans circuitabsorbant.

s0 s1 s2 s3

s4s5

s6 s7+2 +1 +1

−1

+1

+1

−2

+1

Ü On s’arrete lorsqu’on a atteint les chemins comprenant|V | − 1 arcs.

ST2 – Gif Algorithmique et Complexite 24/51

Page 89: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Quand s’arreter ?

Propriete

Dans un graphe sans circuit, le plus court chemin contient auplus |V | − 1 arcs.

Ü C’est vrai aussi dans un graphe quelconque mais sans circuitabsorbant.

s0 s1 s2 s3

s4s5

s6 s7+2 +1 +1

−1

+1

+1

−2

+1

Ü On s’arrete lorsqu’on a atteint les chemins comprenant|V | − 1 arcs.

ST2 – Gif Algorithmique et Complexite 24/51

Page 90: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Une implementation de Bellman-Ford (matrice d’adjacence)

import math

# graph est une matrice d’adjacence

n = l e n (graph)

# initialisation du tableau OPT

OPT = [[math.inf f o r _ i n range (n)] f o r _ i n range (n+1)]OPT [0][5] = 0

# remplissage iteratif du tableau OPT

f o r i i n range (1,n):f o r v i n range (n):

OPT[i][v] = OPT[i-1][v]

f o r u i n range (n):i f graph[v][u] != None and \

OPT[i][v] > OPT[i-1][u] + graph[v][u]:

OPT[i][v] = OPT[i-1][u] + graph[v][u]

ST2 – Gif Algorithmique et Complexite 25/51

Page 91: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Complexite de l’algorithme Bellman-Ford

Complexite matrice d’adjacence

3 boucles imbriquees de |V | iterations chacune

un acces en O(1) a ω((v , u)) a chaque passage dans la boucleinterieure !

Ü La complexite totale de l’algorithme est donc : O(|V |3).

Complexite liste d’adjacence

en exercice maison

2 boucles : pour chacune des |V | lignes, on itere sur les |E |aretes

Ü La complexite totale de l’algorithme est donc : O(|V | × |E |).

ST2 – Gif Algorithmique et Complexite 26/51

Page 92: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Complexite de l’algorithme Bellman-Ford

Complexite matrice d’adjacence

3 boucles imbriquees de |V | iterations chacune

un acces en O(1) a ω((v , u)) a chaque passage dans la boucleinterieure !

Ü La complexite totale de l’algorithme est donc : O(|V |3).

Complexite liste d’adjacence

en exercice maison

2 boucles : pour chacune des |V | lignes, on itere sur les |E |aretes

Ü La complexite totale de l’algorithme est donc : O(|V | × |E |).

ST2 – Gif Algorithmique et Complexite 26/51

Page 93: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Complexite de l’algorithme Bellman-Ford

Complexite matrice d’adjacence

3 boucles imbriquees de |V | iterations chacune

un acces en O(1) a ω((v , u)) a chaque passage dans la boucleinterieure !

Ü La complexite totale de l’algorithme est donc : O(|V |3).

Complexite liste d’adjacence

en exercice maison

2 boucles : pour chacune des |V | lignes, on itere sur les |E |aretes

Ü La complexite totale de l’algorithme est donc : O(|V | × |E |).

ST2 – Gif Algorithmique et Complexite 26/51

Page 94: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Complexite de l’algorithme Bellman-Ford

Complexite matrice d’adjacence

3 boucles imbriquees de |V | iterations chacune

un acces en O(1) a ω((v , u)) a chaque passage dans la boucleinterieure !

Ü La complexite totale de l’algorithme est donc : O(|V |3).

Complexite liste d’adjacence

en exercice maison

2 boucles : pour chacune des |V | lignes, on itere sur les |E |aretes

Ü La complexite totale de l’algorithme est donc : O(|V | × |E |).

ST2 – Gif Algorithmique et Complexite 26/51

Page 95: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (=⇒)

Propriete (rappel)

Dans un graphe sans circuit absorbant, le plus court chemincontient au plus |V | − 1 arcs.

Ü ∀v ,OPT(|V | − 1, v) contient bien la longueur du plus court chemin

Contraposee

Si le chemin le plus court est compose de plus de |V | − 1 arcs, alors Gcontient des circuits absorbants.

Corollaire 1 (=⇒)

Si une case de la ligne |V | du tableau est plus petite que la precedente :

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

alors il y a un circuit absorbant.

ST2 – Gif Algorithmique et Complexite 27/51

Page 96: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (=⇒)

Propriete (rappel)

Dans un graphe sans circuit absorbant, le plus court chemincontient au plus |V | − 1 arcs.

Ü ∀v ,OPT(|V | − 1, v) contient bien la longueur du plus court chemin

Contraposee

Si le chemin le plus court est compose de plus de |V | − 1 arcs, alors Gcontient des circuits absorbants.

Corollaire 1 (=⇒)

Si une case de la ligne |V | du tableau est plus petite que la precedente :

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

alors il y a un circuit absorbant.

ST2 – Gif Algorithmique et Complexite 27/51

Page 97: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (=⇒)

Propriete (rappel)

Dans un graphe sans circuit absorbant, le plus court chemincontient au plus |V | − 1 arcs.

Ü ∀v ,OPT(|V | − 1, v) contient bien la longueur du plus court chemin

Contraposee

Si le chemin le plus court est compose de plus de |V | − 1 arcs, alors Gcontient des circuits absorbants.

Corollaire 1 (=⇒)

Si une case de la ligne |V | du tableau est plus petite que la precedente :

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

alors il y a un circuit absorbant.

ST2 – Gif Algorithmique et Complexite 27/51

Page 98: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (⇐=)

Proprietes

1 Si G contient un circuit absorbant, alors pour tout noeud v ducircuit, on pourra toujours ameliorer sa distance.

Ü ∃v . ∀n. ∃m > n OPT (m, v) < OPT (n, v)

2 Si une ligne du tableau est identique a la suivante, alors toutes leslignes suivantes lui sont identiques aussi

consequence de la formule de recurrence

Corollaire 2 (⇐=)

Si G contient un circuit absorbant alors

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

ST2 – Gif Algorithmique et Complexite 28/51

Page 99: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (⇐=)

Proprietes

1 Si G contient un circuit absorbant, alors pour tout noeud v ducircuit, on pourra toujours ameliorer sa distance.

Ü ∃v . ∀n. ∃m > n OPT (m, v) < OPT (n, v)

2 Si une ligne du tableau est identique a la suivante, alors toutes leslignes suivantes lui sont identiques aussi

consequence de la formule de recurrence

Corollaire 2 (⇐=)

Si G contient un circuit absorbant alors

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

ST2 – Gif Algorithmique et Complexite 28/51

Page 100: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants (⇐=)

Proprietes

1 Si G contient un circuit absorbant, alors pour tout noeud v ducircuit, on pourra toujours ameliorer sa distance.

Ü ∃v . ∀n. ∃m > n OPT (m, v) < OPT (n, v)

2 Si une ligne du tableau est identique a la suivante, alors toutes leslignes suivantes lui sont identiques aussi

consequence de la formule de recurrence

Corollaire 2 (⇐=)

Si G contient un circuit absorbant alors

∃v . OPT (|V |, v) < OPT (|V | − 1, v)

ST2 – Gif Algorithmique et Complexite 28/51

Page 101: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants

Theoreme

G contient un circuit absorbant ssi∃v . OPT (|V |, v) < OPT (|V | − 1, v)

# Remplissage iteratif du tableau OPT

f o r i i n range (1,n+1): # on va une ligne plus loin

f o r v i n range (n):OPT[i][v] = OPT[i-1][v]

f o r u i n range (n):i f graph[v][u] != None and \

OPT[i][v] > OPT[i-1][u] + graph[v][u]:

OPT[i][v] = OPT[i-1][u] + graph[v][u]

# Detection de circuits absorbants

f o r v i n range (n):i f OPT[n-1][v] > OPT[n][v]:

p r i n t ("ATTENTION:_circuit_absorbant !\n")break ;

ST2 – Gif Algorithmique et Complexite 29/51

Page 102: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Detection des circuits absorbants

Theoreme

G contient un circuit absorbant ssi∃v . OPT (|V |, v) < OPT (|V | − 1, v)

# Remplissage iteratif du tableau OPT

f o r i i n range (1,n+1): # on va une ligne plus loin

f o r v i n range (n):OPT[i][v] = OPT[i-1][v]

f o r u i n range (n):i f graph[v][u] != None and \

OPT[i][v] > OPT[i-1][u] + graph[v][u]:

OPT[i][v] = OPT[i-1][u] + graph[v][u]

# Detection de circuits absorbants

f o r v i n range (n):i f OPT[n-1][v] > OPT[n][v]:

p r i n t ("ATTENTION:_circuit_absorbant !\n")break ;

ST2 – Gif Algorithmique et Complexite 29/51

Page 103: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

2 −3 0 3 3 0 0

3 −4 −2 3 3 0 0

4 −6 −2 3 2 0 0

5 −6 −2 3 0 0 0

6 −6 −2 3 0 0 0

ST2 – Gif Algorithmique et Complexite 30/51

Page 104: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

s0 s1 s2

s3 s4

s5 = t

−4

−3

−2−1+8 → +4

+3

+6

+4 +2

−3

s0 s1 s2 s3 s4 s5

0 ∞ ∞ ∞ ∞ ∞ 0

1 −3 ∞ 3 4 2 0

2 −3 0 3 3 0 0

3 −4 −2 3 3 0 0

4 −6 −2 2 2 0 0

5 −6 −2 2 0 −1 0

6 −6 −3 2 0 −1 0

ST2 – Gif Algorithmique et Complexite 30/51

Page 105: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Exemple

Attention

Des qu’il y a un circuit absorbant, le cout propose pour s → t peutetre invalide !

. . . meme si OPT (|V | − 1, s) = OPT (|V |, s)

s

t

1

2

1

0

-11

s 1 2 t

0 ∞ ∞ ∞ 01 1 ∞ ∞ 02 1 0 ∞ 03 0 0 ∞ 04 0 -1 ∞ 0

ST2 – Gif Algorithmique et Complexite 31/51

Page 106: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Demo

ST2 – Gif Algorithmique et Complexite 32/51

Page 107: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Bellman-Ford � reparti �

Propriete

Pour determiner le cout OPT (i , v) du nœud v a l’etape i , on n’abesoin que de :

OPT (i − 1, v) la valeur a l’etape precedente pour v ;

OPT (i − 1, u) la valeur a l’etape precedente pour tous lesvoisins u de v .

→ Chaque nœud peut calculer son cout tout seul encommuniquant avec ses voisins. . . sans connaıtre l’ensemble du graphe !

Application aux reseaux

Probleme du routage

ST2 – Gif Algorithmique et Complexite 33/51

Page 108: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Bellman-Ford � reparti �

Propriete

Pour determiner le cout OPT (i , v) du nœud v a l’etape i , on n’abesoin que de :

OPT (i − 1, v) la valeur a l’etape precedente pour v ;

OPT (i − 1, u) la valeur a l’etape precedente pour tous lesvoisins u de v .

→ Chaque nœud peut calculer son cout tout seul encommuniquant avec ses voisins. . . sans connaıtre l’ensemble du graphe !

Application aux reseaux

Probleme du routage

ST2 – Gif Algorithmique et Complexite 33/51

Page 109: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Routage dans des reseaux a commutation de paquets

Probleme

Determiner le chemin le plus efficace pour router les messagesjusqu’a leurs destinations.

Criteres (poids)

Routes les plus courtes en nombre de liens, latence minimale, . . .

Specificite du routage

Chaque routeur contient une table (destination,routeur suivant (Next Hop)).

Calculs faits localement dans les routeurs (sans connaıtre laconfiguration du reseau)

ST2 – Gif Algorithmique et Complexite 34/51

Page 110: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Routage dans des reseaux a commutation de paquets

Probleme

Determiner le chemin le plus efficace pour router les messagesjusqu’a leurs destinations.

Criteres (poids)

Routes les plus courtes en nombre de liens, latence minimale, . . .

Specificite du routage

Chaque routeur contient une table (destination,routeur suivant (Next Hop)).

Calculs faits localement dans les routeurs (sans connaıtre laconfiguration du reseau)

ST2 – Gif Algorithmique et Complexite 34/51

Page 111: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Routage dans des reseaux a commutation de paquets

Probleme

Determiner le chemin le plus efficace pour router les messagesjusqu’a leurs destinations.

Criteres (poids)

Routes les plus courtes en nombre de liens, latence minimale, . . .

Specificite du routage

Chaque routeur contient une table (destination,routeur suivant (Next Hop)).

Calculs faits localement dans les routeurs (sans connaıtre laconfiguration du reseau)

ST2 – Gif Algorithmique et Complexite 34/51

Page 112: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Routage dans des reseaux a commutation de paquets

Modelisation des donnees (reseau)

routeurs modelises par les sommets du graphe

liens entre routeurs modelises par des arcs

distances (nombre de liens, delais) modelisees par les poids

Communication

Des qu’un routeur change sa table de routage, il en informe sesvoisins pour qu’ils puissent mettre a jour leurs tables egalement.

ST2 – Gif Algorithmique et Complexite 35/51

Page 113: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Routage dans des reseaux a commutation de paquets

Modelisation des donnees (reseau)

routeurs modelises par les sommets du graphe

liens entre routeurs modelises par des arcs

distances (nombre de liens, delais) modelisees par les poids

Communication

Des qu’un routeur change sa table de routage, il en informe sesvoisins pour qu’ils puissent mettre a jour leurs tables egalement.

ST2 – Gif Algorithmique et Complexite 35/51

Page 114: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 115: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 116: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 117: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 118: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 119: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Implementation

Chaque routeur execute en boucle :

1 attend une notification de changement de routage de la part d’un deses voisins

2 recalcule sa table de routage (Destination finale p → Next Hop)

3 envoie ses nouvelles distances a ses voisins

4 goto 1

Chaque routeur v garde localement :

un tableau Mv ou Mv [p] indique la distance du chemin le plus courtentre v et p

un tableau Next Hopv ou Next Hopv [p] est le numero du routeursuivant pour tout envoi vers p

ST2 – Gif Algorithmique et Complexite 36/51

Page 120: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme implemente par chaque sommet vNv = ... # la liste des voisins du noeud courant v

def process(u, Mu) :

"""

A chaque notification recu depuis un voisin u

:param Mu: table de routage du voisin u

"""

# mise a jour de la table de routage locale

update = False

f o r p i n V:

i f Mu[p] + Timings[v][u] < Mv[p]:

Mv[p] = Mu[p] + Timings[v][u]

NextHop_v[p] = u

update = True

# notification des voisins

i f update:

f o r u i n Nv:

send_update(u,Mv)

ST2 – Gif Algorithmique et Complexite 37/51

Page 121: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

ST2 – Gif Algorithmique et Complexite 38/51

Page 122: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s2 s3

M1(p) 2 3

next(p) s2 s3

p s1 s4

M3(p) 3 1

next(p) s1 s4

p s1 s4

M2(p) 2 3

next(p) s1 s4

p s2 s3

M4(p) 3 1

next(p) s2 s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 123: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s1 s4

M3(p) 3 1

next(p) s1 s4

p s1 s4

M2(p) 2 3

next(p) s1 s4

p s2 s3

M4(p) 3 1

next(p) s2 s3

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 124: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s1 s3 s4

M2(p) 2 4 3

next(p) s1 s4 s4

p s1 s2 s3

M4(p) 4 3 1

next(p) s3 s2 s3

p s1 s2 s4

M3(p) 3 4 1

next(p) s1 s4 s4

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 125: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s1 s3 s4

M2(p) 2 4 3

next(p) s1 s4 s4

p s1 s2 s3

M4(p) 4 3 1

next(p) s3 s2 s3

p s1 s2 s4

M3(p) 3 4 1

next(p) s1 s4 s4

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

Xincident reseau

ST2 – Gif Algorithmique et Complexite 38/51

Page 126: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s1 s2 s4

M3(p) 3 4 1

next(p) s1 s4 s4

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

Xincident reseau

p s1 s3 s4

M2(p) 2 4 ∞next(p) s1 s4 null

p s1 s2 s3

M4(p) 4 ∞ 1

next(p) s3 null s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 127: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

Xincident reseau

p s1 s2 s4

M3(p) 3 5 1

next(p) s1 s1 s4

p s1 s3 s4

M2(p) 2 4 6

next(p) s1 s4 s1

p s1 s2 s3

M4(p) 4 ∞ 1

next(p) s3 null s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 128: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Algorithme des Plus Courts Chemins Bellman-Ford Algorithme Detection des circuits absorbant Application : routage

Algorithme Bellman-Ford comme protocole

Distance Vector Protocol

Ce protocole est utilise dans les reseaux informatiques (e.g. surInternet)

→ Routing Information Protocol (RIP)

Exemple

s1

s2

s3

s4

2ms

3ms

3ms

1ms

p s2 s3 s4

M1(p) 2 3 4

next(p) s2 s3 s3

Xincident reseau

p s1 s2 s4

M3(p) 3 5 1

next(p) s1 s1 s4

p s1 s3 s4

M2(p) 2 4 6

next(p) s1 s4 s1

p s1 s2 s3

M4(p) 4 6 1

next(p) s3 s3 s3

ST2 – Gif Algorithmique et Complexite 38/51

Page 129: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Plan

1 Rendu de monnaie

2 Programmation dynamique

3 Plus court chemin

4 Conclusion

5 Alignement de sequences

ST2 – Gif Algorithmique et Complexite 39/51

Page 130: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Les points a retenir

Methode de resolution � generale �

Formule de recurrence (structure sous-optimale)

Les sous-problemes ne sont pas independants

Technique de memoısation : diminuer le temps d’execution enmemorisant les valeurs calculees

Ü Compromis classique en informatique : temps vs memoire

Generalement efficace mais pas toujours applicable

Plus courts chemins

7 Attention aux poids negatifs !7 Attention aux circuits absorbants !

Ü Algorithme de Bellman-Ford : contourne ces deux difficultes

Complexite polynomiale (O(|V |3) ou O(|V | × |E |))Principe utilise aussi pour le routage de paquets

ST2 – Gif Algorithmique et Complexite 40/51

Page 131: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Plan

1 Rendu de monnaie

2 Programmation dynamique

3 Plus court chemin

4 Conclusion

5 Alignement de sequencesProblemeApproche exhaustiveProgrammation dynamiqueAlgorithme

ST2 – Gif Algorithmique et Complexite 41/51

Page 132: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Pour aller plus loin

Probleme concret

En bio-informatique (l’informatique dediee a la biologie),l’alignement de sequences permet de rapprocher deux sequencesbiologiques (ADN, ARN ou proteines), de maniere a expliciter lesregions similaires.

ST2 – Gif Algorithmique et Complexite 42/51

Page 133: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match substitution insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 134: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match substitution insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 135: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match

substitution insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 136: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match substitution

insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 137: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match substitution insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 138: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Exemple

soit deux sequences de tailles quelconques, la premiere de taille n etla deuxieme de taille m :

C T A G C A G T C A

G A G C A T C A T C G

un alignement :

C T A G C A G − − T C A

G − A G C A T C A T C G

match substitution insert/delete

un autre alignement :

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 43/51

Page 139: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Quel alignement choisir ?

a chaque operation elementaire on associe un score :

match : 1substitution : -1insert/delete : -2

Le score d’un alignement est la somme des scores elementaires

1er alignement : −3C T A G C A G − − T C A

G − A G C A T C A T C G

1 1 1 1 1 1-1 -1 -1-2 -2 -2

2eme alignement : −4C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 44/51

Page 140: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Quel alignement choisir ?

a chaque operation elementaire on associe un score :

match : 1substitution : -1insert/delete : -2

Le score d’un alignement est la somme des scores elementaires

1er alignement : −3C T A G C A G − − T C A

G − A G C A T C A T C G

1 1 1 1 1 1-1 -1 -1-2 -2 -2

2eme alignement : −4C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 44/51

Page 141: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Quel alignement choisir ?

a chaque operation elementaire on associe un score :

match : 1substitution : -1insert/delete : -2

Le score d’un alignement est la somme des scores elementaires

1er alignement : −3C T A G C A G − − T C A

G − A G C A T C A T C G

1 1 1 1 1 1-1 -1 -1-2 -2 -2

2eme alignement : −4C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 44/51

Page 142: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Quel alignement choisir ?

a chaque operation elementaire on associe un score :

match : 1substitution : -1insert/delete : -2

Le score d’un alignement est la somme des scores elementaires

1er alignement : −3C T A G C A G − − T C A

G − A G C A T C A T C G

1 1 1 1 1 1-1 -1 -1-2 -2 -2

2eme alignement : −4C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 44/51

Page 143: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Probleme d’optimisation

Alignement de sequences

Soit :

2 sequences

3 scores associes aux operations elementaires(match, subst, ins/del)

Probleme : trouver l’alignement de score maximal

Complexite exponentielle !

Nombre d’alignements :∑n

i=0 C im+i × Cn−i

m = O(2n+m)

ST2 – Gif Algorithmique et Complexite 45/51

Page 144: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Probleme d’optimisation

Alignement de sequences

Soit :

2 sequences

3 scores associes aux operations elementaires(match, subst, ins/del)

Probleme : trouver l’alignement de score maximal

Complexite exponentielle !

Nombre d’alignements :∑n

i=0 C im+i × Cn−i

m = O(2n+m)

ST2 – Gif Algorithmique et Complexite 45/51

Page 145: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Probleme d’optimisation

Alignement de sequences

Soit :

2 sequences

3 scores associes aux operations elementaires(match, subst, ins/del)

Probleme : trouver l’alignement de score maximal

Complexite exponentielle !

Nombre d’alignements :∑n

i=0 C im+i × Cn−i

m = O(2n+m)

ST2 – Gif Algorithmique et Complexite 45/51

Page 146: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Align([],[]) = 0

Align(S[0:n],[]) = n × score[′ins/del ′]

Align([],T [0:m]) = m × score[′ins/del ′]

Align(S[0:n],T [0:m]) = max

Align(S[0:n],T [0:m−1]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m−1]) +

{score[′match′] si S[n]=T [m]score[′subst′] si S[n] 6=T [m]

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

-2

C T A G C A G T C A

G A G C A T C A T C G −

-2

C T A G C A G T C A

G A G C A T C A T C G

-1

ST2 – Gif Algorithmique et Complexite 46/51

Page 147: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Align([],[]) = 0

Align(S[0:n],[]) = n × score[′ins/del ′]

Align([],T [0:m]) = m × score[′ins/del ′]

Align(S[0:n],T [0:m]) = max

Align(S[0:n],T [0:m−1]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m−1]) +

{score[′match′] si S[n]=T [m]score[′subst′] si S[n] 6=T [m]

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

-2

C T A G C A G T C A

G A G C A T C A T C G −

-2

C T A G C A G T C A

G A G C A T C A T C G

-1

ST2 – Gif Algorithmique et Complexite 46/51

Page 148: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Align([],[]) = 0

Align(S[0:n],[]) = n × score[′ins/del ′]

Align([],T [0:m]) = m × score[′ins/del ′]

Align(S[0:n],T [0:m]) = max

Align(S[0:n],T [0:m−1]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m−1]) +

{score[′match′] si S[n]=T [m]score[′subst′] si S[n] 6=T [m]

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

-2

C T A G C A G T C A

G A G C A T C A T C G −

-2

C T A G C A G T C A

G A G C A T C A T C G

-1

ST2 – Gif Algorithmique et Complexite 46/51

Page 149: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Align([],[]) = 0

Align(S[0:n],[]) = n × score[′ins/del ′]

Align([],T [0:m]) = m × score[′ins/del ′]

Align(S[0:n],T [0:m]) = max

Align(S[0:n],T [0:m−1]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m−1]) +

{score[′match′] si S[n]=T [m]score[′subst′] si S[n] 6=T [m]

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

-2

C T A G C A G T C A

G A G C A T C A T C G −

-2

C T A G C A G T C A

G A G C A T C A T C G

-1

ST2 – Gif Algorithmique et Complexite 46/51

Page 150: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Align([],[]) = 0

Align(S[0:n],[]) = n × score[′ins/del ′]

Align([],T [0:m]) = m × score[′ins/del ′]

Align(S[0:n],T [0:m]) = max

Align(S[0:n],T [0:m−1]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m]) + score[′ins/del ′]

Align(S[0:n−1],T [0:m−1]) +

{score[′match′] si S[n]=T [m]score[′subst′] si S[n] 6=T [m]

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

-2

C T A G C A G T C A

G A G C A T C A T C G −

-2

C T A G C A G T C A

G A G C A T C A T C G

-1

ST2 – Gif Algorithmique et Complexite 46/51

Page 151: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Complexite exponentielle !

Arbre d’exploration ternaire de profondeur n + m

Complexite en O(3n+m)

Calculs redondants !

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

C T A G C A G T C A

G A G C A T C A T C G −

C T A G C A G T C A

G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C − G

C T A G C A G T C − A

G A G C A T C A T C G −

ST2 – Gif Algorithmique et Complexite 47/51

Page 152: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Approche recursive

Complexite exponentielle !

Arbre d’exploration ternaire de profondeur n + m

Complexite en O(3n+m)

Calculs redondants !

S : C T A G C A G T C A

T : G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C G

C T A G C A G T C A

G A G C A T C A T C G −

C T A G C A G T C A

G A G C A T C A T C G

C T A G C A G T C A −

G A G C A T C A T C − G

C T A G C A G T C − A

G A G C A T C A T C G −

ST2 – Gif Algorithmique et Complexite 47/51

Page 153: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Formule de recurrence

Alignement de sequences

Notons OPT (N,M) le score maximalde l’alignement des M premiers nucleotides de la premiere sequence

avec les N premiers nucleotides de la deuxieme sequence

OPT (0, 0) = 0

OPT (N,M) = maximum parmi :

OPT (N − 1,M) + (−2) si insert Ne

OPT (N,M − 1) + (−2) si insert Me

OPT (N − 1,M − 1) + (±1) selon match ou supp

ST2 – Gif Algorithmique et Complexite 48/51

Page 154: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 155: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 156: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 157: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 158: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 159: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 160: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 161: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 162: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

skip

TS G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

C T A G C A G − − T C A

G − A G C A T C A T C G

C T A G C A G T C A − − −

− G A G C A − T C A T C G

ST2 – Gif Algorithmique et Complexite 49/51

Page 163: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1−4−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Objectif : trouver l’alignement de score maximal

ST2 – Gif Algorithmique et Complexite 50/51

Page 164: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1−4−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 1 : on remplit la premiere ligne et la premiere colonne

ici score[’ins/del’] = -2 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 165: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2

−1−4−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 166: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2

−1

−4

−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 167: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1

−4−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 168: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2

−1−4

−4

−1-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 169: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1

−4−4

−1

-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 170: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1−4−4

−1

-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2

-3

Etape 2 : on remplit chacune des cases en maximisant selon les 3 axes

ici score[’match’] = 1 (→) et score[’subst’] = -1 (→)

ST2 – Gif Algorithmique et Complexite 50/51

Page 171: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1−4−4

−1

-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 3 : au bout du tableau, on obtient le score maximal ainsi que lesalignements optimaux

ST2 – Gif Algorithmique et Complexite 50/51

Page 172: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

TS

0

G A G C A T C A T C G

C

T

A

G

C

A

G

T

C

A

skip

−2 −4 −6 −8 −10 −12 −14 −16 −18 −20 −22

−2

−4

−6

−8

−10

−12

−14

−16

−18

−20

T

S

0

G

C

−2

−2 −1−4−4

−1

-1 -3 -5 -5 -7 -9 -11 -13 -15 -17 -19

-3 -2 -4 -6 -6 -6 -8 -10 -12 -14 -16

-5 -2 -3 -5 -5 -7 -7 -7 -9 -11 -13

-5 -4 -1 -3 -6 -6 -8 -8 -8 -10 -10

-7 -6 -3 0 -2 -4 -5 -7 -9 -7 -9

-9 -6 -5 -2 1 -1 -3 -4 -6 -8 -8

-11 -8 -5 -4 -1 0 -2 -4 -5 -7 -7

-13 -10 -7 -6 -3 0 -1 -3 -3 -5 -7

-15 -12 -9 -6 -5 -2 1 -1 -3 -2 -4

-17 -14 -11 -8 -5 -4 -1 2 0 -2 -3

Etape 3 : au bout du tableau, on obtient le score maximal ainsi que lesalignements optimaux

ST2 – Gif Algorithmique et Complexite 50/51

Page 173: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

Parmi les 3n+m chemins possibles dans la matrice on a trouvel’alignement optimal en n ×m etapes

Complexite de l’algorithme

O(n ×m) en temps : taille de la matrice

O(min(n,m)) en espace : au lieu de conserver toute la matrice, onne garde que la ligne courante et la ligne precedente

ST2 – Gif Algorithmique et Complexite 51/51

Page 174: Algorithmique et Complexit e Cours 6/8 : Programmation

Rendu de monnaie Programmation dynamique Plus court chemin Conclusion Alignement de sequences

Probleme Approche exhaustive Programmation dynamique Algorithme

Algorithme Needleman and Wunsch (1970)

Parmi les 3n+m chemins possibles dans la matrice on a trouvel’alignement optimal en n ×m etapes

Complexite de l’algorithme

O(n ×m) en temps : taille de la matrice

O(min(n,m)) en espace : au lieu de conserver toute la matrice, onne garde que la ligne courante et la ligne precedente

ST2 – Gif Algorithmique et Complexite 51/51