• Aucun résultat trouvé

Techniques algorithmiques Algorithmique des graphes Anthony Labarre 27 avril 2020

N/A
N/A
Protected

Academic year: 2022

Partager "Techniques algorithmiques Algorithmique des graphes Anthony Labarre 27 avril 2020"

Copied!
79
0
0

Texte intégral

(1)

Techniques algorithmiques

Algorithmique des graphes

Anthony Labarre

27 avril 2020

(2)

Introduction Algorithmes gloutons Diviser pour r´egner

Techniques algorithmiques

I 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, . . . ).

I On va examiner plus en profondeur les principes de ces

algorithmes ;

(3)

Introduction Algorithmes gloutons Diviser pour r´egner

Techniques algorithmiques

I 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, . . . ).

I On va examiner plus en profondeur les principes de ces

algorithmes ;

(4)

Introduction Algorithmes gloutons Diviser pour r´egner

Techniques algorithmiques

I 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, . . . ).

I On va examiner plus en profondeur les principes de ces

algorithmes ;

(5)

Introduction Algorithmes gloutons Diviser pour r´egner

Techniques algorithmiques

I 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, . . . ).

I On va examiner plus en profondeur les principes de ces

algorithmes ;

(6)

Introduction Algorithmes gloutons Diviser pour r´egner

Techniques algorithmiques

I 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, . . . ).

I On va examiner plus en profondeur les principes de ces

algorithmes ;

(7)

Introduction Algorithmes gloutons Diviser pour r´egner

Points communs

I Les trois techniques que l’on vient de mentionner ont un point commun ;

I Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;

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

I Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud

les sous-probl` emes et dont on exploite leurs solutions ;

(8)

Introduction Algorithmes gloutons Diviser pour r´egner

Points communs

I Les trois techniques que l’on vient de mentionner ont un point commun ;

I Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;

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

I 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

I Les trois techniques que l’on vient de mentionner ont un point commun ;

I Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;

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

I Les techniques vont diff´ erer selon la mani` ere dont on r´ esoud

les sous-probl` emes et dont on exploite leurs solutions ;

(10)

Introduction Algorithmes gloutons Diviser pour r´egner

Points communs

I Les trois techniques que l’on vient de mentionner ont un point commun ;

I Il s’agit de la subdivision du probl` eme d’entr´ ee en sous-probl` emes ;

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

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

choix ck ...

c2

choixc2

c1

choix c0

k

... choixc02

c1c01 · · ·

choix c01

choix c1

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

choix ck ...

c2

choixc2

c1

choix c0

k

... choixc02

c1c01 · · ·

choix c01

choix c1

(14)

Introduction Algorithmes gloutons Diviser pour r´egner

Exemple : forˆ et couvrante de poids minimum (Kruskal)

I Le poids de la forˆ et est la somme des poids de ses arˆ etes ; I Strat´ egie gloutonne : privil´ egier les arˆ etes de poids minimum ; I 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

.. .

4 6

4 7

12 3

(15)

Introduction Algorithmes gloutons Diviser pour r´egner

Exemple : plus courts chemins (Dijkstra)

I Le sch´ ema glouton est moins ´ evident pour l’algorithme de Dijkstra, mais la philosophie est la mˆ eme ;

I Le but est de d´ ecouvrir les plus courts chemins d’un sommet s

`

a tous les autres ;

I on parcourt les sommets par proximit´ e (distance estim´ ee minimale ` a s) ;

I ` a chaque nouveau sommet d´ ecouvert, on profite des raccourcis

passant par ce sommet pour am´ eliorer nos estimations ;

(16)

Introduction Algorithmes gloutons Diviser pour r´egner

Caract´ eristiques des algorithmes gloutons

I Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;

I Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;

I Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;

I Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;

(17)

Introduction Algorithmes gloutons Diviser pour r´egner

Caract´ eristiques des algorithmes gloutons

I Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;

I Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;

I Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;

I Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;

(18)

Introduction Algorithmes gloutons Diviser pour r´egner

Caract´ eristiques des algorithmes gloutons

I Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;

I Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;

I Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;

I Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;

(19)

Introduction Algorithmes gloutons Diviser pour r´egner

Caract´ eristiques des algorithmes gloutons

I Les algorithmes gloutons effectuent des choix localement optimaux dans l’espoir d’obtenir une solution globalement optimale ;

I Ils ne remettent pas en question les choix effectu´ es aux ´ etapes ant´ erieures ;

I Pour qu’ils fonctionnent, il faut donc que le probl` eme poss` ede une structure particuli` ere ;

I Pour en savoir plus : voir [1], chapitre sur les matro¨ıdes ;

(20)

Introduction Algorithmes gloutons Diviser pour r´egner

Preuve d’optimalit´ e

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

I 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

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

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

(22)

Introduction Algorithmes gloutons Diviser pour r´egner

Preuve d’optimalit´ e

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

I 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

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

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

(24)

Introduction Algorithmes gloutons Diviser pour r´egner

Preuve d’optimalit´ e

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

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

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

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

(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

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

(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

(33)

Introduction Algorithmes gloutons Diviser pour r´egner

Plus courte super-s´ equence commune

I Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais

´ echoue ;

I 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

(34)

Introduction Algorithmes gloutons Diviser pour r´egner

Plus courte super-s´ equence commune

I Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais

´ echoue ;

I 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

I Pour ´ eviter de croire que la strat´ egie gloutonne marche toujours, examinons un probl` eme o` u elle semble naturelle mais

´ echoue ;

I 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

(36)

Introduction Algorithmes gloutons Diviser pour r´egner

Plus courte super-s´ equence commune

I Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de chaˆınes donn´ ees qui soit la plus courte possible.

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

I Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de chaˆınes donn´ ees qui soit la plus courte possible.

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

I 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.

(38)

Introduction Algorithmes gloutons Diviser pour r´egner

Plus courte super-s´ equence commune

I Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de chaˆınes donn´ ees qui soit la plus courte possible.

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

I Le probl` eme de la plus courte super-s´ equence commune demande de trouver une super-s´ equence commune ` a un ensemble de chaˆınes donn´ ees qui soit la plus courte possible.

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

(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

(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

(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

(46)

Introduction Algorithmes gloutons Diviser pour r´egner

Bilan des algorithmes gloutons

I L’approche gloutonne donne rarement des solutions optimales ;

I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ;

I 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

I L’approche gloutonne donne rarement des solutions optimales ; I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ; I Le dernier point est important quand on a affaire ` a des

probl` emes difficiles (NP-complets) ;

(48)

Introduction Algorithmes gloutons Diviser pour r´egner

Bilan des algorithmes gloutons

I L’approche gloutonne donne rarement des solutions optimales ; I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ; I 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

I L’approche gloutonne donne rarement des solutions optimales ; I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ; I Le dernier point est important quand on a affaire ` a des

probl` emes difficiles (NP-complets) ;

(50)

Introduction Algorithmes gloutons Diviser pour r´egner

Bilan des algorithmes gloutons

I L’approche gloutonne donne rarement des solutions optimales ; I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ;

I 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

I L’approche gloutonne donne rarement des solutions optimales ; I Il s’agit n´ eanmoins d’une approche utile car :

I elle est intuitive ;

I elle est simple ` a impl´ ementer ;

I elle peut donner de bons r´ esultats approximatifs ; I Le dernier point est important quand on a affaire ` a des

probl` emes difficiles (NP-complets) ;

(52)

Introduction Algorithmes gloutons Diviser pour r´egner

Introduction rapide et approximative aux classes de complexit´ e

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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) ;

(54)

Introduction Algorithmes gloutons Diviser pour r´egner

Introduction rapide et approximative aux classes de complexit´ e

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ;

I les probl` emes NP-complets et NP-durs : on conjecture qu’ils ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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) ;

(56)

Introduction Algorithmes gloutons Diviser pour r´egner

Introduction rapide et approximative aux classes de complexit´ e

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ;

I 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

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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) ;

(58)

Introduction Algorithmes gloutons Diviser pour r´egner

Introduction rapide et approximative aux classes de complexit´ e

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I 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

I On a :

I P : la classe des probl` emes solubles en temps polynomial (en la taille de l’entr´ ee) ;

I NP : la classe des probl` emes v´ erifiables en temps polynomial ; I les probl` emes NP-complets et NP-durs : on conjecture qu’ils

ne sont pas dans P ;

I La tˆ ete du probl` eme P = NP est mise `

?

a prix ` a $ 1,000,000 ; I Si un probl` eme d’optimisation est “difficile”, on doit

g´ en´ eralement choisir entre :

1. trouver une solution rapidement (mais sous-optimale) ;

(60)

Introduction Algorithmes gloutons Diviser pour r´egner

Diviser pour r´ egner

I 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.

I 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

I 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.

I 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.

(62)

Introduction Algorithmes gloutons Diviser pour r´egner

Diviser pour r´ egner

I 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.

I 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

I 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.

I 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.

(64)

Introduction Algorithmes gloutons Diviser pour r´egner

Diviser pour r´ egner

I 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.

I 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

I 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.

I 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.

(66)

Introduction Algorithmes gloutons Diviser pour r´egner

Diviser pour r´ egner

I 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.

I 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

I

Approche triviale : O(n) ;

I

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.

(68)

Introduction Algorithmes gloutons Diviser pour r´egner

Recherche d’un ´ el´ ement dans une s´ equence tri´ ee

I

Approche triviale : O(n) ;

I

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

I

Approche triviale : O(n) ;

I

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.

(70)

Introduction Algorithmes gloutons Diviser pour r´egner

Recherche d’un ´ el´ ement dans une s´ equence tri´ ee

I

Approche triviale : O(n) ;

I

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

I

Approche triviale : O(n) ;

I

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.

(72)

Introduction Algorithmes gloutons Diviser pour r´egner

Recherche d’un ´ el´ ement dans une s´ equence tri´ ee

I

Approche triviale : O(n) ;

I

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

(73)

Introduction Algorithmes gloutons Diviser pour r´egner

Tri d’une s´ equence

I Algorithmes basiques : O (n

2

)

I Approche diviser pour r´ egner : O(n log n) (tri fusion)

1. diviser : diviser la s´ equence en deux parties (presque)

´ egales ;

2. r´ egner : ne rien faire (longueur ≤ 1) ou trier r´ ecursivement les deux sous-s´ equences ;

3. combiner : fusionner les deux sous-parties tri´ ees en une s´ equence tri´ ee.

TRIFUSION TRIFU TRI TR T R

I FU

F U

SION SI

S I

ON

O N

FIINORSTU FIRTU IRT RT I

FU

F U

INOS IS

S I

NO

O N

Hauteur de l’arbre : O(log n), fusions en O (n) ⇒ O (n log n) au

total.

(74)

Introduction Algorithmes gloutons Diviser pour r´egner

Tri d’une s´ equence

I Algorithmes basiques : O (n

2

)

I Approche diviser pour r´ egner : O(n log n) (tri fusion)

1. diviser : diviser la s´ equence en deux parties (presque)

´ egales ;

2. r´ egner : ne rien faire (longueur ≤ 1) ou trier r´ ecursivement les deux sous-s´ equences ;

3. combiner : fusionner les deux sous-parties tri´ ees en une s´ equence tri´ ee.

TRIFUSION TRIFU TRI TR T R

I FU

F U

SION SI

S I

ON

O N

FIINORSTU FIRTU IRT RT I

FU

F U

INOS IS

S I

NO

O N

Hauteur de l’arbre : O(log n), fusions en O (n) ⇒ O (n log n) au

total.

Références

Documents relatifs

2- En introduisant des variables d’ ´ ecart, mettre ce probl` eme d’optimisation lin´ eaire sous forme standard.. On note Q l’ ensemble admissible du

3-On veut appliquer la m´ ethode du simplexe et trouver le minimum de f sur P.. Quel est le sommet ainsi mis en

Universit´ e Pierre et Marie Curie – Paris 6 Examen de travaux pratiques Licence de Math´ ematiques LM380 – Analyse Hilbertienne et Num´ erique.. 28 mai 2008 8h30 `

Dans toute la suite du probl` eme, l’espace H et l’op´ erateur T sont ceux d´ efinis dans le pr´ eambule du probl` eme. (a) Calculer les valeurs propres et vecteurs propres

Cependant, L −1 2 L 1 est une matrice triangulaire inf´ erieure de type unit´ e en tant que produit de deux telles matrices, tandis que U 2 U 1 −1 est une matrice triangulaire

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

I Chaque op´ eration d´ ecoupe un morceau en deux : A, qu’on ne d´ ecoupe plus, et B , qu’on d´ ecoupe de mani` ere optimale ; I Pour reconstruire la d´ ecoupe optimale, on stocke

Dans une biblioth` eque de 6 ´ etag` eres pouvant contenir 40 livres chacune, Iliona souhaite ranger ses 261 livres. Combien de livres ne pourra-t-elle pas ranger dans la