• Aucun résultat trouvé

Algorithmique des graphes 9 — Techniques algorithmiques Anthony Labarre 7 avril 2021

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique des graphes 9 — Techniques algorithmiques Anthony Labarre 7 avril 2021"

Copied!
89
0
0

Texte intégral

(1)

Algorithmique des graphes

9 — Techniques algorithmiques

Anthony Labarre

7 avril 2021

(2)

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 ;

3

(4)

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 ;

5

(6)

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 ;

(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 ;

7

(8)

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 ;

9

(10)

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 ;

(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

c1c01 · · ·

choix c01

choix c1

11

(12)

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

c1c01 · · ·

choix c01

choix c1

(13)

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

c1c01 · · ·

choix c01

choix c1

13

(14)

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

(15)

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

(16)

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 ;

17

(18)

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

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

(20)

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 ;

21

(22)

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 ;

23

(24)

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 ;

(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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

(26)

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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

(28)

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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

(30)

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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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

(32)

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

1

e

2 · · ·

e

i−1

e

i

e

i+1 · · ·

e

n

T = f

1

f

2 · · ·

f

i−1

f

i

f

i+1 · · ·

f

n

= e

1

e

2 · · ·

e

i−1

f

i

f

i+1 · · ·

f

n

Rempla¸ cons f

i

par e

i

dans T ; on obtient

T

0

= e

1

e

2 · · ·

e

i−1

e

i

f

i+1 · · ·

f

n

Le coˆ ut de T

0

est w (T

0

) = w (T )

w(f

i

) + w (e

i

)

w (T ) puisque e

i

est 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 ).

(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

33

(34)

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

• 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

(36)

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.

37

(38)

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

• 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

(40)

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

41

(42)

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

43

(44)

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

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

(46)

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) ;

47

(48)

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) ;

49

(50)

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

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

(52)

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) ;

53

(54)

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) ;

55

(56)

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) ;

57

(58)

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

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

(60)

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.

61

(62)

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.

63

(64)

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.

65

(66)

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.

(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

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)

O(log n) au total.

67

(68)

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

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(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

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)

O(log n) au total.

69

(70)

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

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(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

: renvoyer le premier r´ esultat fructueux (ou

nil

).

G

1|

m

1|

D

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)

O(log n) au total.

71

(72)

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

1

G

2|

m

2|

D

2

G

3|

m

3|

D

3

O(log n) d´ ecoupes, toutes les autres op´ erations sont en O(1)

O(log n) au

total.

Références

Documents relatifs

les parcours largeur, profondeur et les arbres associés ; le calcul des composantes connexes ; la détection de cycle ; la reconnaissance des graphes bipartis ;... Correction

Introduction Les bases La m´ ethode de Ford-Fulkerson Coupes minimum Complexit´ e de l’algorithme

• Dans le cas o` u le graphe n’est pas biparti, le probl` eme reste soluble en temps polynomial mais l’algorithme est beaucoup plus complexe [2] ;. • Et si l’on veut des

Introduction Principes Probl` eme de d´ ecoupe Distance d’´ edition Reconstruction des solutions optimales.. R´ esum´ e des ´ episodes pr´

et donc, le poids d’une solution optimale pour tsp est au moins celui d’un ACPM, qu’on est capable de trouver en temps polynomial ;.. Introduction vertex cover

Introduction Preuve du th´ eor` eme max-flow min-cut Algorithme de Dinitz Couplages dans un graphe biparti.. R´ esum´ e des ´ episodes pr´

I La m´ ethode de Ford-Fulkerson proc` ede comme suit ; on d´ emarre avec un flot f nul partout pour le r´ eseau G , et ` a chaque it´ eration :.. on augmente au maximum f sur les

combiner : combiner les solutions des sous-probl` emes pour obtenir la solution au probl` eme de d´ epart. I L’efficacit´ e de cette approche d´ epend fortement des complexit´ es de