Adapting Dijkstra for Buffers and Unlimited Transfers

Cet article présente l'algorithme TAD (Transfer Aware Dijkstra), une modification de Dijkstra capable de gérer les temps d'attente aux arrêts et les transferts illimités de manière optimale, surpassant ainsi les performances de l'algorithme MR sur des réseaux réels comme ceux de Londres et de la Suisse.

Denys Katkalo, Andrii Rohovyi, Toby Walsh

Publié 2026-03-13
📖 5 min de lecture🧠 Analyse approfondie

Each language version is independently generated for its own context, not a direct translation.

🚌 Le Dilemme du Voyageur : Prendre le train ou changer de bus ?

Imaginez que vous utilisez une application pour trouver le meilleur trajet en transports en commun. Le défi pour les informaticiens est de calculer ce trajet en un éclair, même si vous devez faire des dizaines de correspondances (changer de bus, de train, de métro) et si vous avez des contraintes de temps à chaque arrêt.

Pendant des années, les chercheurs pensaient que la meilleure méthode était une technique moderne appelée RAPTOR (et son dérivé MR). Ils avaient presque oublié l'ancienne méthode, le célèbre algorithme de Dijkstra, qu'ils jugeaient trop lent.

Mais cette équipe de chercheurs (Denys, Andrii et Toby) a dit : "Attendez un peu ! Et si on réexaminait l'ancien algorithme ?"

🕵️‍♂️ Le Problème du "Filtre Trop Rapide"

Pour aller vite, les versions modernes de Dijkstra utilisent un filtre intelligent.
Imaginez deux bus partant de la même gare :

  1. Le Bus A part à 8h00 et arrive à 9h40.
  2. Le Bus B part à 8h30 et arrive à 9h30.

Le Bus B est "meilleur" : il part plus tard mais arrive plus tôt. Le filtre dit donc : "Oublie le Bus A, il est inutile !" C'est logique, non ?

Le piège : Ce filtre oublie une chose cruciale : le temps d'attente obligatoire (le "buffer").
Dans la vraie vie, si vous changez de bus à une gare, vous devez souvent attendre 10 ou 20 minutes pour changer de quai ou pour des raisons de sécurité. Mais si vous restez assis dans le même bus (le Bus A) et qu'il s'arrête juste à côté, vous n'avez pas besoin d'attendre !

  • Le filtre classique pense : "Le Bus A est mauvais, on le supprime."
  • La réalité : Si vous restez assis dans le Bus A, vous arrivez à destination sans attendre. Si vous prenez le Bus B, vous devez attendre 20 minutes pour prendre le prochain bus, et vous arrivez plus tard !

Le filtre classique est donc trompeur quand il y a des temps d'attente obligatoires. Il supprime la meilleure solution sans le savoir.

💡 La Solution : Dijkstra "Conscient des Transferts" (TAD)

Pour résoudre ce problème, les auteurs ont créé une nouvelle version de l'algorithme qu'ils appellent TAD (Transfer Aware Dijkstra).

Voici l'analogie pour comprendre la différence :

  • L'ancien Dijkstra (avec filtre) est comme un touriste pressé qui regarde chaque arrêt individuellement. Il voit un bus plus rapide sur un tronçon et dit : "Je prends celui-ci !" sans se rendre compte que cela l'oblige à changer de véhicule et à attendre.
  • Le nouveau TAD est comme un conducteur de train expérimenté. Quand il monte dans un train, il ne regarde pas juste le prochain arrêt. Il regarde tout le trajet du train d'un coup.
    • Il se dit : "Si je monte dans ce train, je peux rester assis jusqu'à la fin du parcours sans jamais descendre ni attendre."
    • Il scanne donc toute la séquence de l'arrêt A jusqu'à l'arrêt Z pour voir si cela vaut le coup, au lieu de traiter chaque segment séparément.

🏆 Les Résultats : Qui gagne la course ?

Les chercheurs ont testé leur méthode sur deux réseaux réels : Londres (sans temps d'attente obligatoires) et la Suisse (avec beaucoup de temps d'attente).

  1. Sur le réseau sans contraintes (Londres) :

    • L'ancien Dijkstra (avec le filtre) est très rapide, mais le nouveau TAD est aussi très performant.
    • Résultat : Le Dijkstra classique bat l'ancien champion (MR) de 2,8 fois !
  2. Sur le réseau avec contraintes (Suisse) :

    • Ici, l'ancien Dijkstra échoue complètement car son filtre supprime les bons trajets.
    • Le nouveau TAD, lui, fonctionne parfaitement. Il trouve le trajet optimal en tenant compte du fait que rester assis évite l'attente.
    • Résultat : TAD est presque 3 fois plus rapide que l'ancien champion (MR) tout en étant 100% correct.

🚀 Pourquoi est-ce important ?

Imaginez que vous planifiez un voyage en temps réel (par exemple, un train est en retard).

  • La méthode la plus rapide actuellement (ULTRA-CSA) est très rapide, mais elle nécessite de faire un énorme travail de préparation (comme construire une carte routière géante) qui prend des minutes. Si les horaires changent, il faut tout recalculer.
  • TAD, lui, est comme un GPS flexible. Il n'a pas besoin de pré-calculer des raccourcis complexes. Il lit l'horaire tel quel, s'adapte instantanément aux changements et trouve le meilleur chemin en un temps record.

En résumé

Cette recherche nous apprend que parfois, les vieilles méthodes (Dijkstra) ne sont pas obsolètes, elles ont juste besoin d'une petite mise à jour pour comprendre la complexité du monde réel (comme le fait de rester assis dans un bus).

Leur nouveau TAD est une solution élégante : il est plus rapide que les méthodes modernes actuelles et plus intelligent car il ne se fait pas piéger par les temps d'attente obligatoires. C'est une victoire pour les voyageurs qui veulent des trajets optimaux, même avec des correspondances compliquées !