Découvrez l'Algorithme de Cheapest Insertion: La Solution Élégante au Problème du Voyageur de Commerce
Une méthode heuristique puissante qui construit progressivement des itinéraires optimisés avec un excellent rapport efficacité-simplicité
Points Essentiels
- L'algorithme de Cheapest Insertion est une méthode heuristique qui construit progressivement un circuit en insérant chaque ville à la position optimale
- Sa complexité temporelle est de O(n²) à O(n³), offrant un bon équilibre entre qualité de solution et performance computationnelle
- Bien que non optimal dans tous les cas, il produit généralement des solutions de haute qualité et s'adapte bien aux problèmes de grande taille
Qu'est-ce que l'Algorithme de Cheapest Insertion?
L'algorithme de Cheapest Insertion (ou algorithme d'insertion au moindre coût) est une méthode heuristique utilisée principalement pour résoudre le problème du voyageur de commerce (TSP - Traveling Salesman Problem). Ce problème fondamental en optimisation combinatoire consiste à déterminer le circuit le plus court qui permet de visiter un ensemble de villes exactement une fois avant de revenir au point de départ.
Contrairement aux méthodes exactes qui garantissent une solution optimale mais sont impraticables pour les grands ensembles de données, cet algorithme offre un excellent compromis entre qualité de solution et temps de calcul, ce qui explique sa popularité dans les applications pratiques de logistique, de planification d'itinéraires et d'optimisation de réseaux.
Principe fondamental
L'idée centrale de l'algorithme est de construire progressivement une solution en commençant par un petit sous-circuit initial, puis en insérant itérativement les villes restantes à l'endroit qui minimise l'augmentation de la longueur totale du circuit.
Fonctionnement détaillé de l'algorithme
Étapes du processus d'insertion
1. Initialisation
L'algorithme débute avec un sous-circuit initial, généralement composé de deux ou trois villes. Ce sous-circuit peut être créé en sélectionnant les villes les plus proches les unes des autres, ou simplement en choisissant des villes arbitraires selon le contexte du problème.
2. Sélection et calcul du coût d'insertion
Pour chaque ville non encore incluse dans le circuit, l'algorithme calcule le coût d'insertion à chaque position possible du circuit existant. Ce coût est défini comme l'augmentation de la longueur totale du circuit qui résulterait de l'insertion.
Mathématiquement, si nous avons une arête (i,j) dans le circuit actuel et que nous envisageons d'insérer une ville k entre i et j, le coût d'insertion est calculé comme:
\[ \text{Coût d'insertion} = c_{ik} + c_{kj} - c_{ij} \]où \(c_{xy}\) représente le coût (ou la distance) entre les villes x et y.
3. Insertion de la ville
La ville qui peut être insérée avec le coût minimal est sélectionnée et ajoutée au circuit à la position correspondante. Cette étape transforme le circuit existant en y intégrant la nouvelle ville.
4. Répétition
Les étapes 2 et 3 sont répétées jusqu'à ce que toutes les villes aient été intégrées dans le circuit.
5. Finalisation
Une fois toutes les villes intégrées, le circuit complet est obtenu. Dans certaines implémentations, des optimisations supplémentaires peuvent être appliquées, comme des procédures d'amélioration locale (2-opt, 3-opt).
Exemple illustratif
Considérons un problème avec 5 villes (A, B, C, D, E) et la matrice de distances suivante:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| A | 0 | 12 | 19 | 8 | 15 |
| B | 12 | 0 | 7 | 14 | 11 |
| C | 19 | 7 | 0 | 16 | 9 |
| D | 8 | 14 | 16 | 0 | 18 |
| E | 15 | 11 | 9 | 18 | 0 |
Nous commençons avec un sous-circuit initial A-D-A (les deux villes les plus proches). Ensuite, nous calculons le coût d'insertion pour chaque ville restante (B, C, E) à chaque position possible dans le circuit actuel.
Pour la ville B, le coût d'insertion entre A et D serait:
c_AB + c_BD - c_AD = 12 + 14 - 8 = 18
Et entre D et A:
c_DB + c_BA - c_DA = 14 + 12 - 8 = 18
En procédant de manière similaire pour les villes C et E et en choisissant le coût minimal, nous construisons progressivement le circuit complet.
Visualisation de l'algorithme
Implémentation de l'algorithme
Voici un exemple d'implémentation de l'algorithme de Cheapest Insertion en Python :
def cheapest_insertion(distances):
n = len(distances)
# Commencer avec un sous-circuit de deux villes
# Trouver les deux villes les plus proches
min_dist = float('inf')
start_i, start_j = 0, 0
for i in range(n):
for j in range(i+1, n):
if distances[i][j] < min_dist:
min_dist = distances[i][j]
start_i, start_j = i, j
# Initialiser le tour avec ces deux villes
tour = [start_i, start_j, start_i]
unvisited = set(range(n)) - {start_i, start_j}
# Insérer les villes restantes une par une
while unvisited:
best_cost = float('inf')
best_city = None
best_position = None
# Pour chaque ville non visitée
for k in unvisited:
# Pour chaque position possible dans le tour
for i in range(len(tour) - 1):
# Calculer le coût d'insertion
cost = distances[tour[i]][k] + distances[k][tour[i+1]] - distances[tour[i]][tour[i+1]]
if cost < best_cost:
best_cost = cost
best_city = k
best_position = i + 1
# Insérer la meilleure ville à la meilleure position
tour.insert(best_position, best_city)
unvisited.remove(best_city)
return tour, calculate_tour_length(tour, distances)
def calculate_tour_length(tour, distances):
return sum(distances[tour[i]][tour[i+1]] for i in range(len(tour)-1))
Analyse comparative avec d'autres méthodes
L'algorithme de Cheapest Insertion est l'une des nombreuses heuristiques développées pour résoudre le problème du voyageur de commerce. Voici comment il se compare à d'autres approches populaires :
Ce graphique radar compare l'algorithme de Cheapest Insertion à d'autres heuristiques populaires pour le TSP sur différents critères de performance. On peut voir que l'algorithme offre un excellent équilibre entre la qualité de solution, le temps d'exécution et la facilité d'implémentation.
Applications pratiques
L'algorithme de Cheapest Insertion est largement utilisé dans de nombreux domaines où l'optimisation d'itinéraires est cruciale :
Logistique et transport
Dans le secteur de la logistique, l'algorithme est utilisé pour optimiser les routes de livraison, réduisant ainsi les coûts opérationnels et l'empreinte carbone.
Planification industrielle
En milieu industriel, l'algorithme peut être appliqué pour optimiser les séquences d'opérations sur des machines, minimisant les temps de configuration et maximisant la productivité.
Services d'urgence
Les services d'urgence peuvent utiliser cet algorithme pour déterminer les itinéraires les plus efficaces pour les véhicules d'intervention, réduisant les temps de réponse critiques.
Tourisme et loisirs
Dans le domaine du tourisme, l'algorithme peut aider à planifier des itinéraires optimaux pour visiter plusieurs attractions, maximisant l'expérience du voyageur tout en minimisant les temps de déplacement.
Exemple concret avec vidéo explicative
La vidéo suivante propose une explication détaillée du fonctionnement de l'algorithme de Cheapest Link, qui est étroitement lié à l'algorithme de Cheapest Insertion:
Cette vidéo illustre étape par étape comment construire un circuit en utilisant l'algorithme de Cheapest Link, ce qui permet de mieux comprendre les principes sous-jacents également présents dans l'algorithme de Cheapest Insertion.
Variantes et améliorations
Au fil du temps, plusieurs variantes et améliorations de l'algorithme de base ont été développées pour répondre à des besoins spécifiques :
Cheapest Insertion avec regret
Cette variante considère non seulement le coût d'insertion minimal, mais aussi la différence entre le meilleur et le deuxième meilleur coût d'insertion pour chaque ville. Cela permet de prioriser l'insertion des villes qui auraient un coût beaucoup plus élevé si elles n'étaient pas insérées à leur meilleure position.
Modified Cheapest Insertion
Cette version modifiée maintient une stabilité de calcul même pour un grand nombre de villes, ce qui la rend particulièrement adaptée aux problèmes de grande taille où les performances peuvent se dégrader avec l'algorithme standard.
Hybridation avec d'autres techniques
L'algorithme est souvent combiné avec d'autres méthodes comme le 2-opt ou le 3-opt pour raffiner la solution obtenue. Ces techniques d'amélioration locale peuvent significativement augmenter la qualité de la solution finale.
Images illustratives
Illustration de l'algorithme Cheapest Link, similaire au Cheapest Insertion
Exemple d'application de l'algorithme avec étapes détaillées
Foire Aux Questions
Références
- Cheapest Insertion - Georgia Tech ISYE
- Animated Algorithms for the Traveling Salesman Problem - STEM Lounge
- Modified Cheapest Insertion Heuristic - GitHub Repository
- Implementation of Cheapest Insertion Heuristic Algorithm - ResearchGate
-
Greedy heuristics with regret, with application to the cheapest insertion - ScienceDirect
Recommandations
Last updated April 6, 2025