IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

isochrone, isodistance, graphe


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut isochrone, isodistance, graphe
    Bonjour à tous

    Je souhaite pouvoir calculer une zone isochrone à partir d'un réseau routier. Par exemple, je voudrais colorier les zones sur une carte situées à moins de 30 minutes en voiture d'une grande ville. Pour cela, j'imagine le réseau routier sous forme de graphe et grâce à l'algorithme de dijkstra, je récupère les sommets situés à moins de 30 minutes.

    Mon problème est donc comment, à partir du nuage de points résultants, retrouver une zone polygonale (parfois avec des trous) ?

    Je me suis penché sur les algorithmes de calcul de l'enveloppe convexe (parcours de graham ou la marche de jardis) mais la forme résultante n'est pas correcte s'il on imagine une autoroute qui part de la grande ville...

    Merci de votre aide...

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Pour ton problème, ça n'est pas le calcul d'une enveloppe convexe, mais plutôt non convexe pour un nuage de points.

    J'espère que ceci pourra t'aider :

    http://www.iag.asso.fr/articles/nuage.htm

    Tu peux aussi chercher sur le forum, il me semble qu'il y a déjà eu une discussion à ce sujet.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Bonjour,

    Effectivement, il s'agit bien d'une enveloppe non convexe. Ton lien est fort intéressant. Néanmoins, la réflexion n'aboutit pas sur un algorithme efficace. L'idée de départ est bonne et j'en prends note.

    Après quelques recherches sur le net, il ne semble pas y avoir de solution simple et performante. Surtout que la zone dessinée peut être trouée par un village difficile d'accès par le réseau routier (zone montagneuse au bord de la grande ville).

    Le problème ne manque donc pas d'intérêt.

  4. #4
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Une idée que j'ai lu dans un des posts précédents consiste à faire croître un polygone au fur et à mesure de tes calculs, ça peut peut-être être une bonne idée à creuser.

  5. #5
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Une autre piste:

    Une des difficultés du problème est de modéliser la vitesse de progression en dehors du réseau routier.

    Pour chaque arête AB de l'arbre de Dijkstra, tu peux te poser le problème suivant: sachant que je suis à l'instant t0 au point A et à l'instant t1 à B, quels points du plans puis-je atteindre à l'instant t>t0 (en utilisant une vitesse arbitraire (celle de la marche à pied?) en dehors de l'axe AB).

    Cela donne une surface convexe (pas exactement un polygône mais on peut l'approcher par un polygône) qui entoure A (et qui entoure AB si t>t1). Je peux de les définir si tu ne vois pas comment le faire.

    En calculant toutes ces surfaces puis en faisant l'union de toutes ces surfaces pour les arêtes de l'arbre des plus courts chemins, on obtient une bonne approximation de la surface recherchée.

    Faire l'union des surfaces n'est pas très facile (mais faisable!). Par contre, si tu as juste besoin de tracer la surface, c'est facile: il suffit de tracer chaque surface associée à une arête.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par minours
    Bonjour,

    Effectivement, il s'agit bien d'une enveloppe non convexe. Ton lien est fort intéressant. Néanmoins, la réflexion n'aboutit pas sur un algorithme efficace. L'idée de départ est bonne et j'en prends note.

    Après quelques recherches sur le net, il ne semble pas y avoir de solution simple et performante. Surtout que la zone dessinée peut être trouée par un village difficile d'accès par le réseau routier (zone montagneuse au bord de la grande ville).

    Le problème ne manque donc pas d'intérêt.
    si vous poursuiviez votre réflexion dans cette voie, vous constateriez que votre énoncé de départ est basé sur un a priori erroné : qu'il y ait effectivement une "surface" (convexe ou non, avec ou sans trou…) comme solution au problème !

    ce n'est pas du tout acquis…

    cas simple :
    prenez un cercle avec un certain nombre de "villes" réparties dessus…
    mettons que l'on puisse faire le tour du cercle en moins de X minutes, X étant votre critère de sélection (donc les villes du cercle sont dans la zone isochrone X)

    mettez un deuxième cercle à l'intérieur (votre zone montagneuse)
    posez comme critère que les points de ce cercle sont accessibles entre eux en temps 2X et de tout point du cercle extérieur en temps 3X…

    -> votre zone isochrone X n'a pas vraiment de surface dont la limite soit définie par des points existants…

    il faudrait sans un pré-traitement :

    entre tout couple de points (A,B) reliés directement par un temps T > à votre critère X, rajouter deux points fictifs (Xa, Xb) reliés aux points extrèmes originaux par un temps X et entre eux par un temps T-2X
    (Attention, si T == 2X, n'en rajouter qu'un seul…, si T - 2X < 0 alors cas particulier : il faut inverser Xa et Xb et les distances deviennent d(A,Xa) = T-X, d(Xa,Xb) = 2X-T, d(Xb,B) = T-X )
    et supprimer (ou marquer comme "inutilisée") l'arête A-B du graphe…

    ce pré-traitement devrait garantir que la solution ait une surface quelle qu'elle soit… (en fait une liste de surfaces…)


    NB
    si vous changez l'énoncé et dites que tous les points du cercle intérieur sont accessibles entre eux en X1 <= X, et que vous utilisez un algorithme d'extension de polygone sans le pré-traitement, ils vont être absorbés graphiquement dans le cercle extérieur alors qu'il existe une "barrière"…
    càd que la solution vous donnera sans doute 2 polygones séparés mais si vous les dessinez ils n'auront pas de frontière car ils vont se toucher et la coloriage fera apparaître l'ensemble comme une zone unique ce qui est faux…

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Merci pour tout ces conseils. Vos remarques sont intéressantes. Pour illustrer ce à quoi j'aimerais tendre :

    http://www.emif.fr/rationimpl/index.php

    La solution de constituer l'enveloppe convexe est très rapide mais la surface est trop importante. Pour ce qui est de créer un algorithme qui nécessite un union de polygone, je préfère éviter car les performances seront trop réduites. Faire croitre un polygone peut être intéressant...je vais y réfléchir.

    Pour répondre à JeitEmgie, je ne comprends pas bien la mise en scène de vos cercles. Le but ici est de reconstituer sous une forme polygonale, un nuage de points qui est le résultat de l'algorithme de dijkstra. Le lien ci-dessus pourra peut être éclaircir mon besoin...

    Merci pour toutes ces réflexions

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par minours
    Merci pour tout ces conseils. Vos remarques sont intéressantes. Pour illustrer ce à quoi j'aimerais tendre :

    http://www.emif.fr/rationimpl/index.php

    La solution de constituer l'enveloppe convexe est très rapide mais la surface est trop importante. Pour ce qui est de créer un algorithme qui nécessite un union de polygone, je préfère éviter car les performances seront trop réduites. Faire croitre un polygone peut être intéressant...je vais y réfléchir.

    Pour répondre à JeitEmgie, je ne comprends pas bien la mise en scène de vos cercles. Le but ici est de reconstituer sous une forme polygonale, un nuage de points qui est le résultat de l'algorithme de dijkstra. Le lien ci-dessus pourra peut être éclaircir mon besoin...

    Merci pour toutes ces réflexions

    l'exemple des "cercles" ne sert qu'à vous montrer que l'on peut construire des situations où la reconstitution sous forme polygone à partir des seuls données originales ne donnera pas le résultat escompté… notamment le cas des "iles" illustré par 2 cercles imbriqués… (mais il y a d'autres cas pour lesquels les données originales peuvent générer des solutions inattendues…)

    et que rajouter des points fictifs au graphe - avant de lui appliquer dijkstra - est une manière simple de garantir une solution dont la représentation graphique finale ne sera pas ambigue… et qui sera aussi plus précise…

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. [Turbo Pascal] [Windows XP] Problème avec l'unité GRAPH
    Par themofleur dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 29/03/2003, 22h43
  3. Perl & Graphes
    Par makram9999 dans le forum Modules
    Réponses: 4
    Dernier message: 24/03/2003, 11h24
  4. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49
  5. Concerne les graphes
    Par mcr dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/11/2002, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo