Académique Documents
Professionnel Documents
Culture Documents
Département informatique
Introduction
Calculer une tournée longueur minimale passant une et une seule fois par n villes
●
V(G) l'ensemble des nœuds, chaque nœud modélisant une ville
●
E(G) l'ensemble des arcs. Le poids w(e) associé à chaque arc e ∈ E(G) modélise
au coût de déplacement entre deux villes. Notons que les poids ne sont pas
nécessairement symétriques.
●
Force brute : complexité temporelle factorielle en n
●
Programmation dynamique : complexité spatiale + temporelle exponentielle en n
●
Branch & Bound : complexité temporelle exponentielle en n
0
0 5 10 15 20 25 30 35 40 45
nombre de villes n
Algorithmes de résolution approchée
● ...
Exemple :
Domaines : 5
x1 et x2 dans {1,2,3,4}
4
Contraintes :
x1 + x2 ≥ 3 3
x2 – x1 ≤ 1
2x1 – x2 ≤ 3 2
x1
1 2 3 4 5
Optimisation combinatoire
Résolution par énumération
x2=1 x2=2 x2=3 x2=4 x2=1 x2=2 x2=3 x2=4 x2=1 x2=2 x2=3 x2=4
-1 4 2 0 3 1
Le branch & bound
Etapes
-1
x2
5
x1=2 ⇒ x2 ∈ [1,3] ⇒ f ∈ [0,4] 4
3
2
1 2 3 4 5 x1
Principe de l'algorithme de Little
Fichier PDF
L'algorithme de Little
Principe
L'algorithme de Little est un algorithme de résolution du TSP par
Branch & Bound
• La séparation consiste à considérer l'inclusion ou l'exclusion
d'un trajet (i,j) dans une tournée. Chaque séparation produisant
deux branches, l'arbre de recherche est binaire (fig. 1b)
6 villes
B: Bordeaux
L: Lyon
N: Nantes
P: Paris
M: Montpellier
D: Dijon
60 tournées
possibles
(120 si coûts
asymétriques)
L'algorithme de Little
Visite du nœud 1
Arbre de recherche
1 La racine va contenir une première
borne inférieure pour le coût de la
tournée optimale, tous les trajets étant
encore possibles
Réduction de la matrice:
lignes
Réduction de la matrice:
lignes
Réduction de la matrice:
colonnes
B L N P M D
B L N P M D
min ligne :
B 460 0(130) 200 60 340
60
L 580 500 200 0 0
min colonne: 70
B L N P M D
min colonne: 60
B L N P M D
B L N P M D
L 500 200 0 0
P 150 70 340 0
D 0 430 50 200
L 500 200 0 0
P 150 70 340 0
D 0 430 50 200
L 430 150 0 0
= 1810 + 180 0
P 150 0 340 0 0
Réduction de la matrice
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 5
PN PN L 150 0 0
M 0 340 200
4 2350 5
D 0 0 200
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 5
D 0 0 200
Élimination du trajet BP
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 5
Réduction de la matrice
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 5
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 5
6 2140
2270 7
Regret maximal: Bordeaux-Montpellier (280)
= 1990 + 280
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 7
PN PN M 0 200
4 2350 5 1990 D 0 0
BM BM
6 2140
2270 7
Élimination du trajet MP
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 7
PN PN M 0 200 0
4 2350 5 1990 D 0 0 0
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 7
PN PN M 0(200) 200
BM BM
6 2140
2270 7 1990 Calcul des regrets
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 7
PN PN M 0(200) 200
BM BM
6 2140
2270 7 1990 Regret maximal: Lyon-Dijon (350)
LD LD
- Création des fils 8 et 9.
8 2140
2340 9 - Affectation de la valeur de 8
- Empilage de 8
= 1990 + 350
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 9
PN PN D 0 0
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD
8 2140
2340 9
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 9
PN PN D 0
4 2350 5 1990
BM BM Élimination du trajet DL
6 2140
2270 7 1990
(aboutissant à la sous-tournée LD-DL)
LD LD
8 2140
2340 9
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 9
4 2350 5 1990
supprimé: 0 0 Total supprimé:
BM BM 0
6 2140
2270 7 1990
Réduction de la matrice
LD LD
8 2140
2340 9 1990
= 1990 + 0
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Visite du nœud 9
PN PN D 0
4 2350 5 1990
BM BM
6 2140
2270 7 1990 Il n'y a plus de choix possible: il faut
LD LD, ML, DP intégrer les trajets ML et DP pour finir
la tournée
8 2140
2340 9 1990
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Premier résultat
Branche terminée.
Arbre de recherche
Une première solution trouvée,
1 1810 contenant les trajets:
NB NB
4 2350 5 1990
On peut donc construire une
tournée au départ de n'importe
BM BM
quelle ville, par exemple
6 2140
2270 7 1990
Bordeaux:
LD LD, ML, DP
8 2140
2340 9* 1990 BM – ML – LD – DP – PN – NB
Valeur de référence (*): 1990 km
8
6
4
nœud nœud en nœud
à visiter cours de visite visité
Pile 2
L'algorithme de Little
Backtracking
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
On visite à présent les nœuds
4 2350 5 1990
empilés pour tenter d'améliorer
BM BM cette première solution.
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
8
6
4
nœud nœud en nœud
à visiter cours de visite visité * référence :1990 Pile 2
L'algorithme de Little
Visite du nœud 8
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 8: 2340 ≥ référence.
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
6
4
nœud nœud en nœud
à visiter cours de visite visité * référence :1990 Pile 2
L'algorithme de Little
Visite du nœud 8
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 8: 2320 ≥ référence.
4 2350 5 1990
BM BM
Pas d'amélioration possible.
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
6
4
nœud nœud en nœud
à visiter cours de visite visité * référence :1990 Pile 2
L'algorithme de Little
Visite du nœud 6
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 6: 2270 ≥ référence.
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
4
nœud nœud en nœud
à visiter cours de visite visité * référence :1990 Pile 2
L'algorithme de Little
Visite du nœud 6
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 6: 2270 ≥ référence.
4 2350 5 1990
BM BM
Pas d'amélioration possible.
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
4
nœud nœud en nœud
à visiter cours de visite visité * référence :1990 Pile 2
L'algorithme de Little
Visite du nœud 4
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 4: 2350 ≥ référence.
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 4: 2350 ≥ référence.
4 2350 5 1990
BM BM
Pas d'amélioration possible.
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 2: 1990 ≥ référence.
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
Valeur du nœud 2: 1990 ≥ référence.
4 2350 5 1990
BM BM
Pas d'amélioration possible.
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
Arbre de recherche
1 1810
Fin de l'algorithme.
NB NB
4 2350 5 1990 BM – ML – LD – DP – PN – NB
BM BM
Valeur: 1990 km
6 2140
2270 7 1990
LD LD, ML, DP
#nœuds visités: 9 << 565
8 2140
2340 9* 1990
Nombre maximal de nœuds visités
(cf. exercice d'approfondissement)
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
4 2350 5 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
4 2350 5 1990
BM BM
6 2140
2270 7 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD
8 2140
2340 9* 1990
Arbre de recherche
1 1810
NB NB
2 1990 3 1990
PN PN
4 2350 5 1990
BM BM
6 2140
2270 7 1990
LD LD, ML, DP
8 2140
2340 9* 1990
Algorithme de Little
L'algorithme de Little
C* = +∞
Résumé
Élimination des sous-tournées
Réduction de la matrice
⇒ évaluation par défaut E
oui Fin de la
E ≥ C* ? branche
non non Suppression de la
Suppression du oui ligne i et de la
trajet (i,j) Matrice 2x2 ? E < C* ? colonne j
non oui
Algorithme de Little
Application
A B C D E F
A 1 7 3 14 2
B 3 6 9 1 24
C 6 14 3 7 3
D 2 3 5 9 11
E 15 7 11 2 4
F 20 5 13 4 18
Solution partielle
Arbre de recherche
16
BE BE
Tournée optimale au départ de A:
22 16
DA DA
AC-CF-FB-BE-ED-DA (coût: 20)
19 19
CA CA AC AC
29 20 22 20
CF CF, ED, FB
32 20
Exercice d’approfondissement
Algorithme de Little
Étude de complexité
Le tableau ci-dessous donne le nombre maximal de nœuds N(n) visités par
l'algorithme de Little pour n≥3 villes :
n N(n)
3 8
4 27
5 112
6 565
7 3396
8 23779
9 190240
10 1712169
11 17121700
12 188338711
13 2260064544
14 29380839085
15 411331747204
16 6169976208075
17 98719619329216
18 1678233528596690
19 30208203514740400
20 573955866780068000
Démontrer par récurrence l'expression de N(n) et vérifier votre résultat sur
l'intervalle [3,20] à l'aide du tableau fourni.
Étude de complexité
Réponse :
N(3) = 8
Pour n>3 : N(n) = (n−1) (1 + N(n−1) )