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
Premier programme en C :
Advertisements

Présentation générale Marc Gengler
Tris.
Chapitre annexe. Récursivité
Utiliser les calculatrices en classe. 1. Introduction et choix de loutil Deux stratégies dutilisation sont possibles ; elles peuvent même être utilisées.
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 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.
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.
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.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
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
Conception et analyse des algorithmes
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.
Représentation des systèmes dynamiques dans l’espace d’état
IFT Complexité et NP-complétude
Algorithmes d ’approximation
Partie II Sémantique.
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.
III. Récursivité Principe et exemples
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.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
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.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
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 ! 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 - Intranet4 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 - Intranet5 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 - Intranet6 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 - Intranet7 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 - Intranet8 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 - Intranet9 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 - Intranet10 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 - Intranet11 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 - Intranet12 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 - Intranet13 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 - Intranet14 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 - Intranet15 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 - Intranet16 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 - Intranet17 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 - Intranet18 Divide and Conquer

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

17/21 novembre 2006Cours d'algorithmique 5 - Intranet20 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 - Intranet21 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 - Intranet22 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 - Intranet23 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 - Intranet24 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 - Intranet25 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 - Intranet26 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 - Intranet27 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 - Intranet28 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 - Intranet29 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 - Intranet30 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 - Intranet31 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 - Intranet32 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 - Intranet33 Complexité Illustration : Illustration : g(n) f(n) k * f(n) m

17/21 novembre 2006Cours d'algorithmique 5 - Intranet34 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 - Intranet35 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 - Intranet36 Complexité Illustration : Illustration : g(n) f(n) k * f(n) m

17/21 novembre 2006Cours d'algorithmique 5 - Intranet37 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 - Intranet38 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 - Intranet39 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 - Intranet40 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 - Intranet41 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 - Intranet42 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 ).