- L’équipe de recherche de Rasmus Kyng à l’ETH Zurich a développé un algorithme qui calcule le problème consistant à trouver le flot maximum dans un réseau et à minimiser les coûts de transport à une vitesse proche de la limite mathématique
- Le nouvel algorithme adopte une approche en temps presque linéaire, produisant une réponse dans un temps presque comparable à celui nécessaire pour lire les données du réseau, et peut s’appliquer aux calculs sur des réseaux comme les chemins de fer, les routes, les voies navigables et Internet
- Par le passé, si l’on note m le nombre de connexions, on en était jusqu’aux années 2000 à m^1.5, puis à m^1.33 en 2004, mais l’approche de Kyng réduit le temps de calcul supplémentaire après lecture des données à un niveau négligeable
- L’équipe a étendu ses travaux au-delà des réseaux statiques et orientés à des graphes incrémentaux, où des connexions sont ajoutées, et à des graphes décrémentaux, où elles sont supprimées, tout en calculant les plus courts chemins et le flot maximum à coût minimal en temps presque linéaire
- Cela jette les bases d’un recalcul rapide des itinéraires optimaux lorsque des réseaux réels changent, comme lors de la fermeture puis de la réouverture partielle du tunnel de base du Gothard, ou après un glissement de terrain sur l’autoroute A13
Calculer les problèmes de flot de réseau à une vitesse proche de la limite
- L’algorithme de flot de réseau de l’équipe de Rasmus Kyng traite le problème consistant à trouver le flot maximal possible dans un réseau tout en minimisant les coûts de transport
- Un exemple typique consiste à trouver l’itinéraire permettant d’acheminer le plus de marchandises possible de Copenhague à Milan, le plus vite et au moindre coût
- Il permet de calculer un flot optimal à faible coût dans des réseaux dotés de connexions et de capacités, comme les chemins de fer, les routes, les voies navigables ou Internet
- La vitesse de calcul a été réduite à un niveau presque équivalent au temps nécessaire à un ordinateur pour lire les données du réseau
Pourquoi parle-t-on de l’algorithme « le plus rapide »
- Auparavant, le temps nécessaire pour calculer un flot optimal était bien plus long que celui requis pour traiter les données du réseau
- Plus le réseau devenait vaste et complexe, plus le temps de calcul augmentait plus vite que la taille du problème
- L’approche de Kyng fait en sorte que le temps de calcul et la taille du réseau augmentent dans la même proportion
- Si l’on note m le nombre de connexions du réseau, la simple lecture des données demande déjà un temps de m
- Jusqu’aux années 2000, il n’existait pas d’algorithme calculant plus vite que m^1.5
- En 2004, la quantité de calcul nécessaire pour résoudre le problème a été ramenée à m^1.33
- L’algorithme de Kyng abaisse ensuite à un niveau négligeable le temps de calcul supplémentaire nécessaire pour parvenir à la solution après lecture des données
Évaluation et extension des algorithmes en temps presque linéaire
- L’équipe de Kyng a publié il y a deux ans un article présentant la preuve mathématique de ce concept
- Un algorithme aussi rapide, presque optimal, est qualifié d’algorithme en temps presque linéaire
- Daniel A. Spielman a comparé cet algorithme à une Porsche dépassant une calèche
- L’article a reçu le Best Paper Award lors de l’IEEE Annual Symposium on Foundations of Computer Science, FOCS, en 2022
- Communications of the ACM a également mis en lumière ces travaux, et la rédaction de Quanta a classé l’algorithme de Kyng parmi les 10 plus grandes découvertes en informatique de 2022
Des réseaux statiques aux réseaux qui évoluent
- L’algorithme initial se concentrait sur des réseaux fixes et statiques à connexions orientées
- Une connexion orientée correspond, par exemple, à une rue à sens unique dans un réseau routier urbain
- Par la suite, l’équipe a développé des algorithmes permettant de calculer le flot optimal dans des réseaux qui évoluent progressivement au fil du temps
- Simon Meierhans a présenté à Vancouver, lors de l’Annual ACM Symposium on Theory of Computing, STOC, un nouvel algorithme en temps presque linéaire
- Cet algorithme résout le problème du flot maximum à coût minimal dans des réseaux où de nouvelles connexions sont ajoutées
- Un second article, accepté à l’IEEE Symposium on Foundations of Computer Science, FOCS, d’octobre, présente un algorithme capable de traiter aussi la suppression de connexions
- Les deux algorithmes identifient les plus courts chemins dans des réseaux où des connexions sont ajoutées ou supprimées
Exemples de changements dans des réseaux réels
- En Suisse, le tunnel de base du Gothard a été totalement fermé à partir de l’été 2023, puis partiellement rouvert
- Une partie de l’autoroute A13, principal itinéraire de remplacement du tunnel routier du Gothard, a récemment été détruite par un glissement de terrain
- Lorsqu’un tel changement survient, les ordinateurs, les services de cartographie en ligne et les planificateurs d’itinéraires doivent recalculer la connexion la moins coûteuse et la plus courte entre Milan et Copenhague
- Le nouvel algorithme de Kyng calcule des itinéraires optimaux en temps presque linéaire, même dans des réseaux où des connexions sont ajoutées ou supprimées
- Même lorsqu’un détour ou un nouvel itinéraire ajoute des connexions, le temps de calcul supplémentaire reste négligeable
Les deux stratégies classiques et la nouvelle manière de les combiner
- Le calcul de flot dans un réseau nécessite d’analyser le réseau à plusieurs reprises pour trouver le flot optimal et les chemins de coût minimal
- À chaque itération, on examine des variantes comme les connexions ouvertes ou fermées, ou celles qui ont atteint leur capacité maximale et sont congestionnées
- Avant Kyng, les informaticiens utilisaient principalement l’une de deux stratégies
- Modèle du réseau ferroviaire : à chaque itération, on calcule une section entière du réseau dont le flux de trafic a changé
- Modèle du réseau électrique : à chaque itération, on calcule l’ensemble du réseau, mais on accélère le calcul en utilisant des valeurs moyennes statistiques pour les flux modifiés sur chaque section
- L’équipe de Kyng a réuni les avantages de ces deux stratégies dans une nouvelle approche combinée
- Maximilian Probst Gutenberg estime qu’en combinant de nombreuses petites étapes de calcul efficaces et peu coûteuses, on va beaucoup plus vite qu’avec quelques grandes étapes
Contexte historique des algorithmes de flot
- Le problème du flot de réseau a été l’un des premiers problèmes résolus de manière systématique par des algorithmes dans les années 1950
- Les algorithmes de flot ont joué un rôle majeur dans l’émergence de l’informatique théorique comme champ de recherche indépendant
- L’algorithme bien connu de Lester R. Ford Jr. et Delbert R. Fulkerson date également de cette période
- L’algorithme de Ford-Fulkerson résout efficacement le problème du flot maximum, qui consiste à transporter autant de marchandises que possible dans un réseau sans dépasser la capacité de chaque chemin
- Les travaux ultérieurs ont montré que le problème du flot maximum, le problème du coût minimal et plusieurs autres problèmes de flot de réseau sont des cas particuliers du problème général du flot à coût minimal
Les limites des algorithmes précédents et le tournant de 2004
- Avant les travaux de Kyng, de nombreux algorithmes pouvaient résoudre efficacement un problème spécifique, mais ils n’étaient pas assez rapides et s’étendaient difficilement au problème plus général du flot à coût minimal
- John Edward Hopcroft, Richard Manning Karp et Robert Endre Tarjan, auteurs d’algorithmes pionniers de flot dans les années 1970, ont chacun reçu le prix Turing
- Karp l’a reçu en 1985
- Hopcroft et Tarjan l’ont reçu en 1986
- En 2004, Daniel Spielman, Shang-Hua Teng, puis Samuel Daitch ont conçu des algorithmes offrant aussi des solutions rapides et efficaces au problème du flot à coût minimal
- Ce groupe a déplacé la perspective du réseau ferroviaire vers le flux électrique dans un réseau d’alimentation
- Dans un réseau électrique, le flux de courant peut déjà être partiellement dévié vers des connexions où un autre courant circule
- Kyng n’a pas repris telle quelle la puissante approche algorithmique de Spielman pour l’ensemble du réseau, mais a appliqué l’idée de calcul de chemins partiels à l’approche antérieure de Hopcroft et Karp
- Le calcul de chemins partiels à chaque itération a fortement contribué à accélérer le calcul du flot global
Nouveaux outils mathématiques et structures de données
- Les avancées de l’équipe de l’ETH Zurich reposent non seulement sur de nouveaux algorithmes, mais aussi sur la conception d’outils mathématiques qui accélèrent encore le calcul
- L’équipe a développé une nouvelle structure de données pour organiser les données du réseau
- Cette structure de données permet d’identifier très rapidement les changements dans les connexions du réseau
- Cette détection rapide des changements contribue à accélérer la résolution algorithmique
- Les algorithmes en temps presque linéaire et cette nouvelle structure de données ouvrent la voie à la résolution de problèmes très vastes qui ne pouvaient auparavant pas être calculés efficacement
Articles et ressources associés
- Almost-Linear Time Algorithms for Decremental Graphs: Min-Cost Flow and More via Duality: article FOCS 2024 sur le flot à coût minimal et d’autres problèmes dans les graphes décrémentaux
- Almost-Linear Time Algorithms for Incremental Graphs: Cycle Detection, SCCs, s-t Shortest Path, and Minimum-Cost Flow: article STOC 2024 sur la détection de cycles, les SCC, le plus court chemin s-t et le flot à coût minimal dans les graphes incrémentaux
- Maximum Flow and Minimum-Cost Flow in Almost-Linear Time: article FOCS 2022 sur la résolution du flot maximum et du flot à coût minimal en temps presque linéaire
- Almost-Linear-Time Algorithms for Maximum Flow and Minimum-Cost Flow: article associé de Communications of the ACM
- Researchers Achieve ‘Absurdly Fast’ Algorithm for Network Flow: article connexe de Quanta Magazine paru en 2022
1 commentaires
Avis sur Hacker News
Cet algorithme est asymptotiquement presque linéaire dans la limite n -> inf
À la fin de la vidéo, il est dit qu’il serait difficile pour n’importe quelle implémentation de cet algorithme de battre les algorithmes existants dans le monde réel
https://cacm.acm.org/research/almost-linear-time-algorithms-...
https://en.wikipedia.org/wiki/Galactic_algorithm
L’expression vitesse la plus rapide possible est une affirmation vraiment audacieuse
Il est souvent bien plus pratique d’obtenir 99 % de qualité en n’utilisant que 1 % du temps
Fait intéressant, la même personne travaille aussi à rendre vraiment efficaces en pratique des algorithmes purement théoriques [1]
Cela dit, le processus semble prendre encore une vingtaine d’années. [1] s’appuie sur une percée théorique de 2004 [2], et si j’ai bien compris, ces algorithmes n’ont commencé à fonctionner en pratique qu’en 2024. On peut donc peut-être espérer des algorithmes pratiques de flot à coût minimum en 2044
[1] https://arxiv.org/pdf/2303.00709
[2] https://arxiv.org/abs/cs/0310051
Mais cela reste un très beau résultat théorique
Parfois, j’ai l’impression qu’on s’est complètement perdu en prenant la complexité comme métrique
Il y a de plus en plus d’algorithmes qui optimisent les métriques de complexité à un niveau délirant, mais qui ne sont pas vraiment utiles en pratique
Une fois tous les résultats faciles épuisés, la recherche en algorithmique est devenue un autre domaine hautement spécialisé, et à moins d’être chercheur dans un domaine très proche, la plupart des articles ne valent pas vraiment le temps qu’on y consacre
Articles liés : https://news.ycombinator.com/item?id=31149038 (40 commentaires)
https://news.ycombinator.com/item?id=31675015 (72 commentaires)
Où sont l’article ou le code ?
https://cacm.acm.org/research/almost-linear-time-algorithms-...
Il y a quelque chose qui me déroute ici : o(n) semble être une proposition plus forte que O(n)
Tout algorithme en o(n) est en O(n), mais l’inverse n’est pas vrai. Et si o(n) s’applique même aux n aussi petits qu’on veut, tandis que O(n) ne s’applique que lorsque n -> inf, cet algorithme ne devrait-il pas être applicable aussi aux petits n ? Dans ce cas, ne devrait-ce pas être l’inverse de l’algorithme galactique mentionné plus haut ? Est-ce que je rate quelque chose ?
La définition de f(n) = o(g(n)) est, grosso modo, lim (n -> infinity) f(n)/g(n) = 0. Autrement dit, pour n suffisamment grand, g croît plus vite que f
Par exemple, une fonction comme f(n) = 10n if n < 1000 else 1e1000 est en o(n). Quand n grandit, 1e1000/n tend vers 0. C’est une pseudo-expression Python d’une fonction par morceaux qui croît exponentiellement jusqu’à 101000 lorsque n = 1000, puis reste constante ensuite
Si je me souviens bien, 3↑↑64 est le nombre de Graham
Maudits facteurs constants, ça me donne envie d’agiter le poing vers le ciel
Le résumé dit seulement que le temps est m^(1+o(1))
Quelqu’un sait-il si une borne supérieure plus précise est donnée quelque part ?
https://de.m.wikipedia.org/wiki/Landau-Symbole
Autrement dit, c’est un schéma algorithmique permettant d’obtenir, pour tout ɛ>1, un algorithme s’exécutant en temps O(m^ɛ)
Le petit o est une fonction qui se rapproche de 0 quand n tend vers l’infini, et on dit qu’elle est asymptotiquement négligeable