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 :

Combinaison avec répétition à multi-ensemble


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Combinaison avec répétition à multi-ensemble
    Bonjour à tous,

    J'ai pu voir que je n'étais pas le seul avec un problème de combinaison à répétition à résoudre. Mais aucune réponse ne m'a donné entière satisfaction. Ainsi je me permet de poster afin que l'on puisse en discuter.

    S'agissant d'un problème dans un métier très spécifique, je me permet de faire de la régression de langage en présentant le problème grâce à des sacs de billes et des billes.

    En effet, je souhaites lister toutes les combinaisons possibles me permettant de ranger toutes les billes dans les sacs.

    B = Une bille
    S = un sac de bille

    La contenance de S est de 0 à B[].size. Dans mon problème on a 3 sacs de billes et 5 billes à placer. Les sacs sont donc des ensembles pouvant contenir les billes. Le problème c'est déjà dans le calcul des solutions possible :
    int nbcombiposs = fact(n + k - 1) / (fact(k) * fact(n-1));
    Cela me donne 21 car on ne peut mettre qu'une bille dans un sac, du coup, cela ne répond pas au problème.

    Viens ensuite le problème avec des boucles itératives, mais là encore je sèche, je n'obtiens que les solutions de base...

    Voilà le résultats que je souhaiterais obtenir :
    S1:{B1,B2,B3,B4,B5},S2:{},S3:{}
    S1:{},S2:{B1,B2,B3,B4,B5},S3:{}
    S1:{},S2:{},S3:{B1,B2,B3,B4,B5}
    S1:{B1},S2:{B2,B3,B4,B5},S3:{}
    S1:{B2},S2:{B1,B3,B4,B5},S3:{}
    etc...
    et ainsi de suite jusqu'à parcourir toutes les solutions. J'ai bien penser à des méthodes de backtracking et d'exploration d'arbres, mais du coup je suis perdu dans mes recherches.

    C'est pourquoi je soumet la problématique aux idées.

    D'avance merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par akrogames Voir le message
    Bonjour à tous,

    J'ai pu voir que je n'étais pas le seul avec un problème de combinaison à répétition à résoudre. Mais aucune réponse ne m'a donné entière satisfaction. Ainsi je me permet de poster afin que l'on puisse en discuter.

    S'agissant d'un problème dans un métier très spécifique, je me permet de faire de la régression de langage en présentant le problème grâce à des sacs de billes et des billes.

    En effet, je souhaites lister toutes les combinaisons possibles me permettant de ranger toutes les billes dans les sacs.

    B = Une bille
    S = un sac de bille

    La contenance de S est de 0 à B[].size. Dans mon problème on a 3 sacs de billes et 5 billes à placer. Les sacs sont donc des ensembles pouvant contenir les billes. Le problème c'est déjà dans le calcul des solutions possible :
    int nbcombiposs = fact(n + k - 1) / (fact(k) * fact(n-1));
    Cela me donne 21 car on ne peut mettre qu'une bille dans un sac, du coup, cela ne répond pas au problème.

    Viens ensuite le problème avec des boucles itératives, mais là encore je sèche, je n'obtiens que les solutions de base...

    Voilà le résultats que je souhaiterais obtenir :
    S1:{B1,B2,B3,B4,B5},S2:{},S3:{}
    S1:{},S2:{B1,B2,B3,B4,B5},S3:{}
    S1:{},S2:{},S3:{B1,B2,B3,B4,B5}
    S1:{B1},S2:{B2,B3,B4,B5},S3:{}
    S1:{B2},S2:{B1,B3,B4,B5},S3:{}
    etc...
    et ainsi de suite jusqu'à parcourir toutes les solutions. J'ai bien penser à des méthodes de backtracking et d'exploration d'arbres, mais du coup je suis perdu dans mes recherches.

    C'est pourquoi je soumet la problématique aux idées.

    D'avance merci.
    Bonjour,

    pour le calcul du nombre de combinaisons possibles, je pense que c'est 3^5:
    On place chaque boule dans un ensemble, donc on a 3 possibilités pou chaque boule.

    Pour l'algorithme permettant de lister les combinaisons possibles je pense à quelque chose du genre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CombinaisonsPossibles(S[1..3], boule):
       si boule > 5:
           afficher S
       sinon:
          pour i allant de 1 à 3:
             ajouter  boule à S[i]
             CombinaisonsPossibles(S, boule + 1) 
             retirer boule à S[i]

Discussions similaires

  1. Combinaison avec répétition et ordre
    Par maxha dans le forum Général Java
    Réponses: 7
    Dernier message: 20/04/2012, 15h57
  2. Réponses: 0
    Dernier message: 18/08/2011, 11h21
  3. Algorithme de listage de combinaison avec répétition de caractère
    Par Gilles57-H-G dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/11/2010, 20h38
  4. Combinaisons sans répétition avec VBA (suite)
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/08/2007, 19h03
  5. Combinaisons sans répétition avec VBA
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/08/2007, 16h23

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