Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire...

Post on 03-Apr-2015

114 views 0 download

Transcript of Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire...

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

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

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

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

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

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

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

• 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,

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

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

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

• Exemple :Exemple :

AA

BB

CC

DD

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

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

• Exemple :Exemple :

AA

BB

CC

DD3030

3535

20204545

1717

1515

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

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

• Exemple :Exemple :

AA

BB

CC

DD3030

3535

20204545

1717

1515

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

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

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

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

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

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

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

• Exemple :Exemple :

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

AA

BB

CC

DD3030

3535

20204545

1717

1515

(( ))

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

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

• Exemple :Exemple :

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

AA

BB

CC

DD3030

3535

20204545

1717

1515

++

++

++

++(( )) La diagonaleLa diagonaleà +à + ou à 0 ! ou à 0 !

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

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

• Exemple :Exemple :

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

AA

BB

CC

DD3030

3535

20204545

1717

1515

++

++

++

++(( ))AA

BB

CC

DD

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

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

• 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

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

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

• Exemple :Exemple :

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

AA

BB

CC

DD3030

3535

20204545

1717

1515

++

++

++

++(( )) Par symétrie !Par symétrie !

AA

BB

CC

DD

3030 2020 3535

3030

2020

3535

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

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

• 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

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

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

• 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 1515Par symétrie !Par symétrie !

1717

1515

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

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

• 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

4545

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

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

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

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

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

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

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

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

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

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

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

• Pour avoir un circuit il faut sélectionner « n » Pour avoir un circuit il faut sélectionner « n » arêtes !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,

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

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

• Pour avoir un circuit il faut sélectionner « n » Pour avoir un circuit il faut sélectionner « n » arêtes !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,

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

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

• Pour avoir un circuit il faut sélectionner « n » Pour avoir un circuit il faut sélectionner « n » arêtes !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 « s » est la somme des longueurs des arêtes de « E »,« E »,

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

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

• Pour avoir un circuit il faut sélectionner « n » Pour avoir un circuit il faut sélectionner « n » arêtes !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 « s » est la somme des longueurs des arêtes de « E »,« E »,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !

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

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 !

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

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

– garder le même nombre « c » d’arêtes garder le même nombre « c » d’arêtes sélectionnées,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 » à + . .

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

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

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

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

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

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

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

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

• Lorsque l’arête ( a , b ) est de poids fini et Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider deacceptable, nous 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 :

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

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

• Lorsque l’arête ( a , b ) est de poids fini et Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider deacceptable, nous 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

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

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

• Lorsque l’arête ( a , b ) est de poids fini et Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider deacceptable, nous 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 ) }

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

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

• Lorsque l’arête ( a , b ) est de poids fini et Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider deacceptable, nous 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 )

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

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

• Lorsque l’arête ( a , b ) est de poids fini et Lorsque l’arête ( a , b ) est de poids fini et acceptable, nous pouvons décider deacceptable, nous 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 ) <- +- + ] ]

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

Plus de départ depuis a ,Plus de départ depuis a ,plus d ’arrivée vers b !plus d ’arrivée vers b !

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

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

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

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

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

E V I T O N S E V I T O N S

C E R T A I N SC E R T A I N S

C A L C U L S ! ! !C A L C U L S ! ! !

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

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

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

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

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

• 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,

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

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

• 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,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Si opt* <= lb( A ) alors opt* <= lb( A ) <= Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( 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 Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).opt( A ).

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

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

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

• Si opt* <= lb( A ) alors opt* <= lb( A ) <= Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( 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 Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).opt( A ).

– Tout bénef !Tout bénef !

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

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

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

• Si opt* <= lb( A ) alors opt* <= lb( A ) <= Si opt* <= lb( A ) alors opt* <= lb( A ) <= opt( 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 Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).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.

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

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

• 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 Le calcul lb( A ) est beaucoup plus rapide que celui de opt( A ).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* , En effet, lb( A ) <= opt( A ) et lb( A ) < opt* , mais . . . ? ? ?mais . . . ? ? ?

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

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

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

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

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

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

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

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

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

• 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 BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

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

• 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 BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

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

• 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 BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Pour notre TSP :Pour notre TSP :

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

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

• Pour notre TSP :Pour notre TSP :

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

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

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

• 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 BoundBranch and Bound----------------------------------------------------------------------------------------------------------------------------------

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

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

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

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

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

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

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

• 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 Cette valeur sera au moins aussi grande que la plus petite valeur finie dans la ligne.valeur finie dans la ligne.

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

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

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

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

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

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

• Exemple :Exemple :

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

++

++

++(( ))3030

1010

3535

1515

1717 4545

++ ++ ++

++

++

++

++

s = 42s = 42

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

• Exemple :Exemple :

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

++

++

++(( ))3030

1010

3535

1515

1717 4545

++ ++ ++

++

++

++

++

s = 42s = 42

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

• Exemple :Exemple :

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

++

++

++(( ))3030

1010

3535

1515

1717 4545

++ ++ ++

++

++

++

++

s = 42s = 42

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

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

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

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

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

• 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

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

• 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

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 !

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

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

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

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

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

• 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

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

• 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

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

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

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

N O U S N O U S

R E N O N C O N S AR E N O N C O N S A

L ‘ O P T I M U M ! ! !L ‘ O P T I M U M ! ! !

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

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

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

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

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

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 !

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

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 !

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

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 !

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

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

991111

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

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

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

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 !

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

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

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 !

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

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

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 !

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

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 !

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

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

3030

1515

1212 1010

1818

88

7755

991111

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

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

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

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

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

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

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 )

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

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( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) <= coût( CIRC ) = 2*coût( ARM )

Forcément !Forcément !

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

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( ARM ) <= coût( TSP ) <= coût( CIRC )coût( TSP ) <= coût( CIRC ) = 2*coût( ARM ) = 2*coût( ARM )

Le TSP est le meilleur circuit !Le TSP est le meilleur circuit !

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

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( ARM ) <= coût( TSP ) <= coût( CIRC ) = 2*coût( ARM )coût( CIRC ) = 2*coût( ARM )

Par construction !Par construction !

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

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 )

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

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 )

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

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 )

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

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 )

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

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 )

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

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 )

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

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

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

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

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

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

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

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 !

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

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 !

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

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 En moyenne, nous sommes à 5% ou 10% de l’optimum !l’optimum !

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

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 .

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

SynthèseSynthèse----------------------------------------------------------------------------------------------------------------------------------

Exploration combinatoire complèteExploration combinatoire complète

Branch-and-BoundBranch-and-Bound

Solutions approchéesSolutions approchées

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

• 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 :

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

• Langages objetsLangages objets

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

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

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

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

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

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

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

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

• Langages objetsLangages objets

• Langages fonctionnelsLangages fonctionnels

• Langages logiquesLangages logiques

• GraphesGraphes

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

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

• 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 :

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

N O U SN O U SA L L O N SA L L O N S

E N C H A I N E RE N C H A I N E RA V E CA V E C

L E C O U R S D EL E C O U R S D EG R A P H E SG R A P H E S

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

B O N N E C H A N C EB O N N E C H A N C EA L ’ E X A M E N ! ! !A L ’ E X A M E N ! ! !

B O N N EB O N N EC O N T I N U A T I O C O N T I N U A T I O

N ! ! !N ! ! !