par maturin » 09 Jan 2007, 13:41
bon je tente une dernière explication, pour moi ca me semble marcher mais bon j'ai ptetre encore raté un truc.
Je note (x,a,o,d) le point Sx d'antécédant Sa à distance d du point So
Et je note E(o,d) l'ensemble des points à distance d du point So
1 - CONSTRUCTION DE E(o,n)
tu as E(o,0) qui est composé de l'unique point (0,null,o,0)
pour tous les points (i,j,o,n) de E(o,n) je regarde toutes les images du sommet Si (c'est à dire tous les Sk tels que Aik=1 avec ta notation)
si il existe déjà un point de E(o,0) U ... U E(o,n) tel que x=k je ne le garde pas
sinon j'ajoute (k,i,o,n+1) dans E(o,n+1)
Quand tu trouves E(o,n+1) vide tu arrêtes cela arrivera pour un rang noté N(o)
2 - GENERALISATION A L'ENSEMBLE DES SOMMETS
Si tu regardes F(o)=E(o,0) U E(o,1) U ... U E(o,N(o))
Ca te donne l'ensemble des sommets (en regardant les coordonnées x) qui sont atteignables depuis So, avec leur distances à ce point So.
si il existe un sommet Si qui n'appartient pas à F(o) (c'est à dire qu'aucun point de F(o) n'a pour coordonnées x=i)
tu recommences l'algorithme à partir de ce point pour construire F(k)
Quand tu auras passé cet algorithme suffisamment de fois tous tes sommets appartiendront à au moins un des ensembles F(k).
3 - CHEMIN LE PLUS LONG
Il te suffira de ne retenir que le F(k) qui as le N(k) le plus grand.
Et pour trouver ton chemin tu prends un point de E(k,N(k))
Tu recherches son antécédant dans E(k,N(k)-1)
etc...
Quand tu arrives à E(k,0) tu arrêtes (c'est ton point So)
Ca te donne ton chemin en sens inverse.