Ce moteur s'inspire de l'article de recherche :
"Breaking the Sorting Barrier for Directed Single-Source Shortest Paths"
- Auteurs : Ran Duan, Jiayi Mao, Xiao Mao, Xinkai Shu, Longhui Yin
- arXiv : 2504.17033v2
- Date : 2025 (version révisée : 30 juillet 2025)
- Lien : https://arxiv.org/abs/2504.17033
L'article démontre qu'il est possible de résoudre les plus courts chemins (SSSP) sur des graphes dirigés avec poids réels non-négatifs en O(m log^{2/3}n) dans le modèle comparaison-addition, sans trier toutes les options globalement.
Résultat clé : C'est le premier résultat à casser la barrière O(m+n log n) de l'algorithme de Dijkstra sur les graphes creux, montrant que l'algorithme de Dijkstra n'est pas optimal pour SSSP.
- Frontière (S) : Ensemble d'actions/états candidats
- Pivots (P) : Actions structurantes à fort impact (P ≪ S)
- Bornes (B, B') : Seuils pour évaluer la confiance
- Pas de Tri Global : Évite O(n log n)
Dans l'article : Ensemble S de candidats pour le plus court chemin.
Dans notre moteur : Ensemble S de nœuds candidats pour la décision.
# Module : 01_core_engine/agent/frontier.py
# Maintient l'ensemble S sans trier tous les nœuds
frontier = Frontier(graph)
frontier.add_candidate(node_id) # Ajoute à S sans triDans l'article : Pivots qui réduisent efficacement la frontière.
Dans notre moteur : Nœuds PROVEN avec forte couverture qui structurent la décision.
# Module : 01_core_engine/agent/pivots.py
# Identifie P ≪ S pour réduire la frontière
pivots = pivot_selector.select_pivots(frontier) # P petit, impact fortDans l'article : Bornes B et B' pour évaluer la distance.
Dans notre moteur : Bornes B (seuil) et B' (atteinte) pour évaluer la confiance.
# Module : 01_core_engine/agent/bounded_reasoning.py
# Évalue B' vs B sans explorer toutes les options
if B' >= B:
decision = "accepted" # Borne satisfaite
else:
decision = "partial" or "refused" # Borne insuffisanteDans l'article : Évite de trier O(n log n) éléments.
Dans notre moteur : L'agent ne trie pas tous les nœuds, il décide dès qu'une borne est satisfaite.
# Module : 01_core_engine/agent/autonomous_agent.py
# Principe : "Do not sort everything. Decide when enough structure is revealed."
agent = AutonomousAgent(graph)
result = agent.decide(goal="G") # Décide sans trier tous les nœuds| Aspect | Article (SSSP) | Notre Moteur (Raisonnement) |
|---|---|---|
| Problème | Plus court chemin | Décision structurelle |
| Objectif | Distance minimale | Décision optimale |
| Frontière | Candidats de chemin | Candidats de décision |
| Pivots | Nœuds de réduction | Signaux structurants |
| Bornes | Distances | Confiance/Convergence |
- Métrique : Distance → Confiance/Convergence
- Objectif : Chemin minimal → Décision optimale
- Évaluation : Distance réelle → Convergence de signaux
- Décision : Chemin unique → Décision (accepted/partial/refused)
Si vous utilisez ce code dans une publication, veuillez citer :
@article{duan2025breaking,
title={Breaking the Sorting Barrier for Directed Single-Source Shortest Paths},
author={Duan, Ran and Mao, Jiayi and Mao, Xiao and Shu, Xinkai and Yin, Longhui},
journal={arXiv preprint arXiv:2504.17033},
year={2025},
url={https://arxiv.org/abs/2504.17033}
}- Article original : arXiv:2504.17033v2
- PDF : View PDF
- DOI : https://doi.org/10.48550/arXiv.2504.17033
L'article démontre théoriquement qu'on peut éviter le tri global. Notre implémentation montre comment appliquer ce principe au raisonnement structurel pour créer des agents autonomes efficaces et explicables.