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

Mathématiques Discussion :

Procéder toutes les permutations possibles d'une liste


Sujet :

Mathématiques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut Procéder toutes les permutations possibles d'une liste
    Bonjour, voila mon problème, j'ai une liste de 1 à 8 éléments représentant des positions, j'aimerais -afin de déterminer le trajet le plus court- tester toutes les combinaisons possibles.
    Je pourrais faire comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dA=CalculerDistance(pos0,pos1,pos2);
    dB=CalculerDistance(pos0,pos2,pos1);
    dC=CalculerDistance(pos1,pos0,pos2);
    ...
    dX=CalculerDistance(pos2,pos1,pos0);
    Mais avec 8 éléments ça va faire beaucoup de ligne de code, comment pourrais-je coder ça simplement ?

    Merci

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour,
    le problème de recherche du plus court chemin est amplement traité dans la littérature ; pour un petit nombre d'éléments, il est même résolu.

    Voir Algorithme de Dijkstra − Wikipedia.

    Si tu ne souhaite pas utiliser cet algorithme et que tu préfères naïvement traiter tous les chemins possible, lister les points de passages dans un tableau/une liste et y accéder dynamiquement.

    Cdlt,
    -- Yankel Scialom

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 430
    Points : 93
    Points
    93
    Par défaut
    J'ai besoin de calculer tous les trajets, je ne détaillerai pas pourquoi...
    Mais je ne vois pas comment faire avec ma liste pour traiter toutes les possibilités.

  4. #4
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 143
    Points
    143
    Par défaut
    Si j'ai bien compris, ton problème correspond au voyageur de commerce qui est difficilement traitable si le nombre de sommets est grand.
    http://fr.wikipedia.org/wiki/Probl%C...ur_de_commerce
    Ici, vu que le nombre de sommets est petit, tu peux générer toutes les permutations de tes sommets. On utilise en général un algorithme récursif pour cela. Tu peux regarder par exemple:
    http://stackoverflow.com/questions/2...as-a-generator

Discussions similaires

  1. Toutes les combinaisons possibles de deux listes
    Par vasilpapa dans le forum Haskell
    Réponses: 2
    Dernier message: 11/04/2014, 06h17
  2. Réponses: 7
    Dernier message: 23/01/2013, 10h54
  3. trouver tous les arrangement possible d'une liste
    Par ju_bicycle dans le forum Général Python
    Réponses: 2
    Dernier message: 31/01/2012, 14h52
  4. Réponses: 1
    Dernier message: 30/11/2011, 10h07
  5. Générer toutes les substitutions possibles entre deux listes
    Par AngryArtz dans le forum Général Java
    Réponses: 6
    Dernier message: 06/11/2011, 22h13

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