La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.

Présentations similaires


Présentation au sujet: "Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité."— Transcription de la présentation:

1 Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.

2 17/21 novembre 2006Cours d'algorithmique 5 - Intranet2 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track Le back-track Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer Divide and conquer Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion Divers problèmes particuliers Divers problèmes particuliers Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours

3 17/21 novembre 2006Cours d'algorithmique 5 - Intranet3 Divide and Conquer ----------------------------------------------------------------- Diviser pour régner !

4 17/21 novembre 2006Cours d'algorithmique 5 - Intranet4 Divide and Conquer ----------------------------------------------------------------- Diviser pour régner ! Principe : Principe : – Couper en 2 (ou plus) un problème, – résoudre séparément les sous-problèmes créés, ce sont des appels récursifs, – recombiner les résultats partiels afin dobtenir le résultat global !

5 17/21 novembre 2006Cours d'algorithmique 5 - Intranet5 Divide and Conquer ----------------------------------------------------------------- Diviser pour régner ! Principe : Principe : – Couper en 2 (ou plus) un problème, – résoudre séparément les sous-problèmes créés, ce sont des appels récursifs, – recombiner les résultats partiels afin dobtenir le résultat global !

6 17/21 novembre 2006Cours d'algorithmique 5 - Intranet6 Divide and Conquer ----------------------------------------------------------------- Diviser pour régner ! Principe : Principe : – Couper en 2 (ou plus) un problème, – résoudre séparément les sous-problèmes créés, ce sont des appels récursifs, – recombiner les résultats partiels afin dobtenir le résultat global !

7 17/21 novembre 2006Cours d'algorithmique 5 - Intranet7 Divide and Conquer ----------------------------------------------------------------- Diviser pour régner ! Principe : Principe : – Couper en 2 (ou plus) un problème, – résoudre séparément les sous-problèmes créés, ce sont des appels récursifs, – recombiner les résultats partiels afin dobtenir le résultat global !

8 17/21 novembre 2006Cours d'algorithmique 5 - Intranet8 Divide and Conquer ----------------------------------------------------------------- Un grand nombre de parcours darbres sont de type « diviser pour régner ». Un grand nombre de parcours darbres sont de type « diviser pour régner ». Exemple, le calcul de la hauteur dun arbre : Exemple, le calcul de la hauteur dun arbre :

9 17/21 novembre 2006Cours d'algorithmique 5 - Intranet9 Divide and Conquer ----------------------------------------------------------------- Un grand nombre de parcours darbres sont de type « diviser pour régner ». Un grand nombre de parcours darbres sont de type « diviser pour régner ». Exemple, le calcul de la hauteur dun arbre : Exemple, le calcul de la hauteur dun arbre : – Couper en deux sous-arbres, le fils gauche et le fils droit,

10 17/21 novembre 2006Cours d'algorithmique 5 - Intranet10 Divide and Conquer ----------------------------------------------------------------- Un grand nombre de parcours darbres sont de type « diviser pour régner ». Un grand nombre de parcours darbres sont de type « diviser pour régner ». Exemple, le calcul de la hauteur dun arbre : Exemple, le calcul de la hauteur dun arbre : – Couper en deux sous-arbres, le fils gauche et le fils droit, – calculer séparément les hauteurs des sous-arbres à laide dappels récursifs,

11 17/21 novembre 2006Cours d'algorithmique 5 - Intranet11 Divide and Conquer ----------------------------------------------------------------- Un grand nombre de parcours darbres sont de type « diviser pour régner ». Un grand nombre de parcours darbres sont de type « diviser pour régner ». Exemple, le calcul de la hauteur dun arbre : Exemple, le calcul de la hauteur dun arbre : – Couper en deux sous-arbres, le fils gauche et le fils droit, – calculer séparément les hauteurs des sous-arbres à laide dappels récursifs, – déduire la hauteur de larbre globale à partir de la hauteur de ses sous-arbres.

12 17/21 novembre 2006Cours d'algorithmique 5 - Intranet12 Divide and Conquer ----------------------------------------------------------------- Un grand nombre de parcours darbres sont de type « diviser pour régner ». Un grand nombre de parcours darbres sont de type « diviser pour régner ». Exemple, le calcul de la hauteur dun arbre : Exemple, le calcul de la hauteur dun arbre : – Couper en deux sous-arbres, le fils gauche et le fils droit, – calculer séparément les hauteurs des sous-arbres à laide dappels récursifs, – déduire la hauteur de larbre globale à partir de la hauteur de ses sous-arbres. Linduction sur la structure est du Divide and Conquer !

13 17/21 novembre 2006Cours d'algorithmique 5 - Intranet13 Divide and Conquer ----------------------------------------------------------------- Autre exemple déjà rencontré, le tri par fusion : Autre exemple déjà rencontré, le tri par fusion :

14 17/21 novembre 2006Cours d'algorithmique 5 - Intranet14 Divide and Conquer ----------------------------------------------------------------- Autre exemple déjà rencontré, le tri par fusion : Autre exemple déjà rencontré, le tri par fusion : – Nous coupons le tableau en deux sous-tableaux,

15 17/21 novembre 2006Cours d'algorithmique 5 - Intranet15 Divide and Conquer ----------------------------------------------------------------- Autre exemple déjà rencontré, le tri par fusion : Autre exemple déjà rencontré, le tri par fusion : – Nous coupons le tableau en deux sous-tableaux, – que nous trions récursivement, ce sont deux appels récursifs indépendants,

16 17/21 novembre 2006Cours d'algorithmique 5 - Intranet16 Divide and Conquer ----------------------------------------------------------------- Autre exemple déjà rencontré, le tri par fusion : Autre exemple déjà rencontré, le tri par fusion : – Nous coupons le tableau en deux sous-tableaux, – que nous trions récursivement, ce sont deux appels récursifs indépendants, – avant de les fusionner en une seule liste triée.

17 17/21 novembre 2006Cours d'algorithmique 5 - Intranet17 Pseudo-code pour le Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; }

18 17/21 novembre 2006Cours d'algorithmique 5 - Intranet18 Pseudo-code pour le Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } Trivial, comme presque toujours !

19 17/21 novembre 2006Cours d'algorithmique 5 - Intranet19 Pseudo-code pour le Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } Traitons les deux sous-problèmes !

20 17/21 novembre 2006Cours d'algorithmique 5 - Intranet20 Pseudo-code pour le Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } Traitons les deux sous-problèmes ! Et recombinons les résultats !

21 17/21 novembre 2006Cours d'algorithmique 5 - Intranet21 Divide and Conquer ----------------------------------------------------------------- Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car :

22 17/21 novembre 2006Cours d'algorithmique 5 - Intranet22 Divide and Conquer ----------------------------------------------------------------- Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : – Nous envisageons deux possibilités,

23 17/21 novembre 2006Cours d'algorithmique 5 - Intranet23 Divide and Conquer ----------------------------------------------------------------- Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : – Nous envisageons deux possibilités, – que nous explorons récursivement et « indépendamment » lune de lautre,

24 17/21 novembre 2006Cours d'algorithmique 5 - Intranet24 Divide and Conquer ----------------------------------------------------------------- Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : Finalement, tout le principe du « back-track » nest que du « diviser pour régner », car : – Nous envisageons deux possibilités, – que nous explorons récursivement et « indépendamment » lune de lautre, – afin de retenir la première solution qui nous convienne.

25 17/21 novembre 2006Cours d'algorithmique 5 - Intranet25 Relation entre Back-track et Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } back_track back_track back_track ou_bien

26 17/21 novembre 2006Cours d'algorithmique 5 - Intranet26 Relation entre Back-track et Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return( valeur( situation ) ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } back_track back_track back_track ou_bien ou_bien nest pas une fonction stricte !

27 17/21 novembre 2006Cours d'algorithmique 5 - Intranet27 Relation entre Back-track et Divide and Conquer ----------------------------------------------------------------- un_type divide_and_conquer ( autre_type situation ) {if ( cas_de_base( situation ) ) return(... ) ; else return( recombine( divide_and_conquer( sous_probleme_A( situation ) ), divide_and_conquer( sous_probleme_B( situation ) ) ) ) ; } back_track_toutes back_track_toutes back_track_toutes union

28 17/21 novembre 2006Cours d'algorithmique 5 - Intranet28 C O M P L E X I T E D U D I V I D E & C O N Q U E R Complexité typique du Divide and Conquer -----------------------------------------------------------------

29 17/21 novembre 2006Cours d'algorithmique 5 - Intranet29 Complexité typique du Divide and Conquer ----------------------------------------------------------------- La relation de base, pour un problème de taille n, est : La relation de base, pour un problème de taille n, est : T ( n ) = 2 * T ( n/2 ) + O ( f(n) )

30 17/21 novembre 2006Cours d'algorithmique 5 - Intranet30 Complexité typique du Divide and Conquer ----------------------------------------------------------------- La relation de base, pour un problème de taille n, est : La relation de base, pour un problème de taille n, est : T ( n ) = 2 * T ( n/2 ) + O ( f(n) ) La complexité de la décomposition et de la recombinaison est en O ( f(n) ). La complexité de la décomposition et de la recombinaison est en O ( f(n) ).

31 17/21 novembre 2006Cours d'algorithmique 5 - Intranet31 Complexité typique du Divide and Conquer ----------------------------------------------------------------- La relation de base, pour un problème de taille n, est : La relation de base, pour un problème de taille n, est : T ( n ) = 2 * T ( n/2 ) + O ( f(n) ) La complexité de la décomposition et de la recombinaison est en O ( f(n) ). La complexité de la décomposition et de la recombinaison est en O ( f(n) ). Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : T ( n ) = 2^i ( f(n/2^i) ) log n-1 i = 0

32 17/21 novembre 2006Cours d'algorithmique 5 - Intranet32 Complexité typique du Divide and Conquer ----------------------------------------------------------------- La relation de base, pour un problème de taille n, est : La relation de base, pour un problème de taille n, est : T ( n ) = 2 * T ( n/2 ) + O ( f(n) ) La complexité de la décomposition et de la recombinaison est en O ( f(n) ). La complexité de la décomposition et de la recombinaison est en O ( f(n) ). Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : T ( n ) = 2^i ( f(n/2^i) ) Si f( n ) = n, ce qui est assez fréquent, alors nous avons : Si f( n ) = n, ce qui est assez fréquent, alors nous avons : T ( n ) = n * ( 1 + log ( n-1 ) ) n * log n T ( n ) = n * ( 1 + log ( n-1 ) ) n * log n log n-1 i = 0

33 17/21 novembre 2006Cours d'algorithmique 5 - Intranet33 Complexité typique du Divide and Conquer ----------------------------------------------------------------- La relation de base, pour un problème de taille n, est : La relation de base, pour un problème de taille n, est : T ( n ) = 2 * T ( n/2 ) + O ( f(n) ) La complexité de la décomposition et de la recombinaison est en O ( f(n) ). La complexité de la décomposition et de la recombinaison est en O ( f(n) ). Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : Comme nous lavons déjà vu, cette équation donne lieu à la solution générale suivante : T ( n ) = 2^i ( f(n/2^i) ) Si f( n ) = n^2, alors nous avons : Si f( n ) = n^2, alors nous avons : T ( n ) = 2 * n^2 * ( 1 – (1/2) * ( 1 + log ( n-1 ) ) ) n^2 T ( n ) = 2 * n^2 * ( 1 – (1/2) * ( 1 + log ( n-1 ) ) ) n^2 log n-1 i = 0

34 17/21 novembre 2006Cours d'algorithmique 5 - Intranet34 L E S T O U R S D E H A N O I Divide and Conquer -----------------------------------------------------------------

35 17/21 novembre 2006Cours d'algorithmique 5 - Intranet35 Divide and Conquer ----------------------------------------------------------------- Archi-classique, les tours de Hanoï : Archi-classique, les tours de Hanoï : – Trois piquets et une « pagode » de disques,

36 17/21 novembre 2006Cours d'algorithmique 5 - Intranet36 Divide and Conquer ----------------------------------------------------------------- Archi-classique, les tours de Hanoï : Archi-classique, les tours de Hanoï : – Trois piquets et une « pagode » de disques, – il faut déplacer la pagode du premier piquet vers le 3 e, le second servant dintermédiaire,

37 17/21 novembre 2006Cours d'algorithmique 5 - Intranet37 Divide and Conquer ----------------------------------------------------------------- Archi-classique, les tours de Hanoï : Archi-classique, les tours de Hanoï : – Trois piquets et une « pagode » de disques, – il faut déplacer la pagode du premier piquet vers le 3 e, le second servant dintermédiaire, – et respecter les règles suivantes : nous déplaçons un disque à la fois, nous déplaçons un disque à la fois, nous ne posons jamais un disque sur un autre disque plus petit que lui. nous ne posons jamais un disque sur un autre disque plus petit que lui.

38 17/21 novembre 2006Cours d'algorithmique 5 - Intranet38 Divide and Conquer ----------------------------------------------------------------- H ( n, X, Y ) le fait de déplacer « n » disques (ceux du haut) du piquet « X » vers le piquet « Y ». H ( n, X, Y ) le fait de déplacer « n » disques (ceux du haut) du piquet « X » vers le piquet « Y ». Alors, nous avons la décomposition suivante pour : Alors, nous avons la décomposition suivante pour : H ( 4, A, C ) ABC

39 17/21 novembre 2006Cours d'algorithmique 5 - Intranet39 Divide and Conquer ----------------------------------------------------------------- H ( n, X, Y ) le fait de déplacer « n » disques (ceux du haut) du piquet « X » vers le piquet « Y ». H ( n, X, Y ) le fait de déplacer « n » disques (ceux du haut) du piquet « X » vers le piquet « Y ». Alors, nous avons la décomposition suivante pour : Alors, nous avons la décomposition suivante pour : H ( 4, A, C ) ABC H ( 3, A, B ) ABC

40 17/21 novembre 2006Cours d'algorithmique 5 - Intranet40 Divide and Conquer ----------------------------------------------------------------- ABC

41 17/21 novembre 2006Cours d'algorithmique 5 - Intranet41 Divide and Conquer ----------------------------------------------------------------- H ( 1, A, C ) ABC ABC

42 17/21 novembre 2006Cours d'algorithmique 5 - Intranet42 Divide and Conquer ----------------------------------------------------------------- ABC

43 17/21 novembre 2006Cours d'algorithmique 5 - Intranet43 Divide and Conquer ----------------------------------------------------------------- ABC H ( 3, B, C ) ABC

44 17/21 novembre 2006Cours d'algorithmique 5 - Intranet44 Divide and Conquer ----------------------------------------------------------------- void hanoi ( int n, piquet depart, piquet arrivee ) {if ( n == 1 ) deplacer( depart, arrivee ); else {hanoi( n-1, depart, troisieme( depart, arrivee )) ; deplacer( depart, arrivee ); hanoi( n-1, troisieme( depart, arrivee), arrivee) ; }

45 17/21 novembre 2006Cours d'algorithmique 5 - Intranet45 Divide and Conquer ----------------------------------------------------------------- void hanoi ( int n, piquet depart, piquet arrivee ) {if ( n == 1 ) deplacer( depart, arrivee ); else {hanoi( n-1, depart, troisieme( depart, arrivee )) ; deplacer( depart, arrivee ); hanoi( n-1, troisieme( depart, arrivee), arrivee) ; } Le déplacement élémentaire !

46 17/21 novembre 2006Cours d'algorithmique 5 - Intranet46 Divide and Conquer ----------------------------------------------------------------- void hanoi ( int n, piquet depart, piquet arrivee ) {if ( n == 1 ) deplacer( depart, arrivee ); else {hanoi( n-1, depart, troisieme( depart, arrivee )) ; deplacer( depart, arrivee ); hanoi( n-1, troisieme( depart, arrivee), arrivee) ; } Premier appel récursif !

47 17/21 novembre 2006Cours d'algorithmique 5 - Intranet47 Divide and Conquer ----------------------------------------------------------------- void hanoi ( int n, piquet depart, piquet arrivee ) {if ( n == 1 ) deplacer( depart, arrivee ); else {hanoi( n-1, depart, troisieme( depart, arrivee )) ; deplacer( depart, arrivee ); hanoi( n-1, troisieme( depart, arrivee), arrivee) ; } Premier appel récursif ! Deuxième appel récursif !

48 17/21 novembre 2006Cours d'algorithmique 5 - Intranet48 Divide and Conquer ----------------------------------------------------------------- void hanoi ( int n, piquet depart, piquet arrivee ) {if ( n == 1 ) deplacer( depart, arrivee ); else {hanoi( n-1, depart, troisieme( depart, arrivee )) ; deplacer( depart, arrivee ); hanoi( n-1, troisieme( depart, arrivee), arrivee) ; } Premier appel récursif ! Deuxième appel récursif ! La composition !

49 17/21 novembre 2006Cours d'algorithmique 5 - Intranet49 U N E R E G L E G R A D U E E Divide and Conquer -----------------------------------------------------------------

50 17/21 novembre 2006Cours d'algorithmique 5 - Intranet50 Divide and Conquer ----------------------------------------------------------------- Autre exemple : dessiner une règle graduée binaire ! Autre exemple : dessiner une règle graduée binaire !

51 17/21 novembre 2006Cours d'algorithmique 5 - Intranet51 Divide and Conquer ----------------------------------------------------------------- Autre exemple : dessiner une règle graduée binaire ! Autre exemple : dessiner une règle graduée binaire ! Divide and Conquer ? ? ? Divide and Conquer ? ? ?

52 17/21 novembre 2006Cours d'algorithmique 5 - Intranet52 Divide and Conquer ----------------------------------------------------------------- Autre exemple : dessiner une règle graduée binaire ! Autre exemple : dessiner une règle graduée binaire ! Divide and Conquer ? ? ? Bien-sûr ! ! ! Divide and Conquer ? ? ? Bien-sûr ! ! !

53 17/21 novembre 2006Cours d'algorithmique 5 - Intranet53 Divide and Conquer ----------------------------------------------------------------- Autre exemple : dessiner une règle graduée binaire ! Autre exemple : dessiner une règle graduée binaire ! Divide and Conquer ? ? ? Bien-sûr ! ! ! Divide and Conquer ? ? ? Bien-sûr ! ! !

54 17/21 novembre 2006Cours d'algorithmique 5 - Intranet54 Divide and Conquer ----------------------------------------------------------------- Autre exemple : dessiner une règle graduée binaire ! Autre exemple : dessiner une règle graduée binaire ! Divide and Conquer ? ? ? Bien-sûr ! ! ! Divide and Conquer ? ? ? Bien-sûr ! ! !

55 17/21 novembre 2006Cours d'algorithmique 5 - Intranet55 Divide and Conquer ----------------------------------------------------------------- void dessine ( int gauche, int droite, int hauteur ) {if ( haut > 0 ) {milieu = ( gauche + droite ) / 2 ; barre( milieu, haut ) ; dessine( gauche, milieu, haut - 1 ) ; dessine( milieu, droite, haut - 1 ) ; } Il ny a rien a faire pour une barre de hauteur nulle !

56 17/21 novembre 2006Cours d'algorithmique 5 - Intranet56 Divide and Conquer ----------------------------------------------------------------- void dessine ( int gauche, int droite, int hauteur ) {if ( haut > 0 ) {milieu = ( gauche + droite ) / 2 ; barre( milieu, haut ) ; dessine( gauche, milieu, haut - 1 ) ; dessine( milieu, droite, haut - 1 ) ; } Dessine la barre centrale !

57 17/21 novembre 2006Cours d'algorithmique 5 - Intranet57 Divide and Conquer ----------------------------------------------------------------- void dessine ( int gauche, int droite, int hauteur ) {if ( haut > 0 ) {milieu = ( gauche + droite ) / 2 ; barre( milieu, haut ) ; dessine( gauche, milieu, haut - 1 ) ; dessine( milieu, droite, haut - 1 ) ; } Dessine la demi-règle gauche ! Dessine la barre centrale !

58 17/21 novembre 2006Cours d'algorithmique 5 - Intranet58 Divide and Conquer ----------------------------------------------------------------- void dessine ( int gauche, int droite, int hauteur ) {if ( haut > 0 ) {milieu = ( gauche + droite ) / 2 ; barre( milieu, haut ) ; dessine( gauche, milieu, haut - 1 ) ; dessine( milieu, droite, haut - 1 ) ; } Dessine la barre centrale ! Dessine la demi-règle gauche ! Dessine la demi-règle droite !

59 17/21 novembre 2006Cours d'algorithmique 5 - Intranet59 A C C E L E R E R L A D D I T I O N B I N A I R E Divide and Conquer -----------------------------------------------------------------

60 17/21 novembre 2006Cours d'algorithmique 5 - Intranet60 Divide and Conquer ----------------------------------------------------------------- Accélération de laddition binaire 32 bits !

61 17/21 novembre 2006Cours d'algorithmique 5 - Intranet61 Divide and Conquer ----------------------------------------------------------------- Accélération de laddition binaire 32 bits ! + x1 y1 + x2 y2 + xn yn R = 0 R

62 17/21 novembre 2006Cours d'algorithmique 5 - Intranet62 Divide and Conquer ----------------------------------------------------------------- Accélération de laddition binaire 32 bits ! – Bilan : Chaque demi-additionneur a 2 ou 3 transistors en cascade, Chaque demi-additionneur a 2 ou 3 transistors en cascade, il y a donc +- 100 transistors en cascade, il y a donc +- 100 transistors en cascade, doù, avec 10 pico-secondes par transistor, doù, avec 10 pico-secondes par transistor, une latence de 1 nano-seconde, une latence de 1 nano-seconde, + x1 y1 + x2 y2 + xn yn R = 0 R

63 17/21 novembre 2006Cours d'algorithmique 5 - Intranet63 Divide and Conquer ----------------------------------------------------------------- Accélération de laddition binaire 32 bits ! – Bilan : Chaque demi-additionneur a 2 ou 3 transistors en cascade, Chaque demi-additionneur a 2 ou 3 transistors en cascade, il y a donc +- 100 transistors en cascade, il y a donc +- 100 transistors en cascade, doù, avec 10 pico-secondes par transistor, doù, avec 10 pico-secondes par transistor, une latence de 1 nano-seconde, une latence de 1 nano-seconde, Cest-à-dire une fréquence bloquée à 1 Ghz ! Cest-à-dire une fréquence bloquée à 1 Ghz ! + x1 y1 + x2 y2 + xn yn R = 0 R

64 17/21 novembre 2006Cours d'algorithmique 5 - Intranet64 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles !

65 17/21 novembre 2006Cours d'algorithmique 5 - Intranet65 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles ! + 16 bits ???? Poids forts ! + 16 bits ?? = 1 ?? = 0 ????

66 17/21 novembre 2006Cours d'algorithmique 5 - Intranet66 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles ! + 16 bits ???? Poids forts ! + 16 bits ?? = 1 ?? = 0 ????

67 17/21 novembre 2006Cours d'algorithmique 5 - Intranet67 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles ! + 16 bits ???? Poids forts ! + 16 bits ?? = 1 ?? = 0 ????

68 17/21 novembre 2006Cours d'algorithmique 5 - Intranet68 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles ! + 16 bits ???? Poids forts ! + 16 bits ?? = 1 ?? = 0 ????

69 17/21 novembre 2006Cours d'algorithmique 5 - Intranet69 Divide and Conquer ----------------------------------------------------------------- En rajoutant 50% de transistors : + 16 bits R = 0 ?? Poids faibles ! + 16 bits ???? Poids forts ! + 16 bits ?? = 1 ?? = 0 ????

70 17/21 novembre 2006Cours d'algorithmique 5 - Intranet70 L E N V E L O P P E C O N V E X E 2 - D Divide and Conquer -----------------------------------------------------------------

71 17/21 novembre 2006Cours d'algorithmique 5 - Intranet71 Divide and Conquer ----------------------------------------------------------------- Calcul de lenveloppe convexe de « n » points en 2D ! Calcul de lenveloppe convexe de « n » points en 2D !

72 17/21 novembre 2006Cours d'algorithmique 5 - Intranet72 Divide and Conquer ----------------------------------------------------------------- Calcul de lenveloppe convexe de « n » points en 2D ! Calcul de lenveloppe convexe de « n » points en 2D ! Méthodeanalogiquede lélastique !

73 17/21 novembre 2006Cours d'algorithmique 5 - Intranet73 Divide and Conquer ----------------------------------------------------------------- Calcul de lenveloppe convexe de « n » points en 2D ! Calcul de lenveloppe convexe de « n » points en 2D ! Méthodeanalogiquede lélastique !

74 17/21 novembre 2006Cours d'algorithmique 5 - Intranet74 Divide and Conquer ----------------------------------------------------------------- Algorithme : Algorithme : – Trier en x et en y !

75 17/21 novembre 2006Cours d'algorithmique 5 - Intranet75 Divide and Conquer ----------------------------------------------------------------- Algorithme : Algorithme : – Trier en x et en y ! – Diviser verticalement en deux !

76 17/21 novembre 2006Cours d'algorithmique 5 - Intranet76 Divide and Conquer -----------------------------------------------------------------

77 17/21 novembre 2006Cours d'algorithmique 5 - Intranet77 Divide and Conquer ----------------------------------------------------------------- Algorithme : Algorithme : – Trier en x et en y ! – Diviser verticalement en deux ! – Calculer récursivement les enveloppes convexes !

78 17/21 novembre 2006Cours d'algorithmique 5 - Intranet78 Divide and Conquer -----------------------------------------------------------------

79 17/21 novembre 2006Cours d'algorithmique 5 - Intranet79 Divide and Conquer ----------------------------------------------------------------- Algorithme : Algorithme : – Trier en x et en y ! – Diviser verticalement en deux ! – Calculer récursivement les enveloppes convexes ! – Joindre des liens entre les camps : Trouver le plus petit et le plus grand en y Trouver le plus petit et le plus grand en y et basculer des lignes horizontales pour toucher lautre camp ! et basculer des lignes horizontales pour toucher lautre camp !

80 17/21 novembre 2006Cours d'algorithmique 5 - Intranet80 Divide and Conquer -----------------------------------------------------------------

81 17/21 novembre 2006Cours d'algorithmique 5 - Intranet81 Divide and Conquer -----------------------------------------------------------------

82 17/21 novembre 2006Cours d'algorithmique 5 - Intranet82 Divide and Conquer ----------------------------------------------------------------- Algorithme : Algorithme : – Trier en x et en y ! – Diviser verticalement en deux ! – Calculer récursivement les enveloppes convexes ! – Joindre des liens entre les camps : Trouver le plus petit et le grand en y Trouver le plus petit et le grand en y et basculer des lignes horizontales pour toucher lautre camp ! et basculer des lignes horizontales pour toucher lautre camp ! – Enlever les liens superflus !

83 17/21 novembre 2006Cours d'algorithmique 5 - Intranet83 Divide and Conquer -----------------------------------------------------------------

84 17/21 novembre 2006Cours d'algorithmique 5 - Intranet84 Divide and Conquer ----------------------------------------------------------------- Complexité globale : O ( n log n )

85 17/21 novembre 2006Cours d'algorithmique 5 - Intranet85 Divide and Conquer ----------------------------------------------------------------- Complexité globale : O ( n log n ) Tri initial en 0 ( n log n ) Décomposition en O ( n ) Recombinaison en O ( n )

86 17/21 novembre 2006Cours d'algorithmique 5 - Intranet86 Divide and Conquer -----------------------------------------------------------------

87 17/21 novembre 2006Cours d'algorithmique 5 - Intranet87 Divide and Conquer -----------------------------------------------------------------

88 17/21 novembre 2006Cours d'algorithmique 5 - Intranet88 Calculabilité ----------------------------------------------------------------- C h a n g e o n s d e s u j e t ! C A L C U L A B I L I T E ! ! !

89 17/21 novembre 2006Cours d'algorithmique 5 - Intranet89 Calculabilité ----------------------------------------------------------------- C h a n g e o n s d e s u j e t ! C A L C U L A B I L I T E ! ! ! Est-ce que tout peut être calculé ?

90 17/21 novembre 2006Cours d'algorithmique 5 - Intranet90 Calculabilité ----------------------------------------------------------------- Le programme P sarrête-t-il pour la donnée D ? Le programme P sarrête-t-il pour la donnée D ? Quel est lensemble des données pour lesquelles P sarrête ? Quel est lensemble des données pour lesquelles P sarrête ? Plus tard : Combien faut-il dopérations ? Plus tard : Combien faut-il dopérations ?

91 17/21 novembre 2006Cours d'algorithmique 5 - Intranet91 Calculabilité ----------------------------------------------------------------- Larrêt est semi-décidable ! ! ! Larrêt est semi-décidable ! ! ! Vous lancez P avec D et vous attendez ! Vous lancez P avec D et vous attendez !

92 17/21 novembre 2006Cours d'algorithmique 5 - Intranet92 Calculabilité ----------------------------------------------------------------- Larrêt est semi-décidable ! ! ! Larrêt est semi-décidable ! ! ! Vous lancez P avec D et vous attendez ! Vous lancez P avec D et vous attendez ! – Si programme sarrête : OUI !

93 17/21 novembre 2006Cours d'algorithmique 5 - Intranet93 Calculabilité ----------------------------------------------------------------- Larrêt est semi-décidable ! ! ! Larrêt est semi-décidable ! ! ! Vous lancez P avec D et vous attendez ! Vous lancez P avec D et vous attendez ! – Si programme sarrête : OUI ! soit, il sarrêtera un peu plus tard ! soit, il sarrêtera un peu plus tard ! – Sinon soit, il ne sarrêtera jamais ! ! ! soit, il ne sarrêtera jamais ! ! !

94 17/21 novembre 2006Cours d'algorithmique 5 - Intranet94 Calculabilité ----------------------------------------------------------------- Larrêt est semi-décidable ! ! ! Larrêt est semi-décidable ! ! ! Vous lancez P avec D et vous attendez ! Vous lancez P avec D et vous attendez ! – Si programme sarrête : OUI ! soit, il sarrêtera un peu plus tard ! soit, il sarrêtera un peu plus tard ! – Sinon soit, il ne sarrêtera jamais ! ! ! soit, il ne sarrêtera jamais ! ! ! Ce dernier choix ne peut pas être décidé, en général !

95 17/21 novembre 2006Cours d'algorithmique 5 - Intranet95 Calculabilité ----------------------------------------------------------------- Théorème : Théorème : Il nexiste pas de programme de décision DA qui, Il nexiste pas de programme de décision DA qui, pour tout autre programme P et toute donnée D pour tout autre programme P et toute donnée D dise : dise : – DA ( P, D ) = oui, si P sarrête pour la donnée D. – DA ( P, D ) = non, si P ne sarrête pas pour D.

96 17/21 novembre 2006Cours d'algorithmique 5 - Intranet96 Calculabilité ----------------------------------------------------------------- Théorème : Théorème : Il nexiste pas de programme de décision DA qui, Il nexiste pas de programme de décision DA qui, pour tout autre programme P et toute donnée D pour tout autre programme P et toute donnée D dise : dise : – DA ( P, D ) = oui, si P sarrête pour la donnée D. – DA ( P, D ) = non, si P ne sarrête pas pour D. On dit que « larrêt de la machine est indécidable » !

97 17/21 novembre 2006Cours d'algorithmique 5 - Intranet97 Calculabilité ----------------------------------------------------------------- Toutefois : Toutefois : Cette question peut quand-même être décidée pour un grand nombre de programmes. Cette question peut quand-même être décidée pour un grand nombre de programmes.

98 17/21 novembre 2006Cours d'algorithmique 5 - Intranet98 Calculabilité ----------------------------------------------------------------- Toutefois : Toutefois : Cette question peut quand-même être décidée pour un grand nombre de programmes. Cette question peut quand-même être décidée pour un grand nombre de programmes. Les programmes suivants sarrêtent toujours : Les programmes suivants sarrêtent toujours : – des constantes, variables et opérations simples, – des séquences finies dinstructions, – des si-alors-sinon et boucles for (à la Pascal).

99 17/21 novembre 2006Cours d'algorithmique 5 - Intranet99 Calculabilité ----------------------------------------------------------------- Toutefois : Toutefois : Cette question peut quand-même être décidée pour un grand nombre de programmes. Cette question peut quand-même être décidée pour un grand nombre de programmes. Les programmes suivants sarrêtent toujours : Les programmes suivants sarrêtent toujours : – des constantes, variables et opérations simples, – des séquences finies dinstructions, – des si-alors-sinon et boucles for (à la Pascal). Seul le « while », qui est équivalent à la récursion, pose problème ! Seul le « while », qui est équivalent à la récursion, pose problème !

100 17/21 novembre 2006Cours d'algorithmique 5 - Intranet100 Calculabilité ----------------------------------------------------------------- Exemple dun while sans problème : Exemple dun while sans problème : {int n =... ; assert ( n >= 0 ) ; while ( n != 0 ) n = n – 1 ; }

101 17/21 novembre 2006Cours d'algorithmique 5 - Intranet101 Calculabilité ----------------------------------------------------------------- Exemple dun while sans problème : Exemple dun while sans problème : Exemple avec problème (sans réponse connue !) : Exemple avec problème (sans réponse connue !) : {int n =... ; assert ( n >= 0 ) ; while ( n != 0 ) n = n – 1 ; } {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; }

102 17/21 novembre 2006Cours d'algorithmique 5 - Intranet102 Calculabilité ----------------------------------------------------------------- Exemple dun while sans problème : Exemple dun while sans problème : Exemple avec problème (sans réponse connue !) : Exemple avec problème (sans réponse connue !) : {int n =... ; assert ( n >= 0 ) ; while ( n != 0 ) n = n – 1 ; } {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; } Exemple : 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 8 -> 4 -> 2 -> 1

103 17/21 novembre 2006Cours d'algorithmique 5 - Intranet103 Calculabilité ----------------------------------------------------------------- Schématiquement : Schématiquement : Valeur de n Pas de calcul

104 17/21 novembre 2006Cours d'algorithmique 5 - Intranet104 Calculabilité ----------------------------------------------------------------- Schématiquement : Schématiquement : Valeur de n Pas de calcul Facile ! Cest le exemple.

105 17/21 novembre 2006Cours d'algorithmique 5 - Intranet105 Calculabilité ----------------------------------------------------------------- Schématiquement : Schématiquement : Valeur de n Pas de calcul Facile ! Cest le premier exemple. Difficile ! ! ! Cest le deuxième exemple.

106 17/21 novembre 2006Cours d'algorithmique 5 - Intranet106 Calculabilité ----------------------------------------------------------------- Pour prouver larrêt il faut : Pour prouver larrêt il faut : – Un ordre bien fondé, – Une mesure sur cet ordre, – Un programme qui fait strictement décroître la mesure lors de son exécution.

107 17/21 novembre 2006Cours d'algorithmique 5 - Intranet107 Calculabilité ----------------------------------------------------------------- Pour prouver larrêt il faut : Pour prouver larrêt il faut : – Un ordre bien fondé, – Une mesure sur cet ordre, – Un programme qui fait strictement décroître la mesure lors de son exécution. Un ordre bien fondé nadmet pas de chaînes décroissantes infinies : OK : ( N, 12 -> 11 -> … ce sera fini ! KO : ( Z, 12 -> -5 -> … peut être infinie !

108 17/21 novembre 2006Cours d'algorithmique 5 - Intranet108 Calculabilité ----------------------------------------------------------------- Pour prouver larrêt il faut : Pour prouver larrêt il faut : – Un ordre bien fondé, – Une mesure sur cet ordre, – Un programme qui fait strictement décroître la mesure lors de son exécution. Un ordre bien fondé nadmet pas de chaînes décroissantes infinies : OK : ( N, 12 -> 11 -> … ce sera fini ! KO : ( Z, 12 -> -5 -> … peut être infinie ! Nimporte quelle fonction qui transforme les valeurs des variables en une valeur de lordre bien fondé considéré.

109 17/21 novembre 2006Cours d'algorithmique 5 - Intranet109 Calculabilité ----------------------------------------------------------------- La mesure sert en fait La mesure sert en fait – à compter, respectivement majorer, – le nombre de tours de boucle while quil reste à faire – ou le nombre dappels récursifs qui restent à faire !

110 17/21 novembre 2006Cours d'algorithmique 5 - Intranet110 Calculabilité ----------------------------------------------------------------- Exemple dun while sans problème : Exemple dun while sans problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n ( ou m ( n ) = 5 * n +13 ) La mesure : m ( n ) = n ( ou m ( n ) = 5 * n +13 ) – Elles sont acceptables car, pour n, on a m ( n ) >= 0 {int n =... ; assert ( n >= 0 ) ; while ( n != 0 ) n = n – 1 ; }

111 17/21 novembre 2006Cours d'algorithmique 5 - Intranet111 Calculabilité ----------------------------------------------------------------- Exemple dun while sans problème : Exemple dun while sans problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n ( ou m ( n ) = 5 * n +13 ) La mesure : m ( n ) = n ( ou m ( n ) = 5 * n +13 ) – Elles sont acceptables car, pour n, on a m ( n ) >= 0 Cest bien décroissant, car on passe de m ( n ) = n à m( n – 1 ) = n – 1 ! Cest bien décroissant, car on passe de m ( n ) = n à m( n – 1 ) = n – 1 ! ( ou de m ( n ) = 5 * n + 13 à m ( n – 1 ) = 5 * n + 8 ) ( ou de m ( n ) = 5 * n + 13 à m ( n – 1 ) = 5 * n + 8 ) {int n =... ; assert ( n >= 0 ) ; while ( n != 0 ) n = n – 1 ; }

112 17/21 novembre 2006Cours d'algorithmique 5 - Intranet112 Calculabilité ----------------------------------------------------------------- {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; } Exemple dun while avec problème : Exemple dun while avec problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n La mesure : m ( n ) = n

113 17/21 novembre 2006Cours d'algorithmique 5 - Intranet113 Calculabilité ----------------------------------------------------------------- {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; } Exemple dun while avec problème : Exemple dun while avec problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n La mesure : m ( n ) = n OK : 8 -> 4 et m ( 8 ) > m ( 4 ) OK : 8 -> 4 et m ( 8 ) > m ( 4 ) KO : 7 -> 22 et m ( 7 ) 22 et m ( 7 ) < m ( 22 )

114 17/21 novembre 2006Cours d'algorithmique 5 - Intranet114 Calculabilité ----------------------------------------------------------------- {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; } Exemple dun while avec problème : Exemple dun while avec problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n La mesure : m ( n ) = n OK : 8 -> 4 et m ( 8 ) > m ( 4 ) OK : 8 -> 4 et m ( 8 ) > m ( 4 ) KO : 7 -> 22 et m ( 7 ) 22 et m ( 7 ) < m ( 22 )

115 17/21 novembre 2006Cours d'algorithmique 5 - Intranet115 Calculabilité ----------------------------------------------------------------- {int n =... ; assert ( n > 0 ) ; while ( n != 1 ) if ( even( n ) ) n = n / 2 ; else n = 3 * n + 1 ; } Exemple dun while avec problème : Exemple dun while avec problème : Lordre : ( N, < ) Lordre : ( N, < ) La mesure : m ( n ) = n La mesure : m ( n ) = n OK : 8 -> 4 et m ( 8 ) > m ( 4 ) OK : 8 -> 4 et m ( 8 ) > m ( 4 ) KO : 7 -> 22 et m ( 7 ) 22 et m ( 7 ) < m ( 22 ) Il existe peut-être une mesure qui convient, mais personne ne la jamais trouvée ! Il existe peut-être une mesure qui convient, mais personne ne la jamais trouvée !

116 17/21 novembre 2006Cours d'algorithmique 5 - Intranet116 Complexité ----------------------------------------------------------------- C h a n g e o n s d e s u j e t ! C O M P L E X I T E ! ! !

117 17/21 novembre 2006Cours d'algorithmique 5 - Intranet117 Complexité ----------------------------------------------------------------- Quelques rappels : Quelques rappels : – Complexité du pire cas. – Complexité du meilleur cas. – Complexité moyenne.

118 17/21 novembre 2006Cours d'algorithmique 5 - Intranet118 Complexité ----------------------------------------------------------------- Quelques rappels : Quelques rappels : – Complexité du pire cas. – Complexité du meilleur cas. – Complexité moyenne. Usuelle ! Inintéressante ! Difficile à établir !

119 17/21 novembre 2006Cours d'algorithmique 5 - Intranet119 Complexité ----------------------------------------------------------------- Quelques rappels : Quelques rappels : – Complexité du pire cas. – Complexité du meilleur cas. – Complexité moyenne. Elles se calculent par rapport à la taille de la donnée : Elles se calculent par rapport à la taille de la donnée : – le nombre de cases du tableau, – le nombre de feuilles de larbre, – ou le nombre doctets pour mémoriser la structure. Usuelle ! Inintéressante ! Difficile à établir !

120 17/21 novembre 2006Cours d'algorithmique 5 - Intranet120 Complexité ----------------------------------------------------------------- On sintéresse seulement à des problèmes dont la taille « n » est grande : On sintéresse seulement à des problèmes dont la taille « n » est grande : – Plus facile, car analyse asymptotique. – Plus intéressant.

121 17/21 novembre 2006Cours d'algorithmique 5 - Intranet121 Complexité ----------------------------------------------------------------- On sintéresse seulement à des problèmes dont la taille « n » est grande : On sintéresse seulement à des problèmes dont la taille « n » est grande : – Plus facile, car analyse asymptotique. – Plus intéressant. Comme ce sera une étude asymptotique : Comme ce sera une étude asymptotique : – Toutes les opérations élémentaires et leurs composition de manière finie coûtent 1.

122 17/21 novembre 2006Cours d'algorithmique 5 - Intranet122 Complexité ----------------------------------------------------------------- On sintéresse seulement à des problèmes dont la taille « n » est grande : On sintéresse seulement à des problèmes dont la taille « n » est grande : – Plus facile, car analyse asymptotique. – Plus intéressant. Comme ce sera une étude asymptotique : Comme ce sera une étude asymptotique : – Toutes les opérations élémentaires et leurs composition de manière finie coûtent 1. – Nous comptons les tours de boucles for et while.

123 17/21 novembre 2006Cours d'algorithmique 5 - Intranet123 Complexité ----------------------------------------------------------------- On sintéresse seulement à des problèmes dont la taille « n » est grande : On sintéresse seulement à des problèmes dont la taille « n » est grande : – Plus facile, car analyse asymptotique. – Plus intéressant. Comme ce sera une étude asymptotique : Comme ce sera une étude asymptotique : – Toutes les opérations élémentaires et leurs composition de manière finie coûtent 1. – Nous comptons les tours de boucles for et while. – Nous travaillons à constante multiplicative près.

124 17/21 novembre 2006Cours d'algorithmique 5 - Intranet124 Complexité ----------------------------------------------------------------- On sintéresse seulement à des problèmes dont la taille « n » est grande : On sintéresse seulement à des problèmes dont la taille « n » est grande : – Plus facile, car analyse asymptotique. – Plus intéressant. Comme ce sera une étude asymptotique : Comme ce sera une étude asymptotique : – Toutes les opérations élémentaires et leurs composition de manière finie coûtent 1. – Nous comptons les tours de boucles for et while. – Nous travaillons à constante multiplicative près. – Nous ignorons les termes dordres inférieurs.

125 17/21 novembre 2006Cours d'algorithmique 5 - Intranet125 Complexité ----------------------------------------------------------------- C O M P L E X I T E D U N A L G O R I T H M E

126 17/21 novembre 2006Cours d'algorithmique 5 - Intranet126 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ).

127 17/21 novembre 2006Cours d'algorithmique 5 - Intranet127 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ).

128 17/21 novembre 2006Cours d'algorithmique 5 - Intranet128 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ). O ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) m : g ( n ) <= k * f ( n ) }

129 17/21 novembre 2006Cours d'algorithmique 5 - Intranet129 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ). O ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) m : g ( n ) <= k * f ( n ) } « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

130 17/21 novembre 2006Cours d'algorithmique 5 - Intranet130 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ). O ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) m : g ( n ) <= k * f ( n ) } Étude asymptotique. « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

131 17/21 novembre 2006Cours d'algorithmique 5 - Intranet131 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ). O ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) m : g ( n ) <= k * f ( n ) } Étude asymptotique. A un facteur constant près … « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

132 17/21 novembre 2006Cours d'algorithmique 5 - Intranet132 Complexité ----------------------------------------------------------------- Définition : Définition : Un algorithme A appartient à lensemble O ( f( n ) ) si, pour une donnée de taille n, la complexité du pire cas de A vaut au plus f ( n ). O ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) m : g ( n ) <= k * f ( n ) } Étude asymptotique. A un facteur constant près … lim g ( n ) / f ( n ) <= k n -> + n -> +

133 17/21 novembre 2006Cours d'algorithmique 5 - Intranet133 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n)

134 17/21 novembre 2006Cours d'algorithmique 5 - Intranet134 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n)

135 17/21 novembre 2006Cours d'algorithmique 5 - Intranet135 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n) k * f(n) m

136 17/21 novembre 2006Cours d'algorithmique 5 - Intranet136 Complexité ----------------------------------------------------------------- Complexité dun algorithme : Complexité dun algorithme : – Dans le pire cas, il faut O ( f ( n ) ). – Cest un majorant.

137 17/21 novembre 2006Cours d'algorithmique 5 - Intranet137 Complexité ----------------------------------------------------------------- Complexité dun algorithme : Complexité dun algorithme : – Dans le pire cas, il faut O ( f ( n ) ). – Cest un majorant. Complexité dun problème : Complexité dun problème : – Le meilleur algorithme pour résoudre le problème nécessite au moins ( f ( n ) ) opérations. – Cest un minorant.

138 17/21 novembre 2006Cours d'algorithmique 5 - Intranet138 Complexité ----------------------------------------------------------------- Complexité dun algorithme : Complexité dun algorithme : – Dans le pire cas, il faut O ( f ( n ) ). – Cest un majorant. Complexité dun problème : Complexité dun problème : – Le meilleur algorithme pour résoudre le problème nécessite au moins ( f ( n ) ) opérations. – Cest un minorant.

139 17/21 novembre 2006Cours d'algorithmique 5 - Intranet139 Complexité ----------------------------------------------------------------- Complexité dun algorithme : Complexité dun algorithme : – Dans le pire cas, il faut O ( f ( n ) ). – Cest un majorant. Complexité dun problème : Complexité dun problème : – Le meilleur algorithme pour résoudre le problème nécessite au moins ( f ( n ) ) opérations. – Cest un minorant.

140 17/21 novembre 2006Cours d'algorithmique 5 - Intranet140 Complexité ----------------------------------------------------------------- C O M P L E X I T E D U N P R O B L E M E

141 17/21 novembre 2006Cours d'algorithmique 5 - Intranet141 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ).

142 17/21 novembre 2006Cours d'algorithmique 5 - Intranet142 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ).

143 17/21 novembre 2006Cours d'algorithmique 5 - Intranet143 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ). ( f ( n ) ) = ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) >= k * f ( n ) } pour tout n > m : g ( n ) >= k * f ( n ) }

144 17/21 novembre 2006Cours d'algorithmique 5 - Intranet144 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ). ( f ( n ) ) = ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) >= k * f ( n ) } pour tout n > m : g ( n ) >= k * f ( n ) } « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

145 17/21 novembre 2006Cours d'algorithmique 5 - Intranet145 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ). ( f ( n ) ) = ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) >= k * f ( n ) } pour tout n > m : g ( n ) >= k * f ( n ) } Étude asymptotique. « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

146 17/21 novembre 2006Cours d'algorithmique 5 - Intranet146 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ). ( f ( n ) ) = ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) >= k * f ( n ) } pour tout n > m : g ( n ) >= k * f ( n ) } Étude asymptotique. A un facteur constant près … « g » est en fait la vraie fonction de complexité, mais nous la connaissons mal !

147 17/21 novembre 2006Cours d'algorithmique 5 - Intranet147 Complexité ----------------------------------------------------------------- Définition : Définition : Le problème P appartient à lensemble ( f( n ) ) si, pour une taille n, la complexité du meilleur algorithme pour résoudre P vaut au moins f ( n ). ( f ( n ) ) = ( f ( n ) ) = { g ( n ) | k > 0, m >= 0 : pour tout n > m : g ( n ) >= k * f ( n ) } pour tout n > m : g ( n ) >= k * f ( n ) } Étude asymptotique. A un facteur constant près … lim g ( n ) / f ( n ) >= k n -> + n -> +

148 17/21 novembre 2006Cours d'algorithmique 5 - Intranet148 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n)

149 17/21 novembre 2006Cours d'algorithmique 5 - Intranet149 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n)

150 17/21 novembre 2006Cours d'algorithmique 5 - Intranet150 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n) k * f(n) m

151 17/21 novembre 2006Cours d'algorithmique 5 - Intranet151 Complexité ----------------------------------------------------------------- Pour tout problème P Pour tout problème P – de complexité minimale ( f ( n ) ) et tout algorithme A qui résout P et tout algorithme A qui résout P – avec une complexité maximale O ( g ( n ) )

152 17/21 novembre 2006Cours d'algorithmique 5 - Intranet152 Complexité ----------------------------------------------------------------- Pour tout problème P Pour tout problème P – de complexité minimale ( f ( n ) ) et tout algorithme A qui résout P et tout algorithme A qui résout P – avec une complexité maximale O ( g ( n ) ) nous avons nous avons ( f ( n ) ) <= O ( g ( n ) ) ( f ( n ) ) <= O ( g ( n ) )

153 17/21 novembre 2006Cours d'algorithmique 5 - Intranet153 Complexité ----------------------------------------------------------------- Pour tout problème P Pour tout problème P – de complexité minimale ( f ( n ) ) et tout algorithme A qui résout P et tout algorithme A qui résout P – avec une complexité maximale O ( g ( n ) ) nous avons nous avons ( f ( n ) ) <= O ( g ( n ) ) ( f ( n ) ) <= O ( g ( n ) ) Lalgorithme est optimal si nous avons légalité ! ! ! =

154 17/21 novembre 2006Cours d'algorithmique 5 - Intranet154 Complexité ----------------------------------------------------------------- Pour tout problème P Pour tout problème P – de complexité minimale ( f ( n ) ) et tout algorithme A qui résout P et tout algorithme A qui résout P – avec une complexité maximale O ( g ( n ) ) nous avons nous avons ( f ( n ) ) <= O ( g ( n ) ) ( f ( n ) ) <= O ( g ( n ) ) Lalgorithme est optimal si nous avons légalité ! ! ! = Ceci signifie en fait que ( f ( n ) ) O ( g ( n ) ) nest pas vide et que f ( n ) = g ( n ). v

155 17/21 novembre 2006Cours d'algorithmique 5 - Intranet155 Complexité ----------------------------------------------------------------- C O M P L E X I T E E X A C T E C O M P L E X I T E D U N A L G O R I T H M E O P T I M A L

156 17/21 novembre 2006Cours d'algorithmique 5 - Intranet156 Complexité ----------------------------------------------------------------- Définition : Définition : ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = { g ( n ) | k > 0, l > 0, m >= 0 : pour tout n > m : pour tout n > m : k * f ( n ) <= g ( n ) <= l * f ( n ) } k * f ( n ) <= g ( n ) <= l * f ( n ) } v

157 17/21 novembre 2006Cours d'algorithmique 5 - Intranet157 Complexité ----------------------------------------------------------------- Définition : Définition : ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = { g ( n ) | k > 0, l > 0, m >= 0 : pour tout n > m : pour tout n > m : k * f ( n ) <= g ( n ) <= l * f ( n ) } k * f ( n ) <= g ( n ) <= l * f ( n ) } v

158 17/21 novembre 2006Cours d'algorithmique 5 - Intranet158 Complexité ----------------------------------------------------------------- Définition : Définition : ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = { g ( n ) | k > 0, l > 0, m >= 0 : pour tout n > m : pour tout n > m : k * f ( n ) <= g ( n ) <= l * f ( n ) } k * f ( n ) <= g ( n ) <= l * f ( n ) } Étude asymptotique. v

159 17/21 novembre 2006Cours d'algorithmique 5 - Intranet159 Complexité ----------------------------------------------------------------- Définition : Définition : ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = { g ( n ) | k > 0, l > 0, m >= 0 : pour tout n > m : pour tout n > m : k * f ( n ) <= g ( n ) <= l * f ( n ) } k * f ( n ) <= g ( n ) <= l * f ( n ) } Étude asymptotique. A des facteurs constants près … v

160 17/21 novembre 2006Cours d'algorithmique 5 - Intranet160 Complexité ----------------------------------------------------------------- Définition : Définition : ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = ( f ( n ) ) = ( f ( n ) ) O ( f ( n ) ) = { g ( n ) | k > 0, l > 0, m >= 0 : pour tout n > m : pour tout n > m : k * f ( n ) <= g ( n ) <= l * f ( n ) } k * f ( n ) <= g ( n ) <= l * f ( n ) } Étude asymptotique. A des facteurs constants près … k <= lim g ( n ) / f ( n ) <= l k <= lim g ( n ) / f ( n ) <= l n -> + n -> + v

161 17/21 novembre 2006Cours d'algorithmique 5 - Intranet161 Complexité ----------------------------------------------------------------- T H E O R I E D E L A C O M P L E X I T E

162 17/21 novembre 2006Cours d'algorithmique 5 - Intranet162 Complexité dun problème ----------------------------------------------------------------- La complexité dun problème relève de La complexité dun problème relève de – la théorie de linformation ( Shannon ), – ou de la théorie de la complexité ( Kolmogorov ). Essayons de nous faire une petite idée à laide de quelques petits exemples très simples. Essayons de nous faire une petite idée à laide de quelques petits exemples très simples.

163 17/21 novembre 2006Cours d'algorithmique 5 - Intranet163 Complexité dun problème ----------------------------------------------------------------- Tri de « n » éléments : ( n log n ) Tri de « n » éléments : ( n log n ) Tableau T Tableau trié Opérations Opérations

164 17/21 novembre 2006Cours d'algorithmique 5 - Intranet164 Complexité dun problème ----------------------------------------------------------------- Tri de « n » éléments : ( n log n ) Tri de « n » éléments : ( n log n ) Si T est différent de T alors Si T est différent de T alors Opérations est différent de Opérations Opérations est différent de Opérations Tableau T Tableau trié Opérations Opérations

165 17/21 novembre 2006Cours d'algorithmique 5 - Intranet165 Complexité dun problème ----------------------------------------------------------------- Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! – Séquence de longueur 1 : 2 cas (même opération ou non) – Séquence de longueur 2 : 4 cas – Séquence de longueur k : 2^k cas

166 17/21 novembre 2006Cours d'algorithmique 5 - Intranet166 Complexité dun problème ----------------------------------------------------------------- Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! – Séquence de longueur 1 : 2 cas (même opération ou non) – Séquence de longueur 2 : 4 cas – Séquence de longueur k : 2^k cas La valeur minimale de k doit vérifier : La valeur minimale de k doit vérifier : 2 >= « nombre de tableaux différents » k >= log ( « nombre de tableaux différents » ) min min k

167 17/21 novembre 2006Cours d'algorithmique 5 - Intranet167 Complexité dun problème ----------------------------------------------------------------- Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! Donc, il y a autant de séquences dopérations distinctes quil y a de tableaux distincts ! – Séquence de longueur 1 : 2 cas (même opération ou non) – Séquence de longueur 2 : 4 cas – Séquence de longueur k : 2^k cas La valeur minimale de k doit vérifier : La valeur minimale de k doit vérifier : 2 >= « nombre de tableaux différents » k >= log ( « nombre de tableaux différents » ) log ( « nombre de tableaux différents » ) = log ( n! ) = n log n log ( « nombre de tableaux différents » ) = log ( n! ) = n log n min min k

168 17/21 novembre 2006Cours d'algorithmique 5 - Intranet168 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ?

169 17/21 novembre 2006Cours d'algorithmique 5 - Intranet169 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ? Nous avons n! tableaux différents, Nous avons n! tableaux différents,

170 17/21 novembre 2006Cours d'algorithmique 5 - Intranet170 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ? Nous avons n! tableaux différents, mais Nous avons n! tableaux différents, mais – si nous cherchons par exemple la valeur 2, alors les tableaux et sont équivalents. et sont équivalents. 3 4 … 4 3 …

171 17/21 novembre 2006Cours d'algorithmique 5 - Intranet171 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ? Nous avons n! tableaux différents, mais Nous avons n! tableaux différents, mais – si nous cherchons par exemple la valeur 2, alors les tableaux et sont équivalents. et sont équivalents. La question à poser est la suivante : La question à poser est la suivante : – Est-ce que « e » est identique à T [ i ], pour un i quelconque ? 3 4 … 4 3 …

172 17/21 novembre 2006Cours d'algorithmique 5 - Intranet172 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ? Nous avons n! tableaux différents, mais Nous avons n! tableaux différents, mais – si nous cherchons par exemple la valeur 2, alors les tableaux et sont équivalents. et sont équivalents. La question à poser est la suivante : La question à poser est la suivante : – Est-ce que « e » est identique à T [ i ], pour un i quelconque ? – Donc, 2^n cas différents et la complexité minimale est ( n ). 3 4 … 4 3 …

173 17/21 novembre 2006Cours d'algorithmique 5 - Intranet173 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau non trié. Recherche dun élément « e » dans un tableau non trié. – La recherche séquentielle est en O ( n ). – Mais, quelle est la complexité du problème ? Nous avons n! tableaux différents, mais Nous avons n! tableaux différents, mais – si nous cherchons par exemple la valeur 2, alors les tableaux et sont équivalents. et sont équivalents. La question à poser est la suivante : La question à poser est la suivante : – Est-ce que « e » est identique à T [ i ] ? – Donc, 2^n cas différents et la complexité minimale est ( n ). 3 4 … 4 3 …

174 17/21 novembre 2006Cours d'algorithmique 5 - Intranet174 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau trié. Recherche dun élément « e » dans un tableau trié. – La recherche par dichotomie est en O ( log n ). – Quelle est la complexité du problème ?

175 17/21 novembre 2006Cours d'algorithmique 5 - Intranet175 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau trié. Recherche dun élément « e » dans un tableau trié. – La recherche par dichotomie est en O ( log n ). – Quelle est la complexité du problème ? Il y a des tableaux triés où Il y a des tableaux triés où – la valeur « e » est en première position, – la valeur « e » est en deuxième position,...... – la valeur « e » est absente.

176 17/21 novembre 2006Cours d'algorithmique 5 - Intranet176 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau trié. Recherche dun élément « e » dans un tableau trié. – La recherche par dichotomie est en O ( log n ). – Quelle est la complexité du problème ? Il y a des tableaux triés où Il y a des tableaux triés où – la valeur « e » est en première position, – la valeur « e » est en deuxième position,...... – la valeur « e » est absente. Nous avons donc au moins ( n ) cas différents ! Nous avons donc au moins ( n ) cas différents !

177 17/21 novembre 2006Cours d'algorithmique 5 - Intranet177 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau trié. Recherche dun élément « e » dans un tableau trié. – La recherche par dichotomie est en O ( log n ). – Quelle est la complexité du problème ? Il y a des tableaux triés où Il y a des tableaux triés où – la valeur « e » est en première position, – la valeur « e » est en deuxième position,...... – la valeur « e » est absente. Nous avons donc au moins ( n ) cas différents ! Nous avons donc au moins ( n ) cas différents ! La complexité minimale est ( log n ). La complexité minimale est ( log n ).

178 17/21 novembre 2006Cours d'algorithmique 5 - Intranet178 Complexité dun problème ----------------------------------------------------------------- Recherche dun élément « e » dans un tableau trié. Recherche dun élément « e » dans un tableau trié. – La recherche par dichotomie est en O ( log n ). – Quelle est la complexité du problème ? Il y a des tableaux triés où Il y a des tableaux triés où – la valeur « e » est en première position, – la valeur « e » est en deuxième position,...... – la valeur « e » est absente. Nous avons donc au moins ( n ) cas différents ! Nous avons donc au moins ( n ) cas différents ! La complexité minimale est ( log n ). La complexité minimale est ( log n ).

179 17/21 novembre 2006Cours d'algorithmique 5 - Intranet179 Synthèse ----------------------------------------------------------------- Divide and Conquer : Divide and Conquer : – principes et exemples. Calculabilité. Calculabilité. Complexité. Complexité.

180 17/21 novembre 2006Cours d'algorithmique 5 - Intranet180 m E r C i e T b O n N e J o U r N é E ! ! ! n O u B l I e Z p A s D e p R é P a R e R v O s T D ! ! !


Télécharger ppt "Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité."

Présentations similaires


Annonces Google