+ All Categories
Home > Documents > Cours d’Algorithmique

Cours d’Algorithmique

Date post: 21-Jan-2016
Category:
Upload: loring
View: 35 times
Download: 1 times
Share this document with a friend
Description:
Cours d’Algorithmique. Exploration combinatoire complète Branch-and-Bound Solutions approchées. Les grandes lignes du cours. Trier et chercher, recherche textuelle Listes et arbres Le back-track, solutions approchées Arbres équilibrés Récursivité et induction sur la structure - PowerPoint PPT Presentation
Popular Tags:
42
Cours d'algorithmique 12 Cours d'algorithmique 12 / Intranet / Intranet 1 10 janvier 2007 10 janvier 2007 Cours d’Algorithmique Cours d’Algorithmique Exploration combinatoire complète Exploration combinatoire complète Branch-and-Bound Branch-and-Bound Solutions approchées Solutions approchées
Transcript
Page 1: Cours d’Algorithmique

Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1110 janvier 200710 janvier 2007

Cours d’AlgorithmiqueCours d’Algorithmique

Exploration combinatoire complèteExploration combinatoire complète

Branch-and-BoundBranch-and-Bound

Solutions approchéesSolutions approchées

Page 2: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 22

• Trier et chercher, recherche textuelleTrier et chercher, recherche textuelle• Listes et arbresListes et arbres• Le back-track, Le back-track, solutions approchéessolutions approchées• Arbres équilibrésArbres équilibrés• Récursivité et induction sur la structureRécursivité et induction sur la structure• Divide and conquer, algorithmes gloutonsDivide and conquer, algorithmes gloutons• Minimax, alpha-betaMinimax, alpha-beta• DérécursionDérécursion• NP-complétude,NP-complétude, Branch-and-Bound Branch-and-Bound • Logique de HoareLogique de Hoare• Programmation dynamiqueProgrammation dynamique• Complexité et calculabilitéComplexité et calculabilité

Les grandes lignes du coursLes grandes lignes du cours

Page 3: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 33

• Le « Voyageur de Commerce », en anglais Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) :« Traveling Salesman Problem » ( TSP ) :

• « n » villes,« n » villes,

• un réseau routier complet entre ces villes avec un réseau routier complet entre ces villes avec les distances,les distances,

• La question :La question :

Quel est le coût du circuit (point de Quel est le coût du circuit (point de départdépart

= point d’arrivée) le moins cher qui visite= point d’arrivée) le moins cher qui visite chaque ville une et une seule fois ?chaque ville une et une seule fois ?

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 4: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 44

• Exemple :Exemple :

AA

BB

CC

DD3030

3535

20204545

1717

1515

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Un tour à coût 110 !Un tour à coût 110 !

Un tour à coût 87 !Un tour à coût 87 !

Il suffit d’un inspecter tous les circuits !Il suffit d’un inspecter tous les circuits !

Seulement, il y en a n ! pour n villes !Seulement, il y en a n ! pour n villes !

Page 5: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 55

• Exemple :Exemple :

• La matrice M des distances :La matrice M des distances :

AA

BB

CC

DD3030

3535

20204545

1717

1515

++

++

++

++(( ))AA

BB

CC

DD

3030 2020 3535

3030

2020

3535

1717 1515

1717

1515

4545Par symétrie !Par symétrie !

4545

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 6: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 66

• Pour avoir un circuit il faut sélectionner « n » arêtes !Pour avoir un circuit il faut sélectionner « n » arêtes !

• La représentation du problème :La représentation du problème :

– « c » est le nombre d’arêtes déjà choisies,« c » est le nombre d’arêtes déjà choisies,

– « E » est l’ensemble de ces arêtes,« E » est l’ensemble de ces arêtes,

– « s » est la somme des longueurs des arêtes de « E »,« s » est la somme des longueurs des arêtes de « E »,

– « M » est la matrice courante avec les arêtes interdites ou « M » est la matrice courante avec les arêtes interdites ou déjà choisies mises à +déjà choisies mises à +..

• Le principe du back-track :Le principe du back-track :

– Nous choisissons une arête pour l’imposer ou l’interdire !Nous choisissons une arête pour l’imposer ou l’interdire !

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 7: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 77

• Lorsque nous avons sélectionné « n » arêtes,Lorsque nous avons sélectionné « n » arêtes,

– il faut rendre « s » comme résultat !il faut rendre « s » comme résultat !

• Sinon,Sinon,

– nous choisissons une arête ( a , b ) de poids fini !nous choisissons une arête ( a , b ) de poids fini !

– Si ce n’est pas possible, nous sommes dans une Si ce n’est pas possible, nous sommes dans une impasse et nous rendons +impasse et nous rendons +(pas de circuit !)(pas de circuit !)..

• Si l’arête ( a , b ) ferme le circuit trop tôt,Si l’arête ( a , b ) ferme le circuit trop tôt,

– nous ne pouvons que l’interdire !nous ne pouvons que l’interdire !

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 8: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 88

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Les arêtes sélectionnées !Les arêtes sélectionnées !

Nous pouvons compléter vers un circuit !Nous pouvons compléter vers un circuit !

aa

bb

Nous ne pouvons plus compléter vers un circuit !Nous ne pouvons plus compléter vers un circuit !

Page 9: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 99

• Interdire une arête revient à :Interdire une arête revient à :

– garder le même nombre « c » d’arêtes sélectionnées,garder le même nombre « c » d’arêtes sélectionnées,

– le même ensemble « E »,le même ensemble « E »,

– la même somme « s »,la même somme « s »,

– mettre l’entrée ( a , b ) de « M » à +mettre l’entrée ( a , b ) de « M » à + . .

• Notation :Notation :

– M [ ( a , b ) <M [ ( a , b ) <-- v , ( c , d ) < v , ( c , d ) <-- w ] : 2 entrées sont w ] : 2 entrées sont changées.changées.

– M [ ( a , _ ) <M [ ( a , _ ) <-- v ] : une ligne est modifiée. v ] : une ligne est modifiée.

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 10: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1010

• Lorsque l’arête ( a , b ) est de poids fini et acceptable, Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider denous pouvons décider de

– soit l’interdire, nous avons vu comment faire,soit l’interdire, nous avons vu comment faire,

– soit, la sélectionner. A ce moment :soit, la sélectionner. A ce moment :

– c <c <-- c + 1 c + 1

– e <e <-- E v { ( a , b ) } E v { ( a , b ) }

– s <s <-- s + M( a , b ) s + M( a , b )

– M <M <-- M[ ( a , _ ) < M[ ( a , _ ) <- +- + , ( _ , b ) < , ( _ , b ) <- +- + ] ]

– Ensuite, nous continuons l’exploration et nous rendons la Ensuite, nous continuons l’exploration et nous rendons la meilleure des deux solutions !meilleure des deux solutions !

TSPTSP----------------------------------------------------------------------------------------------------------------------------------

Page 11: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1111

• L’idée est la suivante :L’idée est la suivante :

– Si les arêtes que nous avons déjà choisies sont très Si les arêtes que nous avons déjà choisies sont très chères,chères,

– alors, même en continuant de la meilleure manière, alors, même en continuant de la meilleure manière, notre solution sera très chère,notre solution sera très chère,

– et même plus chère qu’une solution complète déjà et même plus chère qu’une solution complète déjà connue !connue !

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 12: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1212

• Le programme gère une variable Le programme gère une variable opt*opt* qui mémorise la qui mémorise la longueur de la meilleure solution trouvée jusqu’à longueur de la meilleure solution trouvée jusqu’à présent.présent.

• Nous explorons un arbre (problème) « A » à la Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ) .recherche de la meilleure solution locale : opt( A ) .

• Nous espérons que opt( A ) soit meilleure que opt* .Nous espérons que opt( A ) soit meilleure que opt* .

• Avant d’explorer complètement A , nous aimerions Avant d’explorer complètement A , nous aimerions avoir une « petite idée » des solutions que nous avoir une « petite idée » des solutions que nous risquons d’y trouver ! ! !risquons d’y trouver ! ! !

• Supposons qu’une fonction « lb », pas trop compliquée Supposons qu’une fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure à calculer, nous donne un minorant de la meilleure solution :solution :

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

lb( A ) <= opt( A )lb( A ) <= opt( A )

Page 13: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1313

• Nous allons comparer lb( A ) à opt* :Nous allons comparer lb( A ) à opt* :

• Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( A ) .Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( A ) .

– Ce n’est pas la peine d’explorer A ! ! !Ce n’est pas la peine d’explorer A ! ! !

– Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).

– Tout bénef !Tout bénef !

• Si opt* > lb( A ) alors on ne peut rien en déduire.Si opt* > lb( A ) alors on ne peut rien en déduire.

– En effet, lb( A ) <= opt( A ) et lb( A ) < opt* , mais . . . ? ? ?En effet, lb( A ) <= opt( A ) et lb( A ) < opt* , mais . . . ? ? ?

– Le calcul lb( A ) ne sert à rien !Le calcul lb( A ) ne sert à rien !

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 14: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1414

• Principe du Branch-and-Bound ( Séparer et évaluer ) :Principe du Branch-and-Bound ( Séparer et évaluer ) :

• Nous connaissons opt* !Nous connaissons opt* !

• Nous calculons lb( A ) en « temps raisonnable » !Nous calculons lb( A ) en « temps raisonnable » !

• Si opt* <= lb( A ) , nous pouvons éliminer A !Si opt* <= lb( A ) , nous pouvons éliminer A !

• Si opt* > lb( A ) , nous explorons A normalement !Si opt* > lb( A ) , nous explorons A normalement !

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 15: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1515

• Le calcul spéculatif :Le calcul spéculatif :

• Si nous lui consacrons trop peu de temps, la borne sera mauvaise et Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien !ne servira à rien !

• Si nous lui consacrons trop de temps, c’est contre-productif ! Si nous lui consacrons trop de temps, c’est contre-productif ! Augmenter, encore et encore, le temps n’améliore pas Augmenter, encore et encore, le temps n’améliore pas nécessairement la borne !nécessairement la borne !

• Tout est une question d’expérience, purement empirique !Tout est une question d’expérience, purement empirique !

• Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs résultats, si n est grand.résultats, si n est grand.

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 16: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1616

• Pour notre TSP :Pour notre TSP :

• Nous avons « c » , « E » , « s » et « M » .Nous avons « c » , « E » , « s » et « M » .

• Donc, il y a « c » lignes complètement remplies avec +Donc, il y a « c » lignes complètement remplies avec + . .

• Il y a « nIl y a « n--c » lignes contenant des valeurs finies !c » lignes contenant des valeurs finies !

• Dans chaque ligne, il faut choisir une valeur.Dans chaque ligne, il faut choisir une valeur.

• Cette valeur sera au moins aussi grande que la plus petite valeur finie dans Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne.la ligne.

• Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +des lignes non complètement remplis de + . .

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 17: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1717

• Exemple :Exemple :

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

++

++

++(( ))3030

1010

3535

1515

1717 4545

++ ++ ++

++

++

++

++

s = 42s = 42

L’idée :L’idée :

Il faudra bien partir de la seconde ville et cela coûteraIl faudra bien partir de la seconde ville et cela coûteraau moins 15, de même pour les autres villes !au moins 15, de même pour les autres villes !

Notre raisonnement reste incomplet car il ne tientNotre raisonnement reste incomplet car il ne tientpas compte du fait que nous ne pourrons pas allerpas compte du fait que nous ne pourrons pas allerdeux fois vers la première ville !deux fois vers la première ville !

Page 18: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1818

• Exemple :Exemple :

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

++

++

++(( ))3030

1010

3535

1515

1717 4545

++ ++ ++

++

++

++

++

s = 42s = 42

Donc :Donc :

lb ( A ) = 102 =lb ( A ) = 102 = 42 42 + 15+ 15 + 10+ 10 + 35+ 35

Page 19: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 1919

• Exemple :Exemple :

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

++

++

++(( ))1515

00

00

00

77 3535

++ ++ ++

++

++

++

++

s = 42s = 42

Donc :Donc :

lb ( A ) = 102 =lb ( A ) = 102 = 42 42 + 15+ 15 + 10+ 10 + 35+ 35

Mieux, nous diminuons chaque ligne de son minimumMieux, nous diminuons chaque ligne de son minimumet nous appliquons le même raisonnement aux colonnes !et nous appliquons le même raisonnement aux colonnes !

lb ( A ) = 109 = 102lb ( A ) = 109 = 102 + 7+ 7

Cette borne inférieure correspondCette borne inférieure correspondpar chance à la longueur du pluspar chance à la longueur du pluscourt circuit : court circuit : A – C – B – D – A A – C – B – D – A

Page 20: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2020

• Principe du Branch-and-Bound ( Séparer et évaluer ) :Principe du Branch-and-Bound ( Séparer et évaluer ) :

• Nous connaissons opt* !Nous connaissons opt* !

• Nous calculons lb( A ) en « temps raisonnable » !Nous calculons lb( A ) en « temps raisonnable » !

• Si opt* <= lb( A ) , nous pouvons éliminer A !Si opt* <= lb( A ) , nous pouvons éliminer A !

• Si opt* > lb( A ) , nous explorons A normalement !Si opt* > lb( A ) , nous explorons A normalement !

Branch and BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

Page 21: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2121

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

• Nous renonçons à l’optimum !Nous renonçons à l’optimum !

• Une solution rapide et pas trop mauvaise fera Une solution rapide et pas trop mauvaise fera l’affaire !l’affaire !

• Calculons juste un réseau connexe de poids minimal !Calculons juste un réseau connexe de poids minimal !

Page 22: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2222

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

Il n’est pas complet, mais ce n’est pas grave !Il n’est pas complet, mais ce n’est pas grave !

3030

1515

1212 1010

1818

88

7755

Nous relions tout le monde au coût minimal !Nous relions tout le monde au coût minimal !

991111

Page 23: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2323

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

• Nous renonçons à l’optimum !Nous renonçons à l’optimum !

• Une solution rapide et pas trop mauvaise fera l’affaire !Une solution rapide et pas trop mauvaise fera l’affaire !

• Calculons juste un réseau connexe de poids minimal !Calculons juste un réseau connexe de poids minimal !

• C’est un « arbre de recouvrement minimal » (ARM) !C’est un « arbre de recouvrement minimal » (ARM) !

• Son calcul est en O( n^2 ) .Son calcul est en O( n^2 ) .

• Nous allons en déduire un circuit, peut-être pas optimal ! Nous allons en déduire un circuit, peut-être pas optimal !

• Mais, notre solution sera rapide à calculer !Mais, notre solution sera rapide à calculer !

Page 24: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2424

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

3030

1515

1212 1010

1818

88

7755

991111

coût( ARM ) = 45coût( ARM ) = 45

Nous doublonsNous doublonschaque arête etchaque arête etconstruisons unconstruisons uncircuit : CIRCcircuit : CIRC

coût( CIRC ) = 90coût( CIRC ) = 90

coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

Page 25: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2525

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

3030

1515

1212 1010

1818

88

7755

991111

coût( ARM ) = 45coût( ARM ) = 45

Nous doublonsNous doublonschaque arête etchaque arête etconstruisons unconstruisons uncircuit : CIRCcircuit : CIRC

coût( CIRC ) = 90coût( CIRC ) = 90

Nous évitons de passerNous évitons de passerplusieurs fois dans unplusieurs fois dans unsommet en prenant unsommet en prenant unraccourci ! ! !raccourci ! ! !

coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

Page 26: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2626

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

3030

1515

1212 1010

1818

88

7755

991111

coût( ARM ) = 45coût( ARM ) = 45

Nous doublonsNous doublonschaque arête etchaque arête etconstruisons unconstruisons uncircuit : CIRCcircuit : CIRC

coût( CIRC ) = 90coût( CIRC ) = 90

Nous évitons de passerNous évitons de passerplusieurs fois dans unplusieurs fois dans unsommet en prenant unsommet en prenant unraccourci ! ! !raccourci ! ! !

coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

Page 27: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2727

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

3030

1515

1212 1010

1818

88

7755

991111

coût( ARM ) = 45coût( ARM ) = 45

Nous doublonsNous doublonschaque arête etchaque arête etconstruisons unconstruisons uncircuit : CIRCcircuit : CIRC

coût( CIRC ) = 90coût( CIRC ) = 90

Nous évitons de passerNous évitons de passerplusieurs fois dans unplusieurs fois dans unsommet en prenant unsommet en prenant unraccourci ! ! !raccourci ! ! !

coût( ARM ) <= coût( TSP ) <= coût( ARM ) <= coût( TSP ) <= coût( SOL )coût( SOL ) <= coût( CIRC ) = 2*coût( ARM ) <= coût( CIRC ) = 2*coût( ARM )

Si l’inégalité triangulaireSi l’inégalité triangulaireest vérifiée le circuitest vérifiée le circuit

SOL que nous trouvonsSOL que nous trouvonsest plus court que CIRC ! ! !est plus court que CIRC ! ! !

Page 28: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2828

Solutions approchéesSolutions approchées----------------------------------------------------------------------------------------------------------------------------------

• Nous obtenons un circuit en temps O( n^2 ) !Nous obtenons un circuit en temps O( n^2 ) !

• Notre solution est au pire deux fois plus longue que le Notre solution est au pire deux fois plus longue que le circuit optimal !circuit optimal !

• C’est en fait très mauvais, dans le pire des cas !C’est en fait très mauvais, dans le pire des cas !

• En moyenne, nous sommes à 5% ou 10% de l’optimum !En moyenne, nous sommes à 5% ou 10% de l’optimum !

• Il y a des algorithmes approchés meilleurs que celui-ci .Il y a des algorithmes approchés meilleurs que celui-ci .

Page 29: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 2929

• Trier et chercher, recherche textuelleTrier et chercher, recherche textuelle• Listes et arbresListes et arbres• Le back-track, solutions approchéesLe back-track, solutions approchées• Arbres équilibrésArbres équilibrés• Récursivité et induction sur la structureRécursivité et induction sur la structure• Divide and conquer, algorithmes gloutonsDivide and conquer, algorithmes gloutons• Minimax, alpha-betaMinimax, alpha-beta• DérécursionDérécursion• NP-complétude, Branch-and-Bound NP-complétude, Branch-and-Bound • Logique de HoareLogique de Hoare• Programmation dynamiqueProgrammation dynamique• Complexité et calculabilitéComplexité et calculabilité

Nous avons parlé de tout ceci :Nous avons parlé de tout ceci :

Page 30: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3030

• Langages objetsLangages objets

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 31: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3131

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 32: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3232

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 33: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3333

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 34: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3434

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 35: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3535

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 36: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3636

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 37: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3737

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 38: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3838

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

• Traitement d’images, son, . . .Traitement d’images, son, . . .

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 39: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 3939

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

• Traitement d’images, son, . . .Traitement d’images, son, . . .

• Optimisation combinatoireOptimisation combinatoire

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 40: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 4040

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

• Traitement d’images, son, . . .Traitement d’images, son, . . .

• Optimisation combinatoire Optimisation combinatoire

• Génie logicielGénie logiciel

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 41: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 4141

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

• Traitement d’images, son, . . .Traitement d’images, son, . . .

• Optimisation combinatoire Optimisation combinatoire

• Génie logicielGénie logiciel

• Tests de programmesTests de programmes

Nous n’avons pas parlé de :Nous n’avons pas parlé de :

Page 42: Cours d’Algorithmique

10 janvier 200710 janvier 2007 Cours d'algorithmique 12 / IntranetCours d'algorithmique 12 / Intranet 4242

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

• Analyse numériqueAnalyse numérique

• Calcul parallèleCalcul parallèle

• Calcul répartiCalcul réparti

• Du Web et ses langagesDu Web et ses langages

• Traitement d’images, son, . . .Traitement d’images, son, . . .

• Optimisation combinatoire Optimisation combinatoire

• Génie logicielGénie logiciel

• Tests de programmesTests de programmes

• . . . et bien d’autres !. . . et bien d’autres !

Nous n’avons pas parlé de :Nous n’avons pas parlé de :


Recommended