Recherche du plus court chemin [Algo] - Algo - Programmation
Marsh Posté le 11-03-2003 à 18:15:42
ReplyMarsh Posté le 11-03-2003 à 18:17:20
walli a écrit : |
bon en meme temps s'il sait pas ce qu'est un algo, il peut pas avoir compris la question
Marsh Posté le 11-03-2003 à 18:18:31
the real moins moins a écrit : bon en meme temps s'il sait pas ce qu'est un algo, il peut pas avoir compris la question |
euh... c'est très gros tout de même...
Marsh Posté le 11-03-2003 à 18:18:47
J'ai un cours sur les parcours de graphes chez moi, je regarderai ce soir si je l'ai pas jeté
Marsh Posté le 11-03-2003 à 18:19:15
the real moins moins a écrit : bon en meme temps s'il sait pas ce qu'est un algo, il peut pas avoir compris la question |
Bin dans ce cas, on s'abstient de répondre, non ?
Marsh Posté le 11-03-2003 à 18:21:05
je sais pas de qui il est le multi mais en tout cas y me fait bien délirer !!!
Marsh Posté le 11-03-2003 à 18:21:55
walli a écrit : |
j'essaye de résoudre un topic
je ne vais pas me contenter de poster dans blabla, faut que je participe !
mais je vous avais bien dit que je connaissais rien en prog !
Marsh Posté le 11-03-2003 à 18:42:36
buddy lembeck a écrit : |
bon c qui le propriétaire de ce multi à la con?
Marsh Posté le 11-03-2003 à 18:44:45
DarkLord a écrit : |
tu le demandes encore?
Marsh Posté le 11-03-2003 à 18:46:56
buddy lembeck a écrit : |
Si c'est pour continuer à poster n'importe quoi tu vas finir pas ne plus pouvoir poster du tout
Marsh Posté le 11-03-2003 à 19:17:19
Burps a écrit : Salut |
tu reprends le même graphe et tu fout 1 comme poids à chaque ligne, quelque soit la distance parcourue. Et tu refais un Dijkstra.
Si tu veux distance + nb de changements en mème temps, tu donne une distance en plus comme pénalité à chaque changement, mais t'as pas fini de te battre pour la choisir, car il n'y a pas de solution unique.
edit : saloperie de clavier espiguouin + ortho
edit2 : pourquoi dans la catégorie ADA ?¿?¿?
Marsh Posté le 11-03-2003 à 19:20:43
Burps a écrit : Salut |
Je pense que tu peux facilement réutiliser Dijkstra pour résoudre ton problème, en l'arrangeant un peu. La première idée qui me vient à l'esprit serait d'affecter, au fur et à mesure que l'algorithme progresse, un surcoût aux arcs correspondants à des changements de lignes. Ainsi celà éliminerait les parcours optimales avec beaucoup changements, le réglage qualitatif se faisant au niveau du choix des surcoûts à appliquer.
peu de surcoûts : on accepte les chemins optimaux, mais avec pas mal de changements
beaucoup de surcoûts : on a un nombre de changements minimal, au risque d'avoir des trajets beaucoup plus longs
Marsh Posté le 11-03-2003 à 19:42:08
nraynaud a écrit : |
rhaa j'avais pas vu
Burps >> Y a une catégorie Algo, c'est pas pour rien hein
Marsh Posté le 11-03-2003 à 19:43:19
nraynaud a écrit : |
Parceque c'est une erreur, ca devait etre dans la catégorie Algo
Sinon, les solutions que vous me proposez me plaisent moyennement...
Marsh Posté le 11-03-2003 à 19:49:13
Burps a écrit : |
Si tu trouves mieux , tu m'emvoie un MP car je suis plutôt curieux.
Car rien qu'à la main avec ton plan de métro c'est la merde (prends gare du nord-Montparnasse par ex.).
Marsh Posté le 11-03-2003 à 20:22:17
nraynaud a écrit : |
Tout à fait ! C'est a ce que j'ai pensé en relisant le topic
Marsh Posté le 10-11-2005 à 08:27:04
--------------------------------------------------------------------------------------------------
---------------------------Fin du sujet precedent ----------------------------------------------
--------------------------------------------------------------------------------------------------
(Pardon pour les accents => clavier qwerty)
Salut,
Je profite de ce sujet deja ouvert pour poser un probleme du meme ordre:
Les sites comme Mappy utiliseraient des algorithmes de recherche base sur Dijkstra. Mais dans le cas d'une recherche a grande echelle (comme un parcours Madrid - Berlin), Dijkstra ne me parrait plus vraiment adapte, en raison de l'explosion combinatoire qui en resulte.
Connaissez vous les formes d'optimisations utilisees?
a) un systeme informatique TRES puissant?
b) une optimisation au niveau des graphes? Par exemple, creer un graphe de plus haut niveau dont chaque noeud representerait une zone plus ou moins large de la carte reelle... Les arcs liant les noeuds representeraient les autoroutes, ou le meilleurs vecteur de transport?
la premiere recherche se ferait donc sur ce graphe, puis le systeme analyserait les chemins sur la carte reelle concernant le point depart et le point d'arrivee?
c) utilisaton d'une heuristique?
d) ....?
Des idees, des liens?
Merci
Marsh Posté le 10-11-2005 à 08:31:23
L'idée d'un calcul à plusieurs niveaux me semble pas mauvaise...
Marsh Posté le 11-11-2005 à 05:09:54
0x90 a écrit : L'idée d'un calcul à plusieurs niveaux me semble pas mauvaise... |
Oui, c'est ce qui me semble le plus adequat...
En se basant sur cette orientation:
a) Soit regrouper un ensemble de noeuds en un seul,
b) soit garder le meme graphe en ne considerant que les types de routes rapides (autoroutes, voies express...) pour les trajets dont les points de depart et d'arrivé sont eloignés d'une certaine distance. Ca elaguerait toutes les petites routes. On aurait donc un meme graphe dont la densité serait variable en fonction de l'éloignement des points de départ et d'arrivée. Il faudrait donc gérer de maniere optimale le probleme d'élagage des arcs, car il n'est pas le meme partout: pres des points de depart et d'arrivee, la totalite du graphe doit etre considerée.
c) ....?
Dans le cas a), il s'agirait de construire un graphe de plus haut niveau, et dans le cas b), d'elaguer le graph existant en fonction de la nature des arcs...
EDIT: Ou encore, en se basant sur la solution "heuristique" citée plus haut, lancer un Dijkstra "normal", mais en arretant le parcours a partir d'un noeud si il s'éloigne trop de la destination (selon un critere géographique) par rapport à la solution optimale... Cela permettrait de bloquer un parcours qui va dans des direction estimàes "abérantes". L'evaluation (la fonction d'arret de la recherche a partir d'un noeud) devrait etre assez souple pour permettre de petits détours qui font gagner du temps, au final.
Curieusement, je ne trouve pas de documentation sur cette question. Les seules optimisations concernent l'algorithme de Dijkstra proprement dit, mais le gain de compléxité en temps ne semble pas suffisant (sauf erreur de ma part) pour résoudre le probleme à grande échelle.
Comme ci les solutions implementées chez Mappy, ViaMichelin ou Autoroute66 étaient des solutions "maisons" gardées secretes. Il doit pourtant éxister une "théorie" concernant ce type de problemes ^^
J'ai bien trouvé un rapport de stage d'une equipe des Mines, mais ca reste assez léger, car ils ne travaillent que sur un réseau de bus. Ce n'est donc pas le meme probleme, et une adaptation de Dijkstra suffit amplement.
Vraiment personne n'a de références/connaissances précises sur cette questions?
Marsh Posté le 15-11-2005 à 07:11:25
Y'a l'algorithme A*, pour lequel on cherche à relier deux points appartenant à un graphe.
Chaque chemin est doté d'un poids défini à partir d'heuristiques (par exemple la distance restant à parcourir jusqu'à l'arrivée).
On part du départ, on fait la liste des points accessibles, et on calcule le poids associé à chaque arc qui nous permet d'avancer.
On choisit le meilleur chemin, on supprime le point de la liste, et on ajoute à la liste les nouveaux points accessibles grâce à notre avancée.
On recommence jusqu'à ce que le point d'arrivée ait été trouvé avec le meilleur chemin (donc on continue à chercher un chemin même si on a atteint l'arrivée, jusqu'à ce que tous les poids de la liste des points restants soient supérieurs au poids associé au point d'arrivée qu'on a trouvé).
Je sais pas si c'est clair, ni si c'est ce que vous appellez l'algorithme de Dijkstra...
Marsh Posté le 15-11-2005 à 13:12:35
rnoizet a écrit : Y'a l'algorithme A*... |
Merci
Effectivement, l'A* offre une solution au probléme. Je le connaissais dans d'autres contextes (théorie des jeux), mais je n'avais pas fait le lien avec ce contexte ^^
J'ai égallement recu deux liens tres intéressants sur un autre forum, si quelqu'un en a besoin...
Citation : |
Marsh Posté le 11-03-2003 à 18:02:57
Salut
Que connaisez-vous comme algorithme de recherche de plus court chemin.
Je connais Dijkstra, qui permet de prendre le parcours le plus rapide sur un reseau de bus par exemple
Maintenant, toujours sur mon reseau de bus, je recherche un algo qui choisirait un trajet avec le MINIMUM de changements, (pour les handicapés par expl...) : qu'est-ce que vous connaissez ?
Sinon, vous connaissez d'aures algo susceptibles de m'interesser ?
Merci de votre aide
Message édité par Burps le 11-03-2003 à 19:43:53