FR 2818414 A1 20020621 FR 0016656 A 20001220 L'invention concerne un procédé de détermination d'un chemin de coût minimal entre deux points d'un réseau de transport. Ce type de procédé est notamment utilisé par des systèmes d'aide à la navigation routière, destinés à déterminer le chemin routier de coût le plus faible, entre un point d'arrivée et un point de départ, à un instant donné, afin d'assister un conducteur de véhicule automobile. Dans ce cas, le coût peut être un coût en temps, en distance, en argent, en confort routier ou en tout autre paramètre. Il existe principalement deux types d'algorithmes permettant de déterminer le chemin routier de coût minimal entre un point de départ et un point d'arrivée. Dans les deux cas, le réseau routier est représenté par une pluralité de noeuds (graphes), reliés deux à deux par des segments correspondant à des portions d'axe routier (rue, route, autoroute ou autre). Un coût est attribué à chaque segment. Le premier algorithme consiste à développer un graphe de chemins, à partir du point de départ et jusqu'au point d'arrivée, sans connaître a priori la position du point d'arrivée. Le graphe se développe de façon concentrique, autour du point de départ, et a donc une forme globalement circulaire. Au cours du développement du graphe, on détermine concomitamment les coûts respectifs des différents chemins et on sélectionne le chemin optimal, de coût minimal, reliant le point de départ et le point d'arrivée. Avec le second type d'algorithme, qualifié de"heuristique", on fixe le point d'arrivée et on développe un graphe de chemins, en forme de goutte, à partir du point de départ et jusqu'au point d'arrivée en tenant compte de la distance. Avec le premier algorithme de calcul, le graphe s'étend sur une surface circulaire, centrée autour du point de départ et de rayon R égal à la distance entre le point de départ et le point d'arrivée. La surface analysée est donc très importante. Il en résulte que le temps de calcul est très élevé. Avec le second algorithme de calcul, la surface analysée est fortement réduite, du fait de la forme du graphe. Cependant, le temps de calcul par noeud est beaucoup plus important, de sorte que le temps global de calcul est aussi élevé. La présente invention propose de pallier ces inconvénients, autrement dit de réduire le temps de calcul d'un chemin entre deux points, à travers un réseau de transport. A cet effet, l'invention concerne un procédé pour déterminer le chemin de coût minimal entre deux points, à travers un réseau de transport comportant une pluralité de noeuds reliés deux à deux par des segments, dans lequel - on attribue un coût à chaque segment du réseau, - on développe un graphe de chemins, sensiblement à partir de l'un au moins des deux points, et - on détermine le chemin de coût minimal reliant les deux points, procédé caractérisé par le fait que - on développe deux graphes de chemins, sensiblement à partir des deux points, respectivement, - on interrompt le développement des deux graphes lorsqu'ils comprennent au moins un premier noeud commun d'interférence, - on détermine les deux chemins de coût minimal, appartenant respectivement aux deux graphes, - et on relie les deux chemins de coût minimal afin d'obtenir le chemin de coût minimal entre les deux points. Le coût peut être un coût en temps, en distance, en argent, en confort routier, ou autre. L'invention consiste donc à développer deux graphes, à partir des deux points respectivement, jusqu'à ce que ces deux graphes se rencontrent, alors que, dans l'art antérieur, on développait un seul graphe à partir de l'un des deux points, jusqu'à ce que ce graphe atteigne l'autre point. On réduit ainsi considérablement la surface analysée et par conséquent le nombre de noeuds, sans augmenter le temps de calcul par noeud. La solution de l'invention, qui pourrait paraître simple a posteriori, ne l'était pas pour l'homme du métier qui cherchait à réduire le temps de calcul. En effet, il n'était pas évident a priori de réduire le temps de calcul en augmentant le nombre de graphes développés. Interrompant le développement des graphes, dès lors qu'ils comprennent un premier noeud d'interférence, on peut ainsi diviser la surface analysée sensiblement par deux. Avantageusement, dans le cas où l'un au moins des points est sensiblement situé à l'emplacement d'un noeud, on développe le graphe correspondant à partir dudit noeud. Avantageusement encore, pour l'un au moins des deux points, on recherche aux moins deux noeuds voisins dudit point, on attribue un coût de base non nul à chacun de ces deux noeuds et on développe un unique graphe à partir de ces deux noeuds. Dans ce cas, et de préférence, les deux noeuds formant un segment sur lequel le point est sensiblement situé, on détermine le coût de base de chaque noeud, par proportionnalité, à partir du coût du segment entre ces deux noeuds. Si un noeud est inaccessible, par exemple à cause d'un sens interdit, il n'est pas pris en compte. Ainsi, dans le cas où le point n'est pas situé à l'emplacement d'un noeud du réseau, on développe le graphe à partir des noeuds situés à proximité du point, en attribuant à ces noeuds un coût de base non nul. Cela revient finalement à développer virtuellement le graphe à partir du point considéré. Dans un mode de réalisation particulier, - on classe les segments suivant une pluralité de niveaux de réseau, - au cours du développement de l'un au moins des deux graphes, on calcule le nombre de segments du graphe appartenant au niveau mmf le plus bas, et - à partir d'un seuil prédéfini de nombre de segments de niveau mmf, on développe le graphe en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau mmf. Ainsi, dès lors que le graphe contient un nombre de segments de niveau mmf supérieur au seuil, on passe du niveau mmf au niveau suivant m, nf+ et on poursuit le développement du graphe en ne tenant compte que des segments de niveau supérieur ou égal au niveau m, nf. On réduit ainsi considérablement le nombre de calculs et, par conséquent, le temps de calcul. Dans ce cas, et de préférence, - au cours du développement des deux graphes, on calcule le nombre de segments de chaque graphe appartenant au niveau mmf le plus bas et - lorsque le nombre de segments de niveau m, nf, pour les deux graphes, a atteint ledit seuil, on poursuit le développement des deux graphes en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau m, nf. Ainsi, on ne passe du niveau m, nf au niveau nimfn que lorsque les deux graphes contiennent un nombre de segments de niveau mmf supérieur au seuil. Si le nombre de segments de niveau mmf de l'un des deux graphes n'atteint jamais le seuil, on prend en compte tous les segments de niveau supérieur ou égal à m, pour le développement des deux graphes. De préférence encore, on démarre le développement dudit graphe, en tenant compte de tous les segments appartenant à tous les niveaux de réseau. Avantageusement, - on recherche un groupe de segments successifs, d'un niveau donné m, comprenant exclusivement des noeuds intermédiaires n'appartenant à aucun segment de niveau au moins égal à m autre que ceux du groupe de segments successifs de niveau m considéré, et - on substitue le groupe de segments successifs par un unique segment de niveau m. Par définition, un noeud"intermédiaire"est un noeud compris entre les deux noeuds d'extrémité d'une succession de segments adjacents. On crée ainsi un réseau virtuel comprenant un nombre de noeuds fortement réduit. On peut développer chaque graphe de manière globalement concentrique, par exemple en utilisant un algorithme à buckets. Dans la mise en oeuvre préférée du procédé de l'invention, ayant trouvé ledit premier noeud commun d'interférence Pi, on recherche le noeud d'interférence optimal P, o parmi les noeuds déjà analysés pour déterminer les deux chemins de coût minimal et contenant le noeud d'interférence optimal PI C. L'invention concerne également un serveur d'aide à la navigation routière pour la mise en oeuvre du procédé, comprenant une interface de connexion à un réseau de communication, un bloc de réception de requêtes de terminaux clients, un bloc de réception de données de réseau routier, un bloc de classement de segments routiers, un bloc de création d'un réseau routier virtuel, un bloc d'étiquetage de segments routiers, un module de calcul et un bloc d'émission. L'invention sera mieux comprise à l'aide de la description suivante du procédé pour déterminer le chemin de coût minimal entre au moins deux points, à travers un réseau de transport, selon un mode de réalisation particulier de l'invention, en référence au dessin annexé sur lequel : - la figure 1 représente un schéma d'un terminal client relié à un serveur d'aide à la navigation routière, à travers l'Internet ; - la figure 2 représente un schéma bloc fonctionnel du serveur d'aide à la navigation de la figure 1 ; - la figure 3 représente une vue partielle d'un réseau routier ; - la figures 4 et 5 représentent respectivement un tableau de parents et un tableau de buckets, après le développement d'un graphe à travers le réseau routier de la figure 3. Le procédé de l'invention permet de déterminer le chemin de coût minimal, ici en temps, entre au moins deux points, à travers un réseau de transport routier. Dans l'exemple particulier de la description, ce procédé est mis en oeuvre par un serveur 1 d'aide à la navigation routière, connecté à un réseau de communication 3, ici l'Internet, et destiné à indiquer à des terminaux clients, sur requête de ces derniers, le chemin de coût minimal pour relier un point de départ et un point d'arrivée à travers le réseau de transport routier. Les terminaux clients comprennent des téléphones cellulaires pouvant se connecter à l'Internet 3, par connexion téléphonique à un fournisseur d'accès 5, à travers un réseau téléphonique cellulaire 4, et communiquer à travers l'Internet 3. Le serveur 1 comprend une interface 10 de connexion à l'Internet 3, un bloc 11 de réception de requêtes de terminaux clients, un bloc 12 de réception de données relatives au réseau routier, un bloc 13 de classement de segments routiers, un bloc 14 de création d'un réseau routier virtuel, un bloc 15 d'étiquetage de segments routiers, un module de calcul 16 et un bloc d'émission 17. Le bloc de réception Il est relié, en entrée, à l'interface de connexion Internet 10 et, en sortie, au module de calcul 16. Le bloc 11 est destiné à recevoir des requêtes de détermination d'un chemin routier de coût minimal, entre un point de départ et un point d'arrivée, émises par des terminaux clients. Chaque requête contient une indication de localisation du point de départ et une indication de localisation du point d'arrivée. Le bloc de réception 12 est relié, en entrée, à l'interface de connexion Internet 10 et, en sortie, au bloc d'étiquetage 15 et au bloc de classement 13. Ce bloc 12 est destiné à acquérir, à travers l'Internet 3, auprès de serveurs fournisseurs, non représentés, des données relatives au réseau routier, comprenant notamment des données de cartographie vectorielle et des informations concernant le trafic routier, régulièrement mises à jour. La carte du réseau routier comprend une pluralité de noeuds, reliés deux à deux par des segments correspondant à des portions d'axes routiers. Ces axes routiers comportent des rues, des routes et des autoroutes. On remarquera ici que l'invention s'applique aussi à des réseaux de transport public, par exemple par rail, comme un réseau de métro, par mer, comme un réseau de ferry. Le bloc de classement 13, relié au bloc de création 14, est destiné à classer les segments routiers ici suivant trois niveaux, d'indice un, deux et trois, correspondant respectivement aux rues, aux routes et aux autoroutes. L'indice d'un niveau est fonction de la taille des axes routiers de ce niveau. En l'espèce, plus le niveau est élevé, plus la taille des axes routiers de ce niveau est importante. Le bloc de création 14, relié au bloc de calcul 16, est destiné à créer un réseau routier virtuel, comportant ici un nombre réduit de segments de niveau 3. Pour créer ce réseau virtuel, le bloc 14 recherche dans le réseau routier des groupes de segments successifs de niveau trois tels que chaque groupe comprend exclusivement des noeuds intermédiaires n'appartenant à aucun segment de niveau trois autre que ceux du groupe de segments successifs de niveau trois considéré. Par noeud"intermédiaire", on entend signifier qu'il s'agit d'un noeud compris entre les deux noeuds d'extrémité d'une succession de segments adjacents. Puis le bloc 14 substitue chaque groupe de segments successifs de niveau trois trouvé par un unique segment virtuel de niveau trois, reliant les deux noeuds d'extrémité de la succession de segments du groupe considéré. Le bloc d'étiquetage 15, relié aux blocs 12,14 et 16, est destiné à attribuer un coût à chaque segment du réseau routier virtuel et à mettre à jour régulièrement ce coût, à l'aide des informations de trafic routier reçues par le bloc 12. Le module de calcul 16 comprend un bloc 160 de développement de graphe, un bloc 161 de détection d'un changement de niveau de segments et un bloc 162 de détermination du chemin de coût minimal. Le bloc de développement 160 est destiné, sur requête d'un terminal client, à développer deux graphes de chemin routier, à partir du point de départ et du point d'arrivée respectivement, compte tenu de l'état du trafic routier, en utilisant ici un algorithme à buckets. L'algorithme à buckets est un algorithme de calcul de graphes. Le lecteur pourra se reporter à l'ouvrage"Algorithmes de graphes"de Christian PRINS, éditions Eyrolles, deuxième tirage 1997, afin d'obtenir des informations complémentaires concernant cet algorithme. Afin d'expliciter succinctement l'algorithme à buckets, on va maintenant décrire, à titre d'exemple, le développement d'un graphe par le module de calcul 16, à partir d'un noeud Po et jusqu'à un noeud Pz, à travers le réseau routier, à l'aide de l'algorithme à buckets, en référence aux figures 3 à 5. Le réseau routier contient une pluralité de noeuds Pn, avec n variant de 0 à N, reliés deux à deux par des segments. Chaque segment est associé à un coût. Sur la figure 3, on a représenté partiellement le réseau routier. Le coût de chaque segment entre deux noeuds est indiqué entre parenthèses. Pour développer le graphe, le bloc de développement 160 utilise deux tableaux, respectivement appelés"tableau des parents"et"tableau des buckets", respectivement représentés sur les figures 4 et 5. Le tableau des parents comprend - une première colonne de noeuds, répertoriant tous les noeuds du réseau, - une deuxième colonne de noeuds parents, destinée à contenir, pour chaque noeud du réseau, un noeud parent associé à ce noeud, - une troisième colonne de coûts, destinée à contenir, pour chaque noeud du réseau, le coût de ce noeud, et - une quatrième colonne destinée à contenir, pour chaque noeud du réseau, un indice de sélection, appelé"flag", indiquant si ce noeud a ou n'a pas déjà été sélectionné pour faire partie du graphe, selon que le flag vaut un ou zéro. Par définition, un noeud"parent"Pn'd'un noeud Pn est un noeud relié au noeud Pn par un seul segment et situé en amont du noeud Pn le long d'un chemin du graphe. Le noeud Pn est en fait un noeud"descendant"vis-à-vis du noeud Pn'. On notera que le noeud parent Pn'peut avoir plusieurs noeuds descendants appartenant respectivement à plusieurs chemins du graphe. Le tableau des buckets est destiné à contenir la liste des noeuds du graphe, c'est-à-dire les noeuds sélectionnés pour faire partie du graphe, et classés dans l'ordre croissant en coût, ainsi que le coût associé à chacun de ces noeuds. Par définition, le coût d'un noeud, pour un chemin donné, correspond au coût du chemin entre ce noeud et le noeud d'origine du graphe, qui est égal à la somme des coûts des segments formant ce chemin. Le développement du graphe du noeud d'origine Po jusqu'au noeud Pz s'effectue suivant les étapes décrites ci-après. Dans le tableau des parents, la colonne des noeuds parents et la colonne des coûts sont initialement vides et tous les flags sont initialement mis à zéro. Le tableau des buckets est initialement vide. Par souci de clarté, le tableau des parents ne contient que les noeuds Pô,..., Pg, Pz. nécessaires à la compréhension de l'exposé ci-dessous. D'emblée on notera que le fait de sélectionner un noeud du réseau consiste à introduire ce noeud dans le graphe. Etape initiale On sélectionne le noeud d'origine Po et on classe ce noeud Po, avec un coût associé initial, en tête de liste, dans le tableau des buckets. Par ailleurs, dans le tableau des parents, on indique le coût initial du noeud Po et on met le flag du noeud Po à un. Le noeud Po n'est associé à aucun point parent. Etapes de développement du graphe On analyse le premier noeud de la liste du tableau des buckets, à savoir Po. Pour cela, on recherche les noeuds adjacents au noeud Po. Par définition, les noeuds"adjacents"à un noeud Pn sont les noeuds du réseau reliés au noeud Pn par un unique segment (il est rare qu'il y en ait plusieurs). On détermine ainsi que les noeuds P4, P2, P7 et Ps sont adjacents au noeud Po, on sélectionne ces noeuds adjacents et on les classe dans le tableau des buckets, avec leurs coûts respectifs associés, dans l'ordre croissant en coût. Dans le tableau des parents, pour chaque noeud sélectionné P4, P2, P7 et P5, on met le flag de ce noeud à un, on associe à ce noeud le noeud parent Po et on indique le coût de ce noeud. On analyse ensuite, l'un après l'autre, dans leur ordre de classement, les noeuds suivants de la liste du tableau des buckets. Au fur et à mesure de l'analyse des noeuds successifs de la liste du tableau des buckets, on développe le graphe, en enrichissant le tableau des buckets, jusqu'à ce que le noeud Pz soit sélectionné, en d'autres termes jusqu'à ce que le graphe atteigne le noeud Pz, comme explicité ci-après. Pour l'analyse de chaque noeud Pn de la liste, on recherche et on détermine les noeuds adjacents à ce noeud Pn. Parmi ces noeuds adjacents, on sélectionne le ou les noeuds qui n'ont pas déjà été sélectionnés. Pour chaque noeud adjacent ayant déjà été sélectionné, on calcule le nouveau coût de ce noeud, en tenant compte du fait qu'il appartient à un autre chemin (celui passant par le noeud analysé Pn). Si le nouveau coût du noeud considéré est inférieur à son ancien coût (figurant dans le tableau des parents), on sélectionne ce noeud. Sinon, le noeud considéré n'est pas sélectionné. Après avoir analysé le point Pn, on classe le ou les noeuds sélectionnés dans le tableau des buckets, avec leurs coûts respectifs associés, dans l'ordre croissant en coût. Par ailleurs, dans le tableau des parents, pour chaque noeud sélectionné, on associe à ce noeud le noeud parent Pn (en substituant le noeud Pn à l'ancien noeud parent, dans le cas où le noeud considéré a déjà été sélectionné), on indique le coût de ce noeud (en le substituant à son ancien coût, dans le cas où le noeud considéré a déjà été sélectionné) et on met le flag de ce noeud à un. On développe ainsi un graphe de manière globalement concentrique, autour du point d'origine Po. Le graphe a donc une forme sensiblement circulaire, centré autour du point d'origine Po. Etape finale Après avoir sélectionné le noeud Pz, autrement dit lorsque le graphe a atteint le noeud Pz, on reconstitue le chemin de coût optimal, en remontant depuis le noeud Pz jusqu'au noeud Po, de noeud en noeud, à l'aide des relations de parenté entre noeuds figurant dans le tableau des parents. On détermine ainsi que le chemin de coût minimal est le chemin Pô- P ?- Pz. Le bloc de détection 161, relié au bloc de développement 160, est destiné à calculer, au fur et à mesure du développement de chaque graphe, le nombre de segments de niveau le plus bas mmf appartenant au graphe considéré, à détecter le dépassement d'un seuil de nombre de segments de niveau m, nf, et à signaler le dépassement de ce seuil par les deux graphes au bloc de développement 160, de façon à ce que celui-ci poursuive le développement des deux graphes en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau mmf. Le bloc 162 de détermination du chemin optimal (c'est-à-dire de coût minimal), relié au bloc de développement 160, est destiné à reconstituer le chemin de coût minimal, entre deux noeuds, à l'aide des relations de parenté entre noeuds figurant dans le tableau des parents. Le bloc d'émission 17, relié au module de calcul 16 et à l'interface de connexion Internet 10, est destiné à émettre un message vers chaque terminal requérant afin de lui notifier le chemin optimal entre le point de départ et le point d'arrivée. Le procédé pour déterminer le chemin routier de coût minimal entre un point de départ A et un point d'arrivée B, à travers le réseau routier, va maintenant être explicité. Les points A et B sont ici chacun situés sensiblement à l'emplacement d'un noeud du réseau routier. A l'aide des informations relatives au trafic routier, le bloc de classement 13 classe les segments du réseau routier suivant les trois niveaux de réseau (rue, route, autoroute). Le bloc 14 crée ensuite un réseau routier virtuel, comportant un nombre réduit de segments de niveau trois, comme précédemment explicité. Le bloc d'étiquetage 15 attribue un coût à chaque segment du réseau routier virtuel et actualise régulièrement ce coût, à l'aide des informations de trafic reçues. Le coût d'un segment virtuel de niveau trois, correspondant à un groupe de segments successifs du réseau routier d'origine, est égal à la somme des coûts des segments de ce groupe. Un terminal client 2 adresse au serveur 1 une requête de détermination du chemin de coût minimal entre le point de départ A et le point d'arrivée B, contenant une indication de localisation du point A et une indication de localisation du point B. Dans le serveur 1, le bloc de réception 11 reçoit la requête du terminal 2, en extrait les indications de localisation des points A et B et les fournit au module de calcul 16. Le bloc de développement 160 développe concomitamment deux graphes de chemins, respectivement à partir des deux points A et B, en déterminant les coûts respectifs des différents chemins de chaque graphe, à l'aide de l'algorithme à buckets précédemment explicité. Les points A et B étant situés sensiblement à l'emplacement d'un noeud du réseau, on assimile chaque point A, B au noeud situé à proximité, en attribuant un coût de base nul à ce noeud. Le bloc 160 démarre le développement des deux graphes en utilisant les segments des trois niveaux de réseau. Au cours du développement des deux graphes, le bloc de détection 161 calcule le nombre de segments de chaque graphe appartenant au niveau le plus bas, à savoir le niveau un. Si le nombre de segments de niveau un, pour les deux graphes, atteint un seuil prédéfini SI, le bloc 161 le détecte et le signale au bloc de développement 160. Celui-ci poursuit le développement des deux graphes, au-delà de ce seuil, en utilisant les seuls segments appartenant aux niveaux deux et trois, strictement supérieurs au niveau un, et, concomitamment, calcule le nombre de segments de chaque graphe appartenant au niveau le plus bas restant, à savoir le niveau deux. Si le nombre de segments de niveau deux, pour les deux graphes, atteint un seuil prédéfini S2, le bloc 160 le détecte et le signale au bloc de développement 161 qui poursuit le développement des deux graphes, au-delà de ce seuil S2, en ne tenant compte que des segments de niveau trois, strictement supérieurs au niveau deux. On notera que si le nombre de segments de niveau un de l'un des deux graphes n'atteint pas le seuil SI, le bloc de développement 161 développe les deux graphes en tenant compte des trois niveaux, même si le nombre de segments de niveau un de l'autre graphe atteint et dépasse le seuil Si. Dès que les deux graphes comprennent un premier noeud commun d'interférence ? autrement dit dès qu'un même noeud d'interférence PI a été sélectionné dans le développement des deux graphes, le bloc de développement 161 interrompt le développement des deux graphes. Ayant trouvé ce premier noeud commun d'interférence PI, on analyse à nouveau les tableaux de buckets pour en déduire le noeud d'interférence optima P, o correspondant aux chemins de coût minimal et qui a forcément été analysé précédemment et se trouve dans le tableau de buckets de l'un ou l'autre des points de départ et d'arrivée, ce qui va maintenant être démontré par des raisonnements par l'absurde. Soit un calcul bidirectionnel. Le calcul du départ à l'arrivée est noté CO, le calcul de l'arrivée au départ est noté C 1 On note V0 ] et VI [... ] les coûts pour atteindre chaque point, respectivement suivant le calcul CO et suivant le calcul CI. L'algorithme de calcul trouve un premier point d'intersection entre CO et CI, noté X qui est donc un point qui a été choisi par CO et par CI. Le coût total du chemin en passant par X est V [X] = VO [X] + VI [X]. Nous allons démontrer que s'il existe un point Y tel que V [Y] Soit BO et B1 les points parents de Y dans les deux calculs. Considérons que Y n'a été analysé, ni par CO, ni par CI. Y n'a pas été analysé par CO, donc BO n'a pas été choisi par CO, donc VO [BO] > = VO [X] Y n'a pas été analysé par CI, donc BI n'a pas été choisi par CI, donc V1 [BI] > = VI [X] Comme V [Y] = VO [Y] + V1 [Y] et VO [Y] > VO [BO], V1 [Y] > YI[BI] On a V [Y] > VO [BO] + VI [Bl] Donc V [Y] > VO [X] + VI [X] V [Y] > V [X] On en déduit donc que si V [Y] X étant trouvé, il suffit donc de parcourir le contenu des deux tableaux de buckets pour trouver d'éventuels points dont le chemin est de meilleur coût que X. Considérons maintenant que Y est un point de jonction de CO et CI meilleur que X. Si BO n'a pas déjà été choisi par CO, alors VO [BO] > VO[X] Pour que le trajet par Y soit quand même de meilleur coût, on doit avoir VI [BO] = VI [Y] + coût de [BO, Y] > VI [X] Il en résulte que BO a déjà été choisi par Cl. Donc Y n'est pas le point de rencontre de CO et CI. Ce qui est absurde par définition. On raisonne de même pour B 1. Il en résulte que BO et BI avaient déjà été choisis au moment où on trouve X. Le bloc 162 reconstitue ensuite le chemin optimal entre le point A et le noeud d'interférence P, o et le chemin optimal entre le point B et le noeud d'interférence P, o, à l'aide des relations de parenté entre noeuds figurant dans les tableaux des parents, et associe, relie ces deux chemins optimaux afin d'obtenir le chemin de coût minimal entre les deux points A et B. Si l'un au moins des deux points A, B, par exemple le point A, n'est pas situé sensiblement à l'emplacement d'un noeud du réseau, le bloc de développement 160 recherche au moins deux noeuds PA, O, PA, 1,..., formant un segment et entre lesquels le point A est sensiblement situé. Le bloc 160 attribue ensuite à chacun des noeuds PAO, PA l, formant un segment, un coût de base non nul, déterminé par proportionnalité à partir du coût du segment considéré, comme explicité ci-après. Soit PA,n et PA, n+i, deux noeuds voisins du point A, formant un segment routier sur lequel le point A est sensiblement situé. Le coût de base C (PAn) cCP A, n+l) de chaque noeud PA. n, PA, n+) est calculé à l'aide des relations suivantes : où c (PA, n, PA, n+l), d (PnPn+l), d (A, PA, n) et d (A, ? A. n+)) représentent respectivement le coût du segment reliant PA,n et PA,n+1, la distance entre PA, n et PA, n+l, la distance entre PA, n et A et la distance entre Pua, null et A. Pour développer le graphe à partir du point A, on procède de la façon suivante. Lors de l'étape initiale, après avoir déterminé les noeuds PA, n voisins du e point A, on détermine le coût de base de chacun de ces noeuds PA. n. on les sélectionne et on les classe dans le tableau des buckets par ordre croissant en coût. Dans le tableau des parents, on associe à chaque noeud PA,n le point parent A, on indique le coût de ce noeud PA, n et on met son flag à un. Lors des étapes suivantes de développement du graphe, on analyse successivement les noeuds de la liste du tableau des buckets, dans leur ordre de classement, tout en sélectionnant au fur et à mesure de nouveau noeuds pour développer le graphe, comme précédemment explicité. On développe ainsi un unique graphe à partir de plusieurs noeuds de départ, auxquels on attribue un coût de base non nul. On procède de la sorte par exemple lorsque le point de départ, ou d'arrivée, est situé dans une rue, entre deux noeuds, ou sur une place, dans laquelle débouchent plusieurs rues, un noeud étant situé à chaque intersection entre la place et une rue. Après la détermination du chemin de coût minimal, le bloc d'émission 17 transmet au terminal requérant une notification indiquant le chemin de coût minimal entre les deux points A et B, à travers l'Internet 3 et le réseau cellulaire 4. Le réseau routier pourrait être subdivisé en deux niveaux ou en plus de trois niveaux. Dans la description qui précède, le serveur d'aide à la navigation crée un réseau virtuel en regroupant des segments successifs de niveau trois. D'une manière générale, dans le cas où le réseau routier est subdivisé en M niveaux, le serveur d'aide à la navigation pourrait rechercher des groupes de segments successifs d'un niveau donné m comprenant exclusivement des noeuds intermédiaires n'appartenant à aucun segment de niveau au moins égal à m (c'est-à-dire supérieur ou égal à m) autre que ceux du groupe de segments considéré, puis substituer chaque groupe de segments successifs par un unique segment de niveau m. Par ailleurs, toujours dans le cas général où le réseau routier est subdivisé en M niveaux, au cours du développement des deux graphes, le serveur d'aide à la navigation pourrait calculer le nombre de segments de chaque graphe appartenant au niveau m, nf le plus bas et après que le nombre de segments de niveau mmf, pour les deux graphes, a atteint un seuil prédéterminé, développer les deux graphes en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau mmf, le nouveau niveau inférieur pris en compte devenant le niveau m, 1. Le serveur pourrait réitérer cette opération, en incrémentant le niveau inférieur au fur et à mesure du développement des graphes. On pourrait utiliser un algorithme de calcul de graphes autre que l'algorithme à buckets. Dans ce cas, le développement des graphes pourrait s'effectuer de façon non concentrique. Au lieu d'interrompre le développement des deux graphes dès lors qu'ils comprennent un premier noeud commun d'interférence, on pourrait l'interrompre lorsque les deux graphes comprennent plusieurs points communs d'interférence et déterminer le chemin optimal entre les deux points, de départ et d'arrivée, passant par l'un de ces noeuds d'interférence. Le serveur d'aide à la navigation pourrait être agencé pour déterminer le chemin de coût minimal en distance, en argent, en confort routier ou autre. Les terminaux clients pourraient se relier au serveur d'aide à la navigation par un réseau de communication autre que le réseau global comprenant l'Internet et le réseau cellulaire. Le procédé de l'invention pourrait également être mis en oeuvre par un système autre qu'un serveur d'aide à la navigation et à un réseau de transport autre qu'un réseau routier, par exemple à un réseau ferroviaire. Revendications 1-Procédé pour déterminer le chemin de coût minimal entre deux points (A, B), à travers un réseau de transport comportant une pluralité de noeuds (Pn) reliés deux à deux par des segments, dans lequel - on attribue un coût à chaque segment du réseau, - on développe un graphe de chemins, sensiblement à partir de l'un au moins des deux points (A, B), et - on détermine le chemin de coût minimal reliant les deux points (A, B), procédé caractérisé par le fait que - on développe deux graphes de chemins, sensiblement à partir des deux points (A, B), respectivement, - on interrompt le développement des deux graphes lorsqu'ils comprennent au moins un premier noeud commun d'interférence (P,), - on détermine les deux chemins de coût minimal, appartenant respectivement aux deux graphes, - et on relie les deux chemins de coût minimal afin d'obtenir le chemin de coût minimal entre les deux points (A, B). 2-Procédé selon la revendication 1, dans lequel, dans le cas où l'un au moins des points (A, B) est sensiblement situé à l'emplacement d'un noeud, on développe le graphe correspondant à partir dudit noeud. 3-Procédé selon l'une des revendications 1 et 2, dans lequel, pour l'un au moins des deux points (A, B), on recherche aux moins deux noeuds (PA, n, PA, n+l) voisins dudit point (A), on attribue un coût de base non nul à chacun de ces deux noeuds (PA, n, PA, n+l) et on développe un unique graphe à partir de ces deux noeuds (PA, n, PA, n+l). 4-Procédé selon la revendication 3, dans lequel, les deux noeuds (PA, n, PA, n+l) formant un segment sur lequel le point (A) est sensiblement situé, on détermine le coût de base de chaque noeud (PA, n ? PA, n+i), par proportionnalité, à partir du coût du segment entre ces deux noeuds (PA, n, PA, n+ !). 5-Procédé selon l'une des revendications 1 à 4, dans lequel - on classe les segments suivant une pluralité de niveaux de réseau, - au cours du développement de l'un au moins des deux graphes, on calcule le nombre de segments du graphe appartenant au niveau m, nf le plus bas, et - à partir d'un seuil prédéfini de nombre de segments de niveau m, nf, on développe le graphe en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau minf. 6-Procédé selon la revendication 5, dans lequel - au cours du développement des deux graphes, on calcule le nombre de segments de chaque graphe appartenant au niveau m, nf le plus bas et - lorsque le nombre de segments de niveau m, nf, pour les deux graphes, a atteint ledit seuil, on poursuit le développement des deux graphes en tenant compte des seuls segments appartenant aux niveaux strictement supérieurs au niveau mmf. 7-Procédé selon l'une des revendications 5 et 6, dans lequel on démarre le développement dudit graphe, en tenant compte de tous les segments appartenant à tous les niveaux de réseau. 8-Procédé selon l'une des revendications 1 à 7, dans lequel - on recherche un groupe de segments successifs, d'un niveau donné m, comprenant exclusivement des noeuds intermédiaires n'appartenant à aucun segment de niveau au moins égal à m autre que ceux du groupe de segments successifs de niveau m considéré, et - on substitue le groupe de segments successifs par un unique segment de niveau m. 9-Procédé selon l'une des revendications 1 à 8, dans lequel on développe chaque graphe, de manière globalement concentrique. 10-Procédé selon la revendication 9, dans lequel on développe les deux graphes en utilisant un algorithme à buckets. 11-Procédé selon l'une des revendications 1 à 10, dans lequel on développe les deux graphes concomitamment. 12-Procédé selon l'une des revendications 1 à 11, dans lequel, ayant trouvé ledit premier noeud commun d'interférence (pal), on recherche le noeud d'interférence optimal (pli) parmi les noeuds déjà analysés pour déterminer les deux chemins de coût minimal et contenant le noeud d'interférence optimal (pli) 13-Serveur d'aide à la navigation routière pour la mise en oeuvre du procédé de l'une des revendications 1 à 12, comprenant une interface (10) de connexion à un réseau de communication (3), un bloc (11) de réception de requêtes de terminaux clients, un bloc (12) de réception de données de réseau routier, un bloc (13) de classement de segments routiers, un bloc (14) de création d'un réseau routier virtuel, un bloc (15) d'étiquetage de segments routiers, un module de calcul (16) et un bloc d'émission (17). 14-Serveur selon la revendication 13, dans lequel le module de calcul (16) comprend un bloc (160) de développement de graphe, un bloc (161) de détection de changement de niveau de segments et un bloc (162) de détermination de chemin de coût minimal.