Conversation
bcalou
left a comment
There was a problem hiding this comment.
Voir mon commentaire plus bas et attention aux fichiers commités par erreur !
| from pathfinder.types import Path | ||
|
|
||
|
|
||
| class Pathfinder(): |
There was a problem hiding this comment.
C'est bien, ça fonctionne, mais ce n'est pas tout à fait Diejkstra. Tu calcules tous les chemins possibles en parallèle, c'est un peu lourd (si on fait un print de self_paths dans le while, ça grimpe vite). J'ai comparé avec le mien sur 1M d'éxécution, c'est 45s vs 51s pour le tien. Pas une grosse différence, c'est vrai, mais elle existe !
There was a problem hiding this comment.
Je pense que c'est aussi ça qui t'empêche d'hériter plus grandement de cette classe pour AStar et SPFA, qui en réalité sont extrèmement proche du Diekstra classique. Or tu as du les ré-écrire presque en entier, surtout SPFA.
Quand Dijestra est écrit selon la méthode classique, l'override de AStar peut se limiter à quelques lignes, et celui de SPFA à deux lignes (je ne compte que le corps des fonctions). Je ne te dis pas de tout reprendre, c'est déjà bien que ça fonctionne. À toi de voir en fonction du temps que tu as ;)
There was a problem hiding this comment.
J'ai essayé de le ré-implémenter avec la méthode standard, je suis arrivé à faire marcher Dijkstra et A-Star sans trop de répétitions mais SPFA ne marchait pas. J'ai décidé de ne pas pousser la nouvelle version, j'ai juste poussé le fix pour les fichiers en trop.
|
Bon travail, code bien organisé et fonctionnel malgré le détail précédemment cité |
No description provided.