Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBeauregard Rodrigues 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 ! 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 !
4
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 !
5
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.
6
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 ) ) ) ) ; }
7
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.
8
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 !
9
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
10
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
11
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.
12
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 !
13
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 !
14
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 +- 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
15
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 ????
16
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
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 !
18
17/21 novembre 2006Cours d'algorithmique 5 - Intranet18 Divide and Conquer -----------------------------------------------------------------
19
17/21 novembre 2006Cours d'algorithmique 5 - Intranet19 Divide and Conquer -----------------------------------------------------------------
20
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 )
21
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 ?
22
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 !
23
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 » !
24
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 !
25
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
26
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.
27
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é.
28
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 ; }
29
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 !
30
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 !
31
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.
32
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 -> +
33
17/21 novembre 2006Cours d'algorithmique 5 - Intranet33 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n) k * f(n) m
34
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.
35
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 -> +
36
17/21 novembre 2006Cours d'algorithmique 5 - Intranet36 Complexité ----------------------------------------------------------------- Illustration : Illustration : g(n) f(n) k * f(n) m
37
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
38
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
39
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
40
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
41
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 …
42
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 ).
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.