4Fermer6
GoldenCrystalLe 09/01/2005 à 00:10
Bon, si je comprends bien ton problème, tu dois déterminer pour chaque noeud si c'est une séparation ou une union...
ça fait donc 3 cas basiques:
- le noeud est relié à un segment, c'est une séparation, tu peux déterminer le sens des deux autres segment
- le noeud est relié à deux segments dirrigées vers le noeud, c'est une réunion tu peux déterminer la direction du troisième segment
- le noeud est relié à deux segments, mais dont les directions sont de même sens, tu ne peux savoir de quel type de noeud il s'agit
... bla bla ... 3e cas pas bon pour analyse linéaire.... problème pour orienter quelques cas particuliers... etc... bla bla...

Je te propose un algorithme tout bête de recherche de tous les chemins possibles, avec pour seules règles que pour chaque chaque segment ne peut être emprunté qu'une seule fois (donc pour le premier chemin, si sa direction a été déterminée, tu l'oublies wink), et que tu t'arrêtes une fois l'arrivée atteinte (évidemment grin).
La première fois tu gères cela de manière simple, en prenant par exemple toujours le premier segment lors de divisions...
Par la suite ton but principal est de découvrir de nouveaux chemins, tu peux donc emprunter des segments dont le sens a été défini précédemment
(tout en mémorisant que tu les as empruntés), mais tu dois donner la priorité à de nouveaux segments. Commencer par le début du circuit t'ammènerait à des problèmes trop complexes... Donc il faut prendre le tracé du dernier chemin calculé et choisir le dernier noeud (c à d le noeud le plus proche de la fin dans la liste linéaire des noeuds qui composent le chemin cheeky) ayant toujours une liberté (un segment attaché dont le sens n'est pas encore défini). Partant de là tu suis la même procédure que précédemment, sachant que tu ne peux pas réutiliser le tracé de l'ancien chemin qui précède le noeud utilisé comme point de départ.

Expliqué comme ça ça parraît super complexe, mais ça devrait fonctionner correctement si je ne me suis pas trompé (g pas testé vu que je viens d'inventer ça ^^)

EDIT: Au fait, j'oubliais, pour vérifier si le chemin ne revient pas en arrière il faut faire tt ça par récurrence... trivil