Algorithmique des graphes
9 — Techniques algorithmiques
Anthony Labarre
7 avril 2021
Introduction Algorithmes gloutons Diviser pour r´egner
Techniques algorithmiques
• Une grande partie des algorithmes vus dans les chapitres pr´ ec´ edents peuvent ˆ etre class´ es en plusieurs cat´ egories :
1
les algorithmes gloutons (Dijkstra, Prim, Kruskal, . . . ) ;
2
les algorithmes “diviser pour r´ egner” ;
3
les algorithmes de programmation dynamique (Bellman-Ford, Floyd-Warshall, . . . ).
• On va examiner plus en profondeur les principes de ces
algorithmes ;
Introduction Algorithmes gloutons Diviser pour r´egner
Techniques algorithmiques
• Une grande partie des algorithmes vus dans les chapitres pr´ ec´ edents peuvent ˆ etre class´ es en plusieurs cat´ egories :
1
les algorithmes gloutons (Dijkstra, Prim, Kruskal, . . . ) ;
2
les algorithmes “diviser pour r´ egner” ;
3
les algorithmes de programmation dynamique (Bellman-Ford, Floyd-Warshall, . . . ).
• On va examiner plus en profondeur les principes de ces algorithmes ;
3
Introduction Algorithmes gloutons Diviser pour r´egner
Techniques algorithmiques
• Une grande partie des algorithmes vus dans les chapitres pr´ ec´ edents peuvent ˆ etre class´ es en plusieurs cat´ egories :
1
les algorithmes gloutons (Dijkstra, Prim, Kruskal, . . . ) ;
2
les algorithmes “diviser pour r´ egner” ;
3
les algorithmes de programmation dynamique (Bellman-Ford, Floyd-Warshall, . . . ).
• On va examiner plus en profondeur les principes de ces
algorithmes ;
Introduction Algorithmes gloutons Diviser pour r´egner
Techniques algorithmiques
• Une grande partie des algorithmes vus dans les chapitres pr´ ec´ edents peuvent ˆ etre class´ es en plusieurs cat´ egories :
1
les algorithmes gloutons (Dijkstra, Prim, Kruskal, . . . ) ;
2
les algorithmes “diviser pour r´ egner” ;
3
les algorithmes de programmation dynamique (Bellman-Ford, Floyd-Warshall, . . . ).
• On va examiner plus en profondeur les principes de ces algorithmes ;
5
Introduction Algorithmes gloutons Diviser pour r´egner
Techniques algorithmiques
• Une grande partie des algorithmes vus dans les chapitres pr´ ec´ edents peuvent ˆ etre class´ es en plusieurs cat´ egories :
1
les algorithmes gloutons (Dijkstra, Prim, Kruskal, . . . ) ;
2
les algorithmes “diviser pour r´ egner” ;
3
les algorithmes de programmation dynamique (Bellman-Ford, Floyd-Warshall, . . . ).
• On va examiner plus en profondeur les principes de ces
algorithmes ;
Introduction Algorithmes gloutons Diviser pour r´egner
Points communs
• Les trois techniques que l’on vient de mentionner ont un point commun ;
• Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;
• Par “sous-probl` eme”, on veut dire que l’on veut r´ esoudre le mˆ eme probl` eme que celui de d´ epart, mais sur une instance plus petite qui est un morceau de celle de d´ epart ;
• Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud les sous-probl` emes et dont on exploite leurs solutions ;
7
Introduction Algorithmes gloutons Diviser pour r´egner
Points communs
• Les trois techniques que l’on vient de mentionner ont un point commun ;
• Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;
• Par “sous-probl` eme”, on veut dire que l’on veut r´ esoudre le mˆ eme probl` eme que celui de d´ epart, mais sur une instance plus petite qui est un morceau de celle de d´ epart ;
• Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud
les sous-probl` emes et dont on exploite leurs solutions ;
Introduction Algorithmes gloutons Diviser pour r´egner
Points communs
• Les trois techniques que l’on vient de mentionner ont un point commun ;
• Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;
• Par “sous-probl` eme”, on veut dire que l’on veut r´ esoudre le mˆ eme probl` eme que celui de d´ epart, mais sur une instance plus petite qui est un morceau de celle de d´ epart ;
• Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud les sous-probl` emes et dont on exploite leurs solutions ;
9
Introduction Algorithmes gloutons Diviser pour r´egner
Points communs
• Les trois techniques que l’on vient de mentionner ont un point commun ;
• Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;
• Par “sous-probl` eme”, on veut dire que l’on veut r´ esoudre le mˆ eme probl` eme que celui de d´ epart, mais sur une instance plus petite qui est un morceau de celle de d´ epart ;
• Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud
les sous-probl` emes et dont on exploite leurs solutions ;
Introduction Algorithmes gloutons Diviser pour r´egner
Principe
L’approche gloutonne se r´ esume en une seule phrase : ` a chaque
´ etape, on fait le “meilleur” choix (` a d´ efinir bien sˆ ur).
∅
ck
choix ck ...
c2
choixc2
c1
choix c0
k
... choixc02
c1∪c01 · · ·
choix c01
choix c1
11
Introduction Algorithmes gloutons Diviser pour r´egner
Principe
L’approche gloutonne se r´ esume en une seule phrase : ` a chaque
´ etape, on fait le “meilleur” choix (` a d´ efinir bien sˆ ur).
∅
ck
choix ck ...
c2
choixc2
c1
choix c0
k
... choixc02
c1∪c01 · · ·
choix c01
choix c1
Introduction Algorithmes gloutons Diviser pour r´egner
Principe
L’approche gloutonne se r´ esume en une seule phrase : ` a chaque
´ etape, on fait le “meilleur” choix (` a d´ efinir bien sˆ ur).
∅
ck
choix ck ...
c2
choixc2
c1
choix c0
k
... choixc02
c1∪c01 · · ·
choix c01
choix c1
13
Introduction Algorithmes gloutons Diviser pour r´egner
Exemple : forˆ et couvrante de poids minimum (Kruskal)
• Le poids de la forˆ et est la somme des poids de ses arˆ etes ;
• Strat´ egie gloutonne : privil´ egier les arˆ etes de poids minimum ;
• Bien entendu, on n’accepte que les arˆ etes valides ;
1
0 3
2 5
4 6
4 4
9 7 7 12
7 2 2
5
5 3
1
0 3
2 5
4 6
4 4
9 7 7 12
7 2 2
5
5 3
1
0 3
2 5
4 6
4 4
9 7 7 12
7 2 2
5
5 3
1
0 3
2 5
4 6
4 4
9 7 7 12
7 2 2
5
5 3
1
0 3
2 5
4 6
4 4
9 7 7 12
7 2 2
5
5 3
.. .
3 1 5
4 6
4 7 12
7 2 2
5 3
Introduction Algorithmes gloutons Diviser pour r´egner
Exemple : plus courts chemins (Dijkstra)
• Le sch´ ema glouton est moins ´ evident pour l’algorithme de Dijkstra, mais la philosophie est la mˆ eme ;
• Le but est de d´ ecouvrir les plus courts chemins d’un sommet s
`
a tous les autres ;
• on parcourt les sommets par proximit´ e (distance estim´ ee minimale ` a s) ;
• ` a chaque nouveau sommet d´ ecouvert, on profite des raccourcis passant par ce sommet pour am´ eliorer nos estimations ;
15
Introduction Algorithmes gloutons Diviser pour r´egner
Caract´ eristiques des algorithmes gloutons
• Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;
• Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;
• Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;
• Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;
Introduction Algorithmes gloutons Diviser pour r´egner
Caract´ eristiques des algorithmes gloutons
• Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;
• Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;
• Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;
• Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;
17
Introduction Algorithmes gloutons Diviser pour r´egner
Caract´ eristiques des algorithmes gloutons
• Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;
• Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;
• Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;
• Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;
Introduction Algorithmes gloutons Diviser pour r´egner
Caract´ eristiques des algorithmes gloutons
• Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;
• Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;
• Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;
• Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;
19
Introduction Algorithmes gloutons Diviser pour r´egner
Preuve d’optimalit´ e
• Pour prouver l’optimalit´ e d’un algorithme glouton (quand c’est bien le cas), on peut proc´ eder comme suit :
1
soit T une solution optimale diff´ erente de la solution gloutonne S ;
2
on cherche la “premi` ere” diff´ erence entre S et T (par exemple en position i) ;
3
on montre que l’on peut remplacer la d´ ecision prise ` a l’´ etape i dans T par une d´ ecision gloutonne sans d´ egrader la qualit´ e de T ;
• Si l’on y parvient, la strat´ egie gloutonne est correcte,
puisqu’on peut transformer toute solution optimale en une
solution gloutonne sans la d´ egrader ;
Introduction Algorithmes gloutons Diviser pour r´egner
Preuve d’optimalit´ e
• Pour prouver l’optimalit´ e d’un algorithme glouton (quand c’est bien le cas), on peut proc´ eder comme suit :
1
soit T une solution optimale diff´ erente de la solution gloutonne S ;
2
on cherche la “premi` ere” diff´ erence entre S et T (par exemple en position i) ;
3
on montre que l’on peut remplacer la d´ ecision prise ` a l’´ etape i dans T par une d´ ecision gloutonne sans d´ egrader la qualit´ e de T ;
• Si l’on y parvient, la strat´ egie gloutonne est correcte, puisqu’on peut transformer toute solution optimale en une solution gloutonne sans la d´ egrader ;
21
Introduction Algorithmes gloutons Diviser pour r´egner
Preuve d’optimalit´ e
• Pour prouver l’optimalit´ e d’un algorithme glouton (quand c’est bien le cas), on peut proc´ eder comme suit :
1
soit T une solution optimale diff´ erente de la solution gloutonne S ;
2
on cherche la “premi` ere” diff´ erence entre S et T (par exemple en position i) ;
3
on montre que l’on peut remplacer la d´ ecision prise ` a l’´ etape i dans T par une d´ ecision gloutonne sans d´ egrader la qualit´ e de T ;
• Si l’on y parvient, la strat´ egie gloutonne est correcte,
puisqu’on peut transformer toute solution optimale en une
solution gloutonne sans la d´ egrader ;
Introduction Algorithmes gloutons Diviser pour r´egner
Preuve d’optimalit´ e
• Pour prouver l’optimalit´ e d’un algorithme glouton (quand c’est bien le cas), on peut proc´ eder comme suit :
1
soit T une solution optimale diff´ erente de la solution gloutonne S ;
2
on cherche la “premi` ere” diff´ erence entre S et T (par exemple en position i) ;
3
on montre que l’on peut remplacer la d´ ecision prise ` a l’´ etape i dans T par une d´ ecision gloutonne sans d´ egrader la qualit´ e de T ;
• Si l’on y parvient, la strat´ egie gloutonne est correcte, puisqu’on peut transformer toute solution optimale en une solution gloutonne sans la d´ egrader ;
23
Introduction Algorithmes gloutons Diviser pour r´egner
Preuve d’optimalit´ e
• Pour prouver l’optimalit´ e d’un algorithme glouton (quand c’est bien le cas), on peut proc´ eder comme suit :
1
soit T une solution optimale diff´ erente de la solution gloutonne S ;
2
on cherche la “premi` ere” diff´ erence entre S et T (par exemple en position i) ;
3
on montre que l’on peut remplacer la d´ ecision prise ` a l’´ etape i dans T par une d´ ecision gloutonne sans d´ egrader la qualit´ e de T ;
• Si l’on y parvient, la strat´ egie gloutonne est correcte,
puisqu’on peut transformer toute solution optimale en une
solution gloutonne sans la d´ egrader ;
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T , donc S est optimale puisque w (S)
≤w (T ).
25
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal),
T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de
poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer
jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T ,
donc S est optimale puisque w (S)
≤w (T ).
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur,
et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T , donc S est optimale puisque w (S)
≤w (T ).
27
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de
poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer
jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T ,
donc S est optimale puisque w (S)
≤w (T ).
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T , donc S est optimale puisque w (S)
≤w (T ).
29
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤
w (T ) puisque e
iest de
poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer
jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T ,
donc S est optimale puisque w (S)
≤w (T ).
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de poids minimum parmi les arˆ etes valides.
Il nous suffit donc de recommencer jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T , donc S est optimale puisque w (S)
≤w (T ).
31
Introduction Algorithmes gloutons Diviser pour r´egner
Correction de Prim / Kruskal
Proposition 1
Les algorithmes de Prim et de Kruskal fournissent bien des forˆ ets couvrantes de poids minimum.
D´ emonstration.
Soit S une solution gloutonne (Prim ou Kruskal), T une solution optimale de mˆ eme longueur, et i la position de la premi` ere diff´ erence entre S et T :
S = e
1e
2 · · ·e
i−1e
ie
i+1 · · ·e
nT = f
1f
2 · · ·f
i−1f
if
i+1 · · ·f
n= e
1e
2 · · ·e
i−1f
if
i+1 · · ·f
nRempla¸ cons f
ipar e
idans T ; on obtient
T
0= e
1e
2 · · ·e
i−1e
if
i+1 · · ·f
nLe coˆ ut de T
0est w (T
0) = w (T )
−w(f
i) + w (e
i)
≤w (T ) puisque e
iest de
poids minimum parmi les arˆ etes valides. Il nous suffit donc de recommencer
jusqu’` a ce que T devienne S ; aucune transformation n’augmente le coˆ ut de T ,
donc S est optimale puisque w (S)
≤w (T ).
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais
´ echoue ;
• Soit S = (s
1, s
2, . . . , s
p) et T = (t
1, t
2, . . . , t
q) avec q ≥ p ; s’il existe une bijection entre S et une sous-s´ equence de T pr´ eservant l’ordre des ´ el´ ements de S, alors S est une sous-s´ equence de T , et T est une super-s´ equence de S .
Exemple 1
BONJOUR est une sous-s´ equence de BONNE JOURN´ EE
33
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais
´ echoue ;
• Soit S = (s
1, s
2, . . . , s
p) et T = (t
1, t
2, . . . , t
q) avec q ≥ p ; s’il existe une bijection entre S et une sous-s´ equence de T pr´ eservant l’ordre des ´ el´ ements de S , alors S est une sous-s´ equence de T , et T est une super-s´ equence de S .
Exemple 1
BONJOUR est une sous-s´ equence de BONNE JOURN´ EE
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais
´ echoue ;
• Soit S = (s
1, s
2, . . . , s
p) et T = (t
1, t
2, . . . , t
q) avec q ≥ p ; s’il existe une bijection entre S et une sous-s´ equence de T pr´ eservant l’ordre des ´ el´ ements de S , alors S est une sous-s´ equence de T , et T est une super-s´ equence de S . Exemple 1
BONJOUR est une sous-s´ equence de BONNE JOURN´ EE
35
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de s´ equences donn´ ees qui soit la plus courte possible.
• Une approche gloutonne possible : tant qu’on a plus de deux chaˆınes, fusionner les deux chaˆınes dont la supers´ equence commune optimale est la plus “compacte” possible ;
• Comment mesurer cette compacit´ e ? On peut choisir de prendre le nombre de caract` eres suppl´ ementaires n´ ecessaires.
Exemple 2
GRAPHES (7 lettres) et ALGORITHMES (11 lettres) se
fusionnent de mani` ere optimale en ALGORIAPTHMES (13
lettres), au prix de 13 − 11 = 2 lettres suppl´ ementaires.
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de s´ equences donn´ ees qui soit la plus courte possible.
• Une approche gloutonne possible : tant qu’on a plus de deux chaˆınes, fusionner les deux chaˆınes dont la supers´ equence commune optimale est la plus “compacte” possible ;
• Comment mesurer cette compacit´ e ? On peut choisir de prendre le nombre de caract` eres suppl´ ementaires n´ ecessaires.
Exemple 2
GRAPHES (7 lettres) et ALGORITHMES (11 lettres) se fusionnent de mani` ere optimale en ALGORIAPTHMES (13 lettres), au prix de 13 − 11 = 2 lettres suppl´ ementaires.
37
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de s´ equences donn´ ees qui soit la plus courte possible.
• Une approche gloutonne possible : tant qu’on a plus de deux chaˆınes, fusionner les deux chaˆınes dont la supers´ equence commune optimale est la plus “compacte” possible ;
• Comment mesurer cette compacit´ e ? On peut choisir de prendre le nombre de caract` eres suppl´ ementaires n´ ecessaires.
Exemple 2
GRAPHES (7 lettres) et ALGORITHMES (11 lettres) se
fusionnent de mani` ere optimale en ALGORIAPTHMES (13
lettres), au prix de 13 − 11 = 2 lettres suppl´ ementaires.
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
• Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de s´ equences donn´ ees qui soit la plus courte possible.
• Une approche gloutonne possible : tant qu’on a plus de deux chaˆınes, fusionner les deux chaˆınes dont la supers´ equence commune optimale est la plus “compacte” possible ;
• Comment mesurer cette compacit´ e ? On peut choisir de prendre le nombre de caract` eres suppl´ ementaires n´ ecessaires.
Exemple 2
GRAPHES (7 lettres) et ALGORITHMES (11 lettres) se fusionnent de mani` ere optimale en ALGORIAPTHMES (13 lettres), au prix de 13 − 11 = 2 lettres suppl´ ementaires.
39
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
41
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST
ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
43
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
Introduction Algorithmes gloutons Diviser pour r´egner
Plus courte super-s´ equence commune
Exemple 3 (approche gloutonne)
LES
ALGOS
GLOUTONS
SONT
NULS
NULES
SGLOUTONST ASLGLOUTONST
ASLGLOUTONULEST
La solution gloutonne est de longueur 15, mais il existe une solution de taille 14 :
A S L E G L O N U T L O N S
L E S
A L G O S
G L O U T O N S
S O N T
N U L S
45
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des
probl` emes difficiles (NP-complets) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des probl` emes difficiles (NP-complets) ;
47
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des
probl` emes difficiles (NP-complets) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des probl` emes difficiles (NP-complets) ;
49
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des
probl` emes difficiles (NP-complets) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Bilan des algorithmes gloutons
• L’approche gloutonne donne rarement des solutions optimales ;
• Il s’agit n´ eanmoins d’une approche utile car :
• elle est intuitive ;
• elle est simple ` a impl´ ementer ;
• elle peut donner de bons r´ esultats approximatifs ;
• Le dernier point est important quand on a affaire ` a des probl` emes difficiles (NP-complets) ;
51
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
53
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
55
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
57
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
Introduction Algorithmes gloutons Diviser pour r´egner
Introduction rapide et approximative aux classes de complexit´ e
• On a :
• P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;
• NP : la classe des probl` emes v´ erifiables en temps polynomial ;
• les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;
• La tˆ ete du probl` eme P = NP est mise `
?a prix ` a $ 1,000,000 ;
• Si un probl` eme d’optimisation est “difficile”, on doit g´ en´ eralement choisir entre :
1
trouver une solution rapidement (mais sous-optimale) ;
2
trouver une solution optimale (mais lentement) ;
59
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de
calculer la solution sans proc´ eder ` a la division.
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de calculer la solution sans proc´ eder ` a la division.
61
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de
calculer la solution sans proc´ eder ` a la division.
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de calculer la solution sans proc´ eder ` a la division.
63
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de
calculer la solution sans proc´ eder ` a la division.
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de calculer la solution sans proc´ eder ` a la division.
65
Introduction Algorithmes gloutons Diviser pour r´egner
Diviser pour r´ egner
• L’approche “diviser pour r´ egner” comporte trois ingr´ edients :
1
diviser : d´ ecouper le probl` eme en sous-probl` emes ;
2
r´ egner : r´ esoudre les sous-probl` emes r´ ecursivement (ou directement s’ils sont de taille suffisamment petite) ;
3
combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart.
• L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de ces trois phases ; il faut que :
1
le d´ ecoupage soit bien choisi ;
2
combiner deux sous-solutions prenne moins de temps que de
calculer la solution sans proc´ eder ` a la division.
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne” partie ;
3 combiner
: renvoyer le premier r´ esultat fructueux (ou
nil).
G
1|m
1 |D
1G
2|m
2|D
2G
3|m
3|D
3O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)
⇒O(log n) au total.
67
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne” partie ;
3 combiner
: renvoyer le premier r´ esultat fructueux (ou
nil).
G
1|m
1|D
1G
2|m
2|D
2G
3|m
3|D
3O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)
⇒O(log n) au
total.
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne” partie ;
3 combiner
: renvoyer le premier r´ esultat fructueux (ou
nil).
G
1|m
1|D
1G
2|m
2|D
2G
3|m
3|D
3O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)
⇒O(log n) au total.
69
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne”
partie ;
3 combiner
: renvoyer le premier r´ esultat fructueux (ou
nil).
G
1|m
1|D
1G
2|m
2|D
2G
3|m
3|D
3O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)
⇒O(log n) au
total.
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne”
partie ;
3 combiner
: renvoyer le premier r´ esultat fructueux (ou
nil).
G
1|m
1|D
1G
2|m
2|D
2G
3|m
3|D
3O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)
⇒O(log n) au total.
71
Introduction Algorithmes gloutons Diviser pour r´egner
Recherche d’un ´ el´ ement dans une s´ equence tri´ ee
•
Approche triviale : O(n) ;
•
Approche diviser pour r´ egner : O(log n) (dichotomie)
1 diviser
: diviser l’intervalle de recherche en deux parties (presque) ´ egales ;
2 r´egner
: renvoyer la position du milieu ou relancer la recherche r´ ecursivement dans la “bonne”
partie ;
3 combiner