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

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

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

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

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

Cours d’AlgorithmiqueCours d’Algorithmique

Exploration combinatoire complèteExploration combinatoire complète

Branch-and-BoundBranch-and-Bound

Solutions approchéesSolutions approchées

Page 2: Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions 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

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

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

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

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,

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

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

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

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

• Exemple :Exemple :

AA

BB

CC

DD

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

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

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

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

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 !

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

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 !

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

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 !

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !

Page 32: Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions approché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 !

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

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 !

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 )

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

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 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 !

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

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 !

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

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

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

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 !

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

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 !

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

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 !

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

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

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

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

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

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

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

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

Page 99: Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions 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 !

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

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 !

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

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 !

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

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 !

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

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

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

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

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

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

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

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

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

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 !

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

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 !

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

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

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

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

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

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

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

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 )

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

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 !

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

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 !

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

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 !

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

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 )

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

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 )

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

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 )

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

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 )

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

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 )

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

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

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

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

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

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

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

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 !

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

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 !

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

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 !

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

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 .

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

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

Page 129: Cours d'algorithmique 12 / Intranet 1 10 janvier 2007 Cours dAlgorithmique Exploration combinatoire complète Branch-and-Bound Solutions 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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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 :

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

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

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

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