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 :

Algorithme de combinaison


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Algorithme de combinaison
    Bonjour tout le monde,
    J'ai cherché un peu partout dans le forum Algorithme, dans les divers tutoriaux et FAQs mais je n'ai rien trouvé qui pourrait satisfaire mon problème, c'est pourquoi j'ai crée un nouveau sujet.

    Je me prends la tête depuis plusieures heures à essayer de penser un algorithme qui me permettrait de calculer toutes les combinaisons possibles de plusieurs élements par rapport à une liste d'élément choisie, chaque combinaison.

    Un petit exemple pour que ce soit plus clair :

    Dans mes éléments j'ai des objets et des packs d'objets :
    Objet 1, Objet 3, Objet 5, Pack 1, Pack 2, Pack 3.

    Chaque pack contient plusieurs objets :
    Pack 1 contient Objet 1 et Objet 3.
    Pack 2 contient Objet 2 et Objet 3.
    Pack 3 contient Objet 4 et Objet 5.

    Ensuite j'ai une liste d'objets demandés : Objet 1, Objet 3 et Objet 5.

    Mon algorithme doit calculer toutes les combinaisons de packs et/ou d'objets pour réussir à satisfaire tous les objets demandées, dans le cas présent une combinaison possible serait : Pack 1 + Objet 5.
    Une seconde combinaison possible serait : Pack 1 + Pack 3.
    Une troisième combinaison possible serait : Objet 1 + Objet 3 + Pack 3.
    Une quatrième combinaison possible serait : Objet 1 + Objet 3 + Objet 5.
    etc...

    Par contre il est impossible de se retrouver avec Pack 1 + Pack 1 (il ne doit pas y avoir de doublon au niveau de la combinaison).

    C'est peut-être pas très très très clair, mais je ne vois pas comment détaillé davantage le problème.

    Merci d'avance !

    Synesthesia.

  2. #2
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Synesthesia
    Dans mes éléments j'ai des objets et des packs d'objets :
    Objet 1, Objet 2, Objet 3, Objet 4, Objet 5, Pack 1, Pack 2, Pack 3.

    Chaque pack contient plusieurs objets :
    Pack 1 contient Objet 1 et Objet 3.
    Pack 2 contient Objet 2 et Objet 3.
    Pack 3 contient Objet 4 et Objet 5.

    Ensuite j'ai une liste d'objets demandés : Objet 1, Objet 3 et Objet 5.

    Mon algorithme doit calculer toutes les combinaisons de packs et/ou d'objets pour réussir à satisfaire tous les objets demandées, dans le cas présent une combinaison possible serait : Pack 1 + Objet 5.
    Une seconde combinaison possible serait : Pack 1 + Pack 3.
    Une troisième combinaison possible serait : Objet 1 + Objet 3 + Pack 3.
    Une quatrième combinaison possible serait : Objet 1 + Objet 3 + Objet 5.
    etc...
    Si je comprends: tu veux toutes les "combinaisons" contenant objet1,objet3 et objet5

    C'EST CA???

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ah euh.. oui effectivement c'est ça, c'est marrant comment tu as résumé tout le problème en 1 ligne. :p

    Synesthesia.

  4. #4
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Imaginons que tu aies x objets.

    Je pars du principe que tu sais sélectionner p éléments, qu'ils soient objets ou packs.
    Pour une sélection E1,...,Ep donnée, tu initialises un vecteur d'entier n[1],..,n[x] à 0, et tu parcours tes Ei:
    - si c'est un objet tu fais n[j]=n[j]+1 si Ei est l'objet Objet(j)
    - si c'est un pack tu fais n[j]=n[j]+1 pour tous les Objets(j) de ce pack

    A la fin, tu regardes la valeur des n[]: il faut que
    - tous les n[i]<=1 pour tout i
    - les n[j]=1 lorsque tu veux que ta sélection contienne Objet(j)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai un peu de mal à saisir ta réponse Nemerle, je n'arrive pas vraiment à me l'imaginer, peux-tu donner un exemple ? avec du pseudo-code par exemple

    Je vais quand même continuer à essayer de comprendre !

    Merci d'avance.

    [Edit] En fait je pense avoir saisi, mais je ne suis pas sûr que cela me donne toutes les combinaisons possibles pour réunir les X objets dont j'ai besoin (Objet 1, Objet 3 et Objet 5 en l'occurence dans l'exemple).

    J'ai plus l'impression que ça va me sortir tous les packs/objets qui contiennent au moins un de mes objets, alors qu'en fait il faudrait que je trouve les combinaisons de packs/objets qui réunissent la totalité des objets dont j'ai besoin.

    D'ailleurs, tous les objets et packs présent contiennent au moins un objet dont j'ai besoin (j'ai dû oublier de le préciser dans mon post initial et du coup mon premier exemple semble faux..).

    J'ai corrigé l'exemple qui se trouve dans mon post initial.

    Synesthesia.

  6. #6
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Il y a x objets/packs possibles. Supposons que l'on veut que les résultats contiennent les k Objets suivants: Objet(o[1]),..,Objet(o[k]). Pour tout p<=x, pour toute sélection E1,...,Ep donnée, on note
    - Ei.obj=j tel que Ei=Objet(j) ou =0 si Ei est un pack
    - Ei.pack=j tel que Ei=Pack(j) ou =0 si Ei est un objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    pour i de 1 à x {n[i]=0}
    pour i de 1 à p {
       si Ei.obj>0{
          n[Ei.obj]=n[Ei.obj]+1
       }
       sinon{    // c'est un pack
          pour tout j de Pack(Ei.pack){
             n[j]=n[j]+1
           }
       }
    }
    booléen doublon=false, ok=true
    pour i de 1 à x {si n[i]>1 alors doublon=true}
    pour i de 1 à k {si n[o[i]]=0 alors ok=false}
    Si (doublon=false et ok=true) alors { C'EST BON!!!}
    A toi de parcourir tous les candidats E1,...,Ep, pour tout p<x ==> y a plein de sujet dans ce forum, fait une recherche.

  7. #7
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Synesthesia

    J'ai plus l'impression que ça va me sortir tous les packs/objets qui contiennent au moins un de mes objets, alors qu'en fait il faudrait que je trouve les combinaisons de packs/objets qui réunissent la totalité des objets dont j'ai besoin.

    Synesthesia.
    NON dès qu'un objet manque, la sélection en cours est écartée...

  8. #8
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    j'ai du mal à saisir ton code

    pour i de 1 à x {n[i]=0}
    pour i de 1 à p
    x correspond au nombre d'objets?
    p au nombre de packs?
    n au tableau qui dit quelle est la selection?

    pour i de 1 à k {si n[x[i]]=0 alors ok=false}
    x était un entier dans la première ligne, ici c'est un tableau?

    que veut dire k?


    Merci de répondre à mes questions

  9. #9
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par coyotte507
    j'ai du mal à saisir ton code



    x correspond au nombre d'objets?
    p au nombre de packs?
    n au tableau qui dit quelle est la selection?


    x était un entier dans la première ligne, ici c'est un tableau?

    que veut dire k?


    Merci de répondre à mes questions
    T'as raison pour les x[], j'avais fait une MAJ un peu rapide => Je viens de mettre à jour proprement mon post.

    x est le nombre d'obj+packs, p le nbre d'éléments choisi dans les obj+packs.

  10. #10
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Merci de m'avoir éclairé

  11. #11
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    you're welcome

    Est-ce resolu??????

Discussions similaires

  1. Algorithme Bayesien/Combinaison linéaire de gaussiennes
    Par buichi dans le forum Probabilités
    Réponses: 1
    Dernier message: 01/06/2011, 14h40
  2. Algorithme de combinaisons
    Par kerimos dans le forum Débuter
    Réponses: 16
    Dernier message: 04/05/2011, 20h10
  3. Algorithme de combinaison de lettres
    Par Puma24 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 26/01/2009, 18h55
  4. Algorithme de combinaison
    Par nhlx5haze dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/02/2007, 18h22
  5. Algorithme de combinaisons
    Par slimjoe dans le forum Delphi
    Réponses: 6
    Dernier message: 30/01/2007, 23h31

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