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 :

Quel type d'algorithme pour couvrir un maximum de nœuds dans un graphe sans dépasser un budget donné ?


Sujet :

Algorithmes et structures de données

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut Quel type d'algorithme pour couvrir un maximum de nœuds dans un graphe sans dépasser un budget donné ?
    Bonjour à tous,

    Je viens vers vous pour poser une question pour m'aider à orienter mes recherches.

    Je voudrais savoir s'il existe des algorithmes pour trouver dans un graphe de noeuds priorisés un chemin permettant de couvrir le plus de noeuds prioritaires sans dépaser un "coût" et cela à partir d'un point de départ. Attention à la différence des algorithmes que je "connais" déjà comme dijkstra, Voyageur de Commerce..." j'ai quelques différences/contraintes:
    • Pas de point de fin spécifique. Je n'ai qu'un point de départ, peut importe ou le chemin se fini? Je dois juste m'arrêter quand le "coût" est atteint.
    • Je ne cherche pas à passer par tous les noeuds


    Pour donner du contexte, mes noeuds sont des coordonnées géographiques correspondant à des "actions" à faire avec un "poids" correspondant à l'urgence de traitement. Entre chaque nœud, j'ai un "coût" pour m'y rendre (en KM ou en temps) et j'ai besoin de construire un chemin qui me dit : en Xminutes ou Xkm à partir du point Z je peux faire ce chemin qui passe par les points les plus prioritaires et donc traiter ces X actions.
    Pour information il n'est pas question de trouver la meilleure solution mais seulement une "optimale".

    Merci bcp pour vos retours.
    Julien

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    Je prendrais Monte Carlo :
    http://www.developpez.net/forums/d15...s-d-ouverture/

  3. #3
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Quel type d'algorithme
    Bonjour,

    La comparaison des chemins exige la définition de leur efficacité:
    Citation Envoyé par juju0169 Voir le message
    ... mes noeuds sont des coordonnées géographiques correspondant à des "actions" à faire avec un "poids" correspondant à l'urgence de traitement. Entre chaque nœud, j'ai un "coût" pour m'y rendre (en KM ou en temps) et j'ai besoin de construire un chemin qui me dit : en Xminutes ou Xkm à partir du point Z je peux faire ce chemin qui passe par les points les plus prioritaires et donc traiter ces X actions ...
    Quelle fonction mesurera le gain obtenu ? On peut envisager, dans le cas le plus simple, une expression linéaire comme la différence entre le poids des actions accomplies et le coût de la distance parcourue: G = Somme(Pk) - K*Somme(dij) .
    Il faut alors déterminer la constante (K), en évaluant le poids (Pm) d'un nouveau site visité qui, compte tenu de la distance supplémentaire parcourue (DeltaD), conduirait à un gain nul, soit: Pm - K*DeltaD = 0 (1).

    Si l'on accorde un rôle déterminant aux temps d'accès aux sites les plus importants, on peut ne pas compter la longueur du trajet retour, ou d'une manière plus systématique évaluer le coût de chaque étape proportionnellement au poids des sites non encore visités, par une expression du type:
    Cij = dij*Somme(Pk') .

    L'itinéraire peut se construire progressivement, à partir de la position initiale, en ajoutant successivement les divers sites selon l'ordre décroissant de leur poids, et en recherchant à chaque étape la position correspondant au meilleur gain (ou au moindre coût); il aurait pour configuration triangulaire initiale: P0(départ) --- P1 --- P2 .

    (1) Autre amorce possible de l'évaluation, par:
    - le calcul du poids total de l'ensemble P = Sk=1N(Pk) , et
    - l'évaluation du périmètre de la boucle fermée L = 2 * Dmax (double de la distance maximale entre deux points) ou L = (PiPjPk)max (périmètre maximal d'un triangle, si les points ne sont pas trop nombreux).
    L'ordre de grandeur du facteur (K) est donné par le quotient (P/L).

  4. #4
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut Combien de sites ?
    Le choix d'une méthode dépend de façon essentielle de la taille du graphe. Si tu as un petit nombre de sites urgents, une méthode bête peut te donner une bonne solution. Combien en as-tu, en ordre de grandeur ?

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    cela me fait penser a la recherche de solution pour une partie d'echec ou de dame dans se cas là on utilise
    un algo de type alpha-beta
    cela permet d'explorer toutes les solution possible en faisant l'impasse selon certaine condition

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Quel type d'algorithme
    Avoir à explorer toutes les solutions possibles n'est peut-être pas souhaitable compte tenu de leur grand nombre (~(N-1)!), d'autant que l'auteur du sujet déclare se satisfaire d'une solution raisonnablement performante:
    ... il n'est pas question de trouver la meilleure solution mais seulement une "optimale" ...
    Un trajet intéressant apparaît rapidement par allongement progressif de la boucle, si l'on donne la priorité aux sites les plus urgents, de poids maximal. L'algorithme s'apparente dans son principe à celui du voyageur de commerce; il n'en diffère que par la comparaison des boucles construites sur un ensemble donné de sommets, dans laquelle interviennent les poids des sites visités, en plus des distances parcourues.

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    Avoir à explorer toutes les solutions possibles n'est peut-être souhaitable compte tenu de leur grand nombre (~(N-1)!), d'autant que l'auteur du sujet déclare se satisfaire d'une solution raisonnablement performante:

    Un trajet intéressant apparaît rapidement par allongement progressif de la boucle, si l'on donne la priorité aux sites les plus urgents, de poids maximal. L'algorithme s'apparente dans son principe à celui du voyageur de commerce; il n'en diffère que par la comparaison des boucles construites sur un ensemble donné de sommets, dans laquelle interviennent les poids des sites visités, en plus des distances parcourues.
    Alors dans l'ordre, merci à toutes les réponses et désolé pour le délai (je viens de me rendre compte que l'email associé à mon compte n'est plus le bon, ... bref).
    Alors effectivement, je n'ai pas du tout besoin de la solution optimale (sachant, que je n'avais pour voulu vous noyer de détail, mais de toute façon les "priorités" sont basées sur des éléments incertains/hypothèses, donc cela n'aurait aucun "sens" je pense de choisir l'optimal).

    Pour le reste des réponses, ce qui me pose problème c'est comment appliquer les algos type voyageur sachant que je ne veux (ou plutôt ne peux pas) pas définir un point de fin. C'est une "tournée" et si je choisi un point de fin, j'ai peur de fausser les résultats. Ais-je raison ?

    Du coup, je suis en train de regarder les autres algorithmes que je ne connaissais pas. L'idée de définir la formule de coût me semble être une bonne piste avec peut être juste derrière un algo de proche en proche. Est-ce que l'on peut espérer (si on suppose que les priorités sont bonnes que le chemin "naturellement" tende vers un chemin maximisant les gains ?

    Encore merci pour votre temps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel type de referencement pour mon site ?
    Par jiojioforever dans le forum Référencement
    Réponses: 4
    Dernier message: 28/11/2006, 12h24
  2. quel type de conception pour un serveur?
    Par hisoka dans le forum Développement
    Réponses: 2
    Dernier message: 17/11/2006, 19h47
  3. [MySQL] quel type de champ pour un tableau serializé
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 14h37
  4. quel type de serveur pour mon site marchand
    Par yoyoviper dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 09/11/2006, 08h07
  5. [SQL Server] Quel type de champ pour du commentaire
    Par brmartin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2006, 12h51

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