Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAloys Blanc Modifié depuis plus de 10 années
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 ! ! !
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.