2012-09-14 2 views
1

Je projette un algorithme pour trouver un chemin dans un réseau de transport public, mais je ne sais pas comment le rendre simple, je pense à cela depuis hier. Mon objectif est de trouver un chemin qui minimise les changements de bus, et un autre chemin qui ne dérange pas les changements de bus, mais ils doivent être courts dans le temps). Ce second algorithme est un algorithme de k-plus court chemin (probablement k = 3 ou 4), pour lequel je ne connais aucune implémentation efficace. Je voudrais implémenter les deux algorithmes en C# et l'appliquer à un vrai réseau de transport public. Un conseil? Excusez-moi pour mon très mauvais anglais, mais je suis d'Italie :)Algorithme de routage dans un réseau de transport public

Répondre

3

Un algorithme de pathfinding très commun est le A* search algorithm.

De nombreuses implémentations dans C# peuvent être trouvées, par exemple ici sur Codeguru ou ici sur msdn.

Vous pouvez trouver d'autres idées sur this stackoverflow thread. Peut-être que vous devriez utiliser cela et modifier les changements de bus ou quelque chose comme ça.

+0

Comme haut, je savais déjà un algorithme *, mais comment puis-je le modifier pour donner un poids aux changements de bus? – litiales

+0

Il devrait être possible en définissant l'heuristique d'être plus élevé lors du changement de bus, qu'en pensez-vous? – Bgi

+1

@litiales Définir chaque chemin avec deux segments: 1) longueur du chemin (distance ou temps), et 2) un chemin de connecteur qui représente la transition sur ce chemin où aucun transfert n'aurait un poids de 0, mais un transfert aurait un poids . Donc, le poids total du trajet serait la somme des deux. – Tergiver

Questions connexes