La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées.

Présentations similaires


Présentation au sujet: "Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées."— Transcription de la présentation:

1 Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées

2 10 janvier 2007Cours d'algorithmique 12 / Intranet2 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track, solutions approchées Le back-track, solutions approchées Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Divide and conquer, algorithmes gloutons Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion NP-complétude, Branch-and-Bound NP-complétude, Branch-and-Bound Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours

3 10 janvier 2007Cours d'algorithmique 12 / Intranet3 TSP Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) :

4 10 janvier 2007Cours d'algorithmique 12 / Intranet4 TSP Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : « n » villes, « n » villes, un réseau routier complet entre ces villes avec les distances, un réseau routier complet entre ces villes avec les distances,

5 10 janvier 2007Cours d'algorithmique 12 / Intranet5 Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : Le « Voyageur de Commerce », en anglais « Traveling Salesman Problem » ( TSP ) : « n » villes, « n » villes, un réseau routier complet entre ces villes avec les distances, un réseau routier complet entre ces villes avec les distances, La question : La question : Quel est le coût du circuit (point de départ Quel est le coût du circuit (point de départ = point darrivée) le moins cher qui visite = point darrivée) le moins cher qui visite chaque ville une et une seule fois ? chaque ville une et une seule fois ? TSP

6 10 janvier 2007Cours d'algorithmique 12 / Intranet6 Exemple : Exemple : A B C D TSP

7 10 janvier 2007Cours d'algorithmique 12 / Intranet7 Exemple : Exemple : A B C D TSP

8 10 janvier 2007Cours d'algorithmique 12 / Intranet8 Exemple : Exemple : A B C D TSP Un tour à coût 110 !

9 10 janvier 2007Cours d'algorithmique 12 / Intranet9 Exemple : Exemple : A B C D TSP Un tour à coût 110 ! Un tour à coût 87 !

10 10 janvier 2007Cours d'algorithmique 12 / Intranet10 Exemple : Exemple : A B C D TSP Un tour à coût 110 ! Un tour à coût 87 ! Il suffit dun inspecter tous les circuits ! Seulement, il y en a n ! pour n villes !

11 10 janvier 2007Cours d'algorithmique 12 / Intranet11 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) TSP

12 10 janvier 2007Cours d'algorithmique 12 / Intranet12 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) La diagonale à + ou à 0 ! TSP

13 10 janvier 2007Cours d'algorithmique 12 / Intranet13 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D TSP

14 10 janvier 2007Cours d'algorithmique 12 / Intranet14 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D TSP

15 10 janvier 2007Cours d'algorithmique 12 / Intranet15 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) Par symétrie ! A B C D TSP

16 10 janvier 2007Cours d'algorithmique 12 / Intranet16 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D TSP

17 10 janvier 2007Cours d'algorithmique 12 / Intranet17 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D Par symétrie ! TSP

18 10 janvier 2007Cours d'algorithmique 12 / Intranet18 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D TSP

19 10 janvier 2007Cours d'algorithmique 12 / Intranet19 Exemple : Exemple : La matrice M des distances : La matrice M des distances : A B C D ( ) A B C D Par symétrie ! 45 TSP

20 10 janvier 2007Cours d'algorithmique 12 / Intranet20 Pour avoir un circuit il faut sélectionner « n » arêtes ! Pour avoir un circuit il faut sélectionner « n » arêtes ! TSP

21 10 janvier 2007Cours d'algorithmique 12 / Intranet21 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 : TSP

22 10 janvier 2007Cours d'algorithmique 12 / Intranet22 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 darêtes déjà choisies, TSP

23 10 janvier 2007Cours d'algorithmique 12 / Intranet23 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 darêtes déjà choisies, – « E » est lensemble de ces arêtes, TSP

24 10 janvier 2007Cours d'algorithmique 12 / Intranet24 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 darêtes déjà choisies, – « E » est lensemble de ces arêtes, – « s » est la somme des longueurs des arêtes de « E », TSP

25 10 janvier 2007Cours d'algorithmique 12 / Intranet25 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 darêtes déjà choisies, – « E » est lensemble de ces arêtes, – « s » est la somme des longueurs des arêtes de « E », – « M » est la matrice courante avec les arêtes interdites ou déjà choisies mises à +. TSP

26 10 janvier 2007Cours d'algorithmique 12 / Intranet26 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 darêtes déjà choisies, – « E » est lensemble de ces arêtes, – « s » est la somme des longueurs des arêtes de « E », – « M » est la matrice courante avec les arêtes interdites ou déjà choisies mises à +. Le principe du back-track : Le principe du back-track : – Nous choisissons une arête pour limposer ou linterdire ! TSP

27 10 janvier 2007Cours d'algorithmique 12 / Intranet27 Lorsque nous avons sélectionné « n » arêtes, Lorsque nous avons sélectionné « n » arêtes, – il faut rendre « s » comme résultat ! TSP

28 10 janvier 2007Cours d'algorithmique 12 / Intranet28 Lorsque nous avons sélectionné « n » arêtes, Lorsque nous avons sélectionné « n » arêtes, – il faut rendre « s » comme résultat ! Sinon, Sinon, – nous choisissons une arête ( a, b ) de poids fini ! TSP

29 10 janvier 2007Cours d'algorithmique 12 / Intranet29 Lorsque nous avons sélectionné « n » arêtes, Lorsque nous avons sélectionné « n » arêtes, – il faut rendre « s » comme résultat ! Sinon, Sinon, – nous choisissons une arête ( a, b ) de poids fini ! – Si ce nest pas possible, nous sommes dans une impasse et nous rendons + (pas de circuit !). TSP

30 10 janvier 2007Cours d'algorithmique 12 / Intranet30 Lorsque nous avons sélectionné « n » arêtes, Lorsque nous avons sélectionné « n » arêtes, – il faut rendre « s » comme résultat ! Sinon, Sinon, – nous choisissons une arête ( a, b ) de poids fini ! – Si ce nest pas possible, nous sommes dans une impasse et nous rendons + (pas de circuit !). Si larête ( a, b ) ferme le circuit trop tôt, Si larête ( a, b ) ferme le circuit trop tôt, – nous ne pouvons que linterdire ! TSP

31 10 janvier 2007Cours d'algorithmique 12 / Intranet31 TSP Les arêtes sélectionnées !

32 10 janvier 2007Cours d'algorithmique 12 / Intranet32 TSP Les arêtes sélectionnées ! Nous pouvons compléter vers un circuit !

33 10 janvier 2007Cours d'algorithmique 12 / Intranet33 TSP Les arêtes sélectionnées ! Nous pouvons compléter vers un circuit ! a b Nous ne pouvons plus compléter vers un circuit !

34 10 janvier 2007Cours d'algorithmique 12 / Intranet34 Interdire une arête revient à : Interdire une arête revient à : – garder le même nombre « c » darêtes sélectionnées, – le même ensemble « E », – la même somme « s », – mettre lentrée ( a, b ) de « M » à +. TSP

35 10 janvier 2007Cours d'algorithmique 12 / Intranet35 Interdire une arête revient à : Interdire une arête revient à : – garder le même nombre « c » darêtes sélectionnées, – le même ensemble « E », – la même somme « s », – mettre lentrée ( a, b ) de « M » à +. Notation : Notation : – M [ ( a, b ) < - v, ( c, d ) < - w ] : 2 entrées sont changées. – M [ ( a, _ ) < - v ] : une ligne est modifiée. TSP

36 10 janvier 2007Cours d'algorithmique 12 / Intranet36 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, TSP

37 10 janvier 2007Cours d'algorithmique 12 / Intranet37 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : TSP

38 10 janvier 2007Cours d'algorithmique 12 / Intranet38 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 TSP

39 10 janvier 2007Cours d'algorithmique 12 / Intranet39 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – E < - E v { ( a, b ) } TSP

40 10 janvier 2007Cours d'algorithmique 12 / Intranet40 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – E < - E v { ( a, b ) } – s < - s + M( a, b ) TSP

41 10 janvier 2007Cours d'algorithmique 12 / Intranet41 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – E < - E v { ( a, b ) } – s < - s + M( a, b ) – M < - M[ ( a, _ ) < - +, ( _, b ) < - + ] TSP Plus de départ depuis a, plus d arrivée vers b !

42 10 janvier 2007Cours d'algorithmique 12 / Intranet42 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – e < - E v { ( a, b ) } – s < - s + M( a, b ) – M < - M[ ( a, _ ) < - +, ( _, b ) < - + ] – Ensuite, nous continuons lexploration et nous rendons la meilleure des deux solutions ! TSP

43 10 janvier 2007Cours d'algorithmique 12 / Intranet43 Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de Lorsque larête ( a, b ) est de poids fini et acceptable, nous pouvons décider de – soit linterdire, nous avons vu comment faire, – soit, la sélectionner. A ce moment : – c < - c + 1 – e < - E v { ( a, b ) } – s < - s + M( a, b ) – M < - M[ ( a, _ ) < - +, ( _, b ) < - + ] – Ensuite, nous continuons lexploration et nous rendons la meilleure des deux solutions ! TSP

44 10 janvier 2007Cours d'algorithmique 12 / Intranet44 E V I T O N S C E R T A I N S C A L C U L S ! ! ! Branch and Bound

45 10 janvier 2007Cours d'algorithmique 12 / Intranet45 Lidée est la suivante : Lidée est la suivante : Branch and Bound

46 10 janvier 2007Cours d'algorithmique 12 / Intranet46 Lidée est la suivante : Lidée est la suivante : – Si les arêtes que nous avons déjà choisies sont très chères, Branch and Bound

47 10 janvier 2007Cours d'algorithmique 12 / Intranet47 Lidée est la suivante : Lidée est la suivante : – Si les arêtes que nous avons déjà choisies sont très chères, – alors, même en continuant de la meilleure manière, notre solution sera très chère, Branch and Bound

48 10 janvier 2007Cours d'algorithmique 12 / Intranet48 Lidée est la suivante : Lidée est la suivante : – Si les arêtes que nous avons déjà choisies sont très chères, – alors, même en continuant de la meilleure manière, notre solution sera très chère, – et même plus chère quune solution complète déjà connue ! Branch and Bound

49 10 janvier 2007Cours d'algorithmique 12 / Intranet49 Lidée est la suivante : Lidée est la suivante : – Si les arêtes que nous avons déjà choisies sont très chères, – alors, même en continuant de la meilleure manière, notre solution sera très chère, – et même plus chère quune solution complète déjà connue ! Branch and Bound

50 10 janvier 2007Cours d'algorithmique 12 / Intranet50 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Branch and Bound

51 10 janvier 2007Cours d'algorithmique 12 / Intranet51 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Branch and Bound

52 10 janvier 2007Cours d'algorithmique 12 / Intranet52 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la 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*. Branch and Bound

53 10 janvier 2007Cours d'algorithmique 12 / Intranet53 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la 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 dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Avant dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Branch and Bound

54 10 janvier 2007Cours d'algorithmique 12 / Intranet54 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la 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 dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Avant dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Branch and Bound lb( A ) <= opt( A )

55 10 janvier 2007Cours d'algorithmique 12 / Intranet55 Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Le programme gère une variable opt* qui mémorise la longueur de la meilleure solution trouvée jusquà présent. Nous explorons un arbre (problème) « A » à la recherche de la meilleure solution locale : opt( A ). Nous explorons un arbre (problème) « A » à la 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 dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Avant dexplorer complètement A, nous aimerions avoir une « petite idée » des solutions que nous risquons dy trouver ! ! ! Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Supposons quune fonction « lb », pas trop compliquée à calculer, nous donne un minorant de la meilleure solution : Branch and Bound lb( A ) <= opt( A )

56 10 janvier 2007Cours d'algorithmique 12 / Intranet56 Nous allons comparer lb( A ) à opt* : Nous allons comparer lb( A ) à opt* : Branch and Bound

57 10 janvier 2007Cours d'algorithmique 12 / Intranet57 Nous allons comparer lb( A ) à opt* : Nous allons comparer lb( A ) à opt* : Si opt* <= lb( A ) Si opt* <= lb( A ) Branch and Bound

58 10 janvier 2007Cours d'algorithmique 12 / Intranet58 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 ). Branch and Bound

59 10 janvier 2007Cours d'algorithmique 12 / Intranet59 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 nest pas la peine dexplorer A ! ! ! Branch and Bound

60 10 janvier 2007Cours d'algorithmique 12 / Intranet60 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). Branch and Bound

61 10 janvier 2007Cours d'algorithmique 12 / Intranet61 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – Tout bénef ! Branch and Bound

62 10 janvier 2007Cours d'algorithmique 12 / Intranet62 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – 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. Branch and Bound

63 10 janvier 2007Cours d'algorithmique 12 / Intranet63 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – 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... ? ? ? Branch and Bound

64 10 janvier 2007Cours d'algorithmique 12 / Intranet64 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – 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... ? ? ? – Le calcul lb( A ) ne sert à rien ! Branch and Bound

65 10 janvier 2007Cours d'algorithmique 12 / Intranet65 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 nest pas la peine dexplorer A ! ! ! – Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ). – 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... ? ? ? – Le calcul lb( A ) ne sert à rien ! Branch and Bound

66 10 janvier 2007Cours d'algorithmique 12 / Intranet66 Principe du Branch-and-Bound ( Séparer et évaluer ) : Principe du Branch-and-Bound ( Séparer et évaluer ) : Branch and Bound

67 10 janvier 2007Cours d'algorithmique 12 / Intranet67 Principe du Branch-and-Bound ( Séparer et évaluer ) : Principe du Branch-and-Bound ( Séparer et évaluer ) : Nous connaissons opt* ! Nous connaissons opt* ! Branch and Bound

68 10 janvier 2007Cours d'algorithmique 12 / Intranet68 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 » ! Branch and Bound

69 10 janvier 2007Cours d'algorithmique 12 / Intranet69 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 ! Branch and Bound

70 10 janvier 2007Cours d'algorithmique 12 / Intranet70 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 Bound

71 10 janvier 2007Cours d'algorithmique 12 / Intranet71 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 Bound

72 10 janvier 2007Cours d'algorithmique 12 / Intranet72 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 Bound

73 10 janvier 2007Cours d'algorithmique 12 / Intranet73 Le calcul spéculatif : Le calcul spéculatif : Branch and Bound

74 10 janvier 2007Cours d'algorithmique 12 / Intranet74 Le calcul spéculatif : Le calcul spéculatif : Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Branch and Bound

75 10 janvier 2007Cours d'algorithmique 12 / Intranet75 Le calcul spéculatif : Le calcul spéculatif : Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Branch and Bound

76 10 janvier 2007Cours d'algorithmique 12 / Intranet76 Le calcul spéculatif : Le calcul spéculatif : Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Tout est une question dexpérience, purement empirique ! Tout est une question dexpérience, purement empirique ! Branch and Bound

77 10 janvier 2007Cours d'algorithmique 12 / Intranet77 Le calcul spéculatif : Le calcul spéculatif : Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop peu de temps, la borne sera mauvaise et ne servira à rien ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Si nous lui consacrons trop de temps, cest contre-productif ! Augmenter, encore et encore, le temps naméliore pas nécessairement la borne ! Tout est une question dexpérience, purement empirique ! Tout est une question dexpérience, purement empirique ! Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs résultats, si n est grand. Pour le TSP, des bornes en complexité n^3 ont donné les meilleurs résultats, si n est grand. Branch and Bound

78 10 janvier 2007Cours d'algorithmique 12 / Intranet78 Pour notre TSP : Pour notre TSP : Branch and Bound

79 10 janvier 2007Cours d'algorithmique 12 / Intranet79 Pour notre TSP : Pour notre TSP : Nous avons « c », « E », « s » et « M ». Nous avons « c », « E », « s » et « M ». Branch and Bound

80 10 janvier 2007Cours d'algorithmique 12 / Intranet80 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 +. Branch and Bound

81 10 janvier 2007Cours d'algorithmique 12 / Intranet81 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 « n - c » lignes contenant des valeurs finies ! Il y a « n - c » lignes contenant des valeurs finies ! Branch and Bound

82 10 janvier 2007Cours d'algorithmique 12 / Intranet82 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 « n - c » lignes contenant des valeurs finies ! Il y a « n - c » lignes contenant des valeurs finies ! Dans chaque ligne, il faut choisir une valeur. Dans chaque ligne, il faut choisir une valeur. Branch and Bound

83 10 janvier 2007Cours d'algorithmique 12 / Intranet83 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 « n - c » lignes contenant des valeurs finies ! Il y a « n - 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 la ligne. Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne. Branch and Bound

84 10 janvier 2007Cours d'algorithmique 12 / Intranet84 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 « n - c » lignes contenant des valeurs finies ! Il y a « n - 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 la ligne. Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Branch and Bound

85 10 janvier 2007Cours d'algorithmique 12 / Intranet85 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 « n - c » lignes contenant des valeurs finies ! Il y a « n - 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 la ligne. Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Nous obtenons une borne inférieure en sommant « s » et les « n-c » minima des lignes non complètement remplis de +. Branch and Bound

86 10 janvier 2007Cours d'algorithmique 12 / Intranet86 Exemple : Exemple : Branch and Bound ( ) s = 42

87 10 janvier 2007Cours d'algorithmique 12 / Intranet87 Exemple : Exemple : Branch and Bound ( ) s = 42

88 10 janvier 2007Cours d'algorithmique 12 / Intranet88 Exemple : Exemple : Branch and Bound ( ) s = 42

89 10 janvier 2007Cours d'algorithmique 12 / Intranet89 Exemple : Exemple : Branch and Bound ( ) s = 42 Lidée : Il faudra bien partir de la seconde ville et cela coûtera au moins 15, de même pour les autres villes !

90 10 janvier 2007Cours d'algorithmique 12 / Intranet90 Exemple : Exemple : Branch and Bound ( ) s = 42 Lidée : Il faudra bien partir de la seconde ville et cela coûtera au moins 15, de même pour les autres villes ! Notre raisonnement reste incomplet car il ne tient pas compte du fait que nous ne pourrons pas aller deux fois vers la première ville !

91 10 janvier 2007Cours d'algorithmique 12 / Intranet91 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 =

92 10 janvier 2007Cours d'algorithmique 12 / Intranet92 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes !

93 10 janvier 2007Cours d'algorithmique 12 / Intranet93 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes !

94 10 janvier 2007Cours d'algorithmique 12 / Intranet94 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes !

95 10 janvier 2007Cours d'algorithmique 12 / Intranet95 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes ! lb ( A ) = 109 =

96 10 janvier 2007Cours d'algorithmique 12 / Intranet96 Exemple : Exemple : Branch and Bound ( ) s = 42 Donc : lb ( A ) = 102 = Mieux, nous diminuons chaque ligne de son minimum et nous appliquons le même raisonnement aux colonnes ! lb ( A ) = 109 = Cette borne inférieure correspond par chance à la longueur du plus court circuit : A – C – B – D – A

97 10 janvier 2007Cours d'algorithmique 12 / Intranet97 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 Bound

98 10 janvier 2007Cours d'algorithmique 12 / Intranet98 N O U S R E N O N C O N S A L O P T I M U M ! ! ! Solutions approchées

99 10 janvier 2007Cours d'algorithmique 12 / Intranet99 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum !

100 10 janvier 2007Cours d'algorithmique 12 / Intranet100 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire !

101 10 janvier 2007Cours d'algorithmique 12 / Intranet101 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal !

102 10 janvier 2007Cours d'algorithmique 12 / Intranet102 Solutions approchées Il nest pas complet, mais ce nest pas grave !

103 10 janvier 2007Cours d'algorithmique 12 / Intranet103 Solutions approchées Il nest pas complet, mais ce nest pas grave !

104 10 janvier 2007Cours d'algorithmique 12 / Intranet104 Solutions approchées Il nest pas complet, mais ce nest pas grave ! Nous relions tout le monde au coût minimal ! 9 11

105 10 janvier 2007Cours d'algorithmique 12 / Intranet105 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal ! Cest un « arbre de recouvrement minimal » (ARM) ! Cest un « arbre de recouvrement minimal » (ARM) !

106 10 janvier 2007Cours d'algorithmique 12 / Intranet106 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal ! Cest un « arbre de recouvrement minimal » (ARM) ! Cest un « arbre de recouvrement minimal » (ARM) ! Son calcul est en O( n^2 ). Son calcul est en O( n^2 ).

107 10 janvier 2007Cours d'algorithmique 12 / Intranet107 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal ! Cest un « arbre de recouvrement minimal » (ARM) ! Cest 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 !

108 10 janvier 2007Cours d'algorithmique 12 / Intranet108 Solutions approchées Nous renonçons à loptimum ! Nous renonçons à loptimum ! Une solution rapide et pas trop mauvaise fera laffaire ! Une solution rapide et pas trop mauvaise fera laffaire ! Calculons juste un réseau connexe de poids minimal ! Calculons juste un réseau connexe de poids minimal ! Cest un « arbre de recouvrement minimal » (ARM) ! Cest 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 !

109 10 janvier 2007Cours d'algorithmique 12 / Intranet109 Solutions approchées coût( ARM ) = 45

110 10 janvier 2007Cours d'algorithmique 12 / Intranet110 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC

111 10 janvier 2007Cours d'algorithmique 12 / Intranet111 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90

112 10 janvier 2007Cours d'algorithmique 12 / Intranet112 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

113 10 janvier 2007Cours d'algorithmique 12 / Intranet113 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) Forcément !

114 10 janvier 2007Cours d'algorithmique 12 / Intranet114 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) Le TSP est le meilleur circuit !

115 10 janvier 2007Cours d'algorithmique 12 / Intranet115 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) Par construction !

116 10 janvier 2007Cours d'algorithmique 12 / Intranet116 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

117 10 janvier 2007Cours d'algorithmique 12 / Intranet117 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

118 10 janvier 2007Cours d'algorithmique 12 / Intranet118 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

119 10 janvier 2007Cours d'algorithmique 12 / Intranet119 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

120 10 janvier 2007Cours d'algorithmique 12 / Intranet120 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )

121 10 janvier 2007Cours d'algorithmique 12 / Intranet121 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) Si linégalité triangulaire est vérifiée le circuit SOL que nous trouvons est plus court que CIRC ! ! !

122 10 janvier 2007Cours d'algorithmique 12 / Intranet122 Solutions approchées coût( ARM ) = 45 Nous doublons chaque arête et construisons un circuit : CIRC coût( CIRC ) = 90 Nous évitons de passer plusieurs fois dans un sommet en prenant un raccourci ! ! ! coût( ARM ) <= coût( TSP ) <= coût( SOL ) <= coût( CIRC ) = 2*coût( ARM ) Si linégalité triangulaire est vérifiée le circuit SOL que nous trouvons est plus court que CIRC ! ! !

123 10 janvier 2007Cours d'algorithmique 12 / Intranet123 Solutions approchées Nous obtenons un circuit en temps O( n^2 ) ! Nous obtenons un circuit en temps O( n^2 ) !

124 10 janvier 2007Cours d'algorithmique 12 / Intranet124 Solutions 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 circuit optimal ! Notre solution est au pire deux fois plus longue que le circuit optimal !

125 10 janvier 2007Cours d'algorithmique 12 / Intranet125 Solutions 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 circuit optimal ! Notre solution est au pire deux fois plus longue que le circuit optimal ! Cest en fait très mauvais, dans le pire des cas ! Cest en fait très mauvais, dans le pire des cas !

126 10 janvier 2007Cours d'algorithmique 12 / Intranet126 Solutions 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 circuit optimal ! Notre solution est au pire deux fois plus longue que le circuit optimal ! Cest en fait très mauvais, dans le pire des cas ! Cest en fait très mauvais, dans le pire des cas ! En moyenne, nous sommes à 5% ou 10% de loptimum ! En moyenne, nous sommes à 5% ou 10% de loptimum !

127 10 janvier 2007Cours d'algorithmique 12 / Intranet127 Solutions 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 circuit optimal ! Notre solution est au pire deux fois plus longue que le circuit optimal ! Cest en fait très mauvais, dans le pire des cas ! Cest en fait très mauvais, dans le pire des cas ! En moyenne, nous sommes à 5% ou 10% de loptimum ! En moyenne, nous sommes à 5% ou 10% de loptimum ! Il y a des algorithmes approchés meilleurs que celui-ci. Il y a des algorithmes approchés meilleurs que celui-ci.

128 10 janvier 2007Cours d'algorithmique 12 / Intranet128 Synthèse Exploration combinatoire complète Branch-and-Bound Solutions approchées

129 10 janvier 2007Cours d'algorithmique 12 / Intranet129 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track, solutions approchées Le back-track, solutions approchées Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer, algorithmes gloutons Divide and conquer, algorithmes gloutons Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion NP-complétude, Branch-and-Bound NP-complétude, Branch-and-Bound Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Nous avons parlé de tout ceci :

130 10 janvier 2007Cours d'algorithmique 12 / Intranet130 Langages objets Langages objets Nous navons pas parlé de :

131 10 janvier 2007Cours d'algorithmique 12 / Intranet131 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Nous navons pas parlé de :

132 10 janvier 2007Cours d'algorithmique 12 / Intranet132 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Nous navons pas parlé de :

133 10 janvier 2007Cours d'algorithmique 12 / Intranet133 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Nous navons pas parlé de :

134 10 janvier 2007Cours d'algorithmique 12 / Intranet134 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Nous navons pas parlé de :

135 10 janvier 2007Cours d'algorithmique 12 / Intranet135 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Nous navons pas parlé de :

136 10 janvier 2007Cours d'algorithmique 12 / Intranet136 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Nous navons pas parlé de :

137 10 janvier 2007Cours d'algorithmique 12 / Intranet137 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Nous navons pas parlé de :

138 10 janvier 2007Cours d'algorithmique 12 / Intranet138 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Nous navons pas parlé de :

139 10 janvier 2007Cours d'algorithmique 12 / Intranet139 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Nous navons pas parlé de :

140 10 janvier 2007Cours d'algorithmique 12 / Intranet140 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Nous navons pas parlé de :

141 10 janvier 2007Cours d'algorithmique 12 / Intranet141 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Tests de programmes Tests de programmes Nous navons pas parlé de :

142 10 janvier 2007Cours d'algorithmique 12 / Intranet142 Langages objets Langages objets Langages fonctionnels Langages fonctionnels Langages logiques Langages logiques Graphes Graphes Analyse numérique Analyse numérique Calcul parallèle Calcul parallèle Calcul réparti Calcul réparti Du Web et ses langages Du Web et ses langages Traitement dimages, son,... Traitement dimages, son,... Optimisation combinatoire Optimisation combinatoire Génie logiciel Génie logiciel Tests de programmes Tests de programmes... et bien dautres !... et bien dautres ! Nous navons pas parlé de :

143 10 janvier 2007Cours d'algorithmique 12 / Intranet143 N O U S A L L O N S E N C H A I N E R A V E C L E C O U R S D E G R A P H E S

144 10 janvier 2007Cours d'algorithmique 12 / Intranet144 B O N N E C H A N C E A L E X A M E N ! ! ! B O N N E C O N T I N U A T I O N ! ! !


Télécharger ppt "Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approchées."

Présentations similaires


Annonces Google