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 :

Problème (Permutation?) pour générer des combinaisons


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Par défaut Problème (Permutation?) pour générer des combinaisons
    Bonjour,
    J'ai un problème de génération de combinaison.

    A partir d'un liste de valeur d'un tableau à 2 colonnes.

    Type;Valeur
    A;1
    A;2
    A;3
    B;1
    B;2
    D;1
    D;2

    Donc des types différents (je ne sais pas combien) et pour chacun des types des valeurs distincts.


    Je cherche à créer toutes les combinaison possible entre ces valeurs.
    Sachant qu'une collection ne peut contenir qu'une seule fois un type données et doit les contenir tous.

    Donc par exmple:
    A1 B1 C1 D1
    A2 B1 C1 D1
    A1 B2 C1 D1
    A1 B1 C1 D2
    A2 B2 C1 D1
    ...

    Ce sont des collections non ordonnées, donc:
    A2 B1 C1 D1 = B1 A2 C1 D1

    Et si certains peuvent juste me donner le bon vocabulaire pour définir mon problème ce serait une aide précieuse.

    Merci à vous

    Matthieu

  2. #2
    Membre averti
    Inscrit en
    Février 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 19
    Par défaut
    bonjour,
    tu peux modeliser ton probleme comme un systeme de boites reperees par des lettres A,B... chaque boite contenant un certain nombre de boules reperees par des chiffres 1,2,3...
    Tu alignes donc tes boites par ordre alphabetique croissant puis tu sors de chaque boite la boule avec le plus petit numero. C'est ta premiere permutation.
    Ensuite tu sors de la boite la plus a droite la boule ayant le numero suivant qui te donnes une deuxieme permutation.
    Quand tu as epuise toutes les boules de cette derniere boite tu reviens a la premiere boule et tu sors de la boite qui se trouve a sa gauche la boule avec le numero suivant.
    En procedant de proche en proche tu devrais obtenir toutes les combinaisons qui sont en nombre egal au produit du nombre de boules dans chaque boite.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    fais donc une petite recherche avec les mots "génération de combinaison" le sujet a déjà été traité de maintes fois. Je crois même qu'il y a du code dans le rubrique contribuez.
    En général ce que tu veux faire se résume par une recherche exhaustive de toutes les possibilités et qui se traite par un appel récursif.
    Pour éviter les doublons comme tu montres dans ton exemple, il faut faire un décalage dans le démarrage des boucles en fonction de la profondeur de ton appel récursif.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par diendjao Voir le message
    Et si certains peuvent juste me donner le bon vocabulaire pour définir mon problème ce serait une aide précieuse.
    "Produit cartésien de plusieurs ensembles"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    Citation Envoyé par diendjao
    Type;Valeur
    A;1
    A;2
    A;3
    B;1
    B;2
    D;1
    D;2
    Et celà signifie-t-il ceci:
    A={1;2;3}
    B={1;2}
    D={1;2}

    Dans ce cas ce n'est ni une combinaison, ni une permutation.
    Tu chercherais effectivement à énumérer le produit cartésien A × B × D c'est-à-dire l'ensemble des triplets (a,b,d) ∊ A × B × D.
    C'est exactement à celà que sert une boucle for, à énumérer un ensemble.

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Soit E l'ensemble des types: A,B,C (nombre m)
    Soit F l'ensemble des valeurs: 1,2,3,4 (nombre n)
    Ce qui est donné en exemple c'est l'ensemble des parties à 4 éléments du produit cartésien ExF. Si c'est bien ça le nombre est donc C4,mxn
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 9
    Par défaut
    Bonjour à tous,
    Merci pour vos réponses.

    Cela signie que à partir de ça TABA

    A 1
    A 2
    A 3
    B 1
    C 1
    C 2
    C 3
    D 4

    ca donne ça: TABB
    A.1,B.1,C.1,D.4
    A.2,B.1,C.1,D.4
    A.3,B.1,C.1,D.4
    A.1,B.1,C.2,D.4
    A.2,B.1,C.2,D.4
    A.3,B.1,C.2,D.4
    A.1,B.1,C.3,D.4
    A.2,B.1,C.3,D.4
    A.3,B.1,C.3,D.4


    Je suis parvenu à le coder en récursif en supprimant les valeurs de départ après insertion.

    Merci.

    Matthieu

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par diendjao Voir le message
    Je suis parvenu à le coder en récursif en supprimant les valeurs de départ après insertion.
    ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    faut vraiment arrêter les questions de la forme:
    j'ai ce tableau de valeurs en entrée:
    A B B A; C C O O L; L O L

    je veux ce tableau en sortie:
    L O L; A B B A C; C O O L

    comment je fais ?
    Je suis parvenu à le coder en récursif en supprimant les valeurs de départ après insertion.
    tu parles comme Dr Spock

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/03/2011, 20h14
  2. [Toutes versions] Problème pour générer des combinaisons
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 17/11/2009, 19h40
  3. Réponses: 1
    Dernier message: 18/05/2006, 21h22
  4. [JFOR][RTF]Utilisation de jfor pour générer des RTF
    Par pistache42 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 28/04/2006, 09h23

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