Algorithmique et Complexit e Cours 6/8 : Programmation ...
Transcript of Algorithmique et Complexit e Cours 6/8 : Programmation ...
![Page 1: Algorithmique et Complexit e Cours 6/8 : Programmation ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/1.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/2.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/3.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/4.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/5.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/6.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/7.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/8.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/9.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/10.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/11.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/12.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/13.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/14.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/15.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/16.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/17.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/18.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/19.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/20.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/21.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/22.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/23.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/24.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/25.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/26.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/27.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/28.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/29.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/30.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/31.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/32.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/33.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/34.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/35.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/36.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/37.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/38.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/39.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/40.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/41.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/42.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/43.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/44.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/45.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/46.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/47.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/48.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/49.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/50.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/51.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/52.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/53.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/54.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/55.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/56.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/57.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/58.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/59.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/60.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/61.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/62.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/63.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/64.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/65.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/66.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/67.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/68.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/69.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/70.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/71.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/72.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/73.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/74.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/75.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/76.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/77.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/78.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/79.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/80.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/81.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/82.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/83.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/84.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/85.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/86.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/87.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/88.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/89.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/90.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/91.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/92.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/93.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/94.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/95.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/96.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/97.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/98.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/99.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/100.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/101.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/102.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/103.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/104.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/105.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/106.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/107.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/108.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/109.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/110.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/111.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/112.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/113.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/114.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/115.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/116.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/117.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/118.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/119.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/120.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/121.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/122.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/123.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/124.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/125.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/126.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/127.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/128.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/129.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/130.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/131.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/132.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/133.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/134.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/135.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/136.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/137.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/138.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/139.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/140.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/141.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/142.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/143.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/144.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/145.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/146.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/147.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/148.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/149.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/150.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/151.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/152.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/153.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/154.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/155.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/156.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/157.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/158.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/159.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/160.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/161.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/162.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/163.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/164.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/165.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/166.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/167.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/168.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/169.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/170.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/171.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/172.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/173.jpg)
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 ...](https://reader036.fdocument.pub/reader036/viewer/2022062401/62aad0f2230054385a62c262/html5/thumbnails/174.jpg)
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