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

Slides:



Advertisements
Présentations similaires
Présentation générale Marc Gengler
Advertisements

Chapitre annexe. Récursivité
Algorithmes et structures de données avancés
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Quelques applications.
9 octobre 2007Cours de compilation 5 - Intranet1 Cours de compilation Techniques danalyse ascendantes.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Cours de compilation 2 - Intranet
Cours de graphes Les plus courts chemins,
Cours de compilation Marc Gengler 18h de cours avec un peu de TD
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Analyse syntaxique (intro)
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
Cours d’Algorithmique
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 2 - Intranet 1 8 novembre 2006 Cours dAlgorithmique Listes, piles et files. Arbres. Types de données abstraits. Implantations.
Cours d’Algorithmique
Utilisation des tableaux
ALGORITHMES RECURSIFS
Récursivité.
Cours d’Algorithmique
Les algorithmes: complexité et notation asymptotique
Problème des 4 couleurs, graphes planaires.
Quelques applications.
Quelques graphes particuliers.
Cours de graphes Les arbres et arborescences.
16 mars 2007Cours de graphes 7 - Intranet1 Cours de graphes Problèmes NP-complets. Réductions polynômiales.
IFT Complexité et NP-complétude
Algorithmes d ’approximation
Sémantique dénotationnelle
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Cours de graphes 6 - Intranet
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Diviser pour résoudre A. Principe général B. Applications
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
LES PILES ET FILES.
Suites numériques Définitions.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
ETNA – 1ème année Guillaume Belmas –
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Transcription de la présentation:

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

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

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

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 !

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 !

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 !

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 !

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 :

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,

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,

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.

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 !

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 :

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,

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,

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

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 !

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 !

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 !

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 :

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,

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,

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.

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

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 !

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

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

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

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

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

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

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

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

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,

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,

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.

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

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

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

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

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

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

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

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 !

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 !

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 !

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 !

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

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 !

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 ? ? ?

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 ! ! !

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 ! ! !

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 ! ! !

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 !

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 !

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 !

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 !

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

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

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

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 transistors en cascade, il y a donc 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

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 transistors en cascade, il y a donc 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

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

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 ????

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 ????

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 ????

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 ????

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 ????

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

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 !

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 !

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 !

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

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

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

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 !

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

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 !

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

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

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 !

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

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

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 )

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

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

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 ! ! !

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é ?

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 ?

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 !

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 !

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 ! ! !

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 !

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.

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 » !

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.

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

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 !

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

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

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

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

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

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.

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.

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 !

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

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 !

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

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

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

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 )

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 )

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 !

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 ! ! !

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

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 !

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 !

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.

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.

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.

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.

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.

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

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

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

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

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 !

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 !

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 !

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 -> +

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

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

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

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.

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.

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.

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.

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

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

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

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

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 !

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 !

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 !

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 -> +

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

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

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

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

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

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é ! ! ! =

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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 ?

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,

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 …

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 …

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 …

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 …

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 ?

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.

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 !

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

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

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

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 ! ! !